Pamięć ferrytowa, pamięć rdzeniowa (ang. core memory) – magnetyczna pamięć nieulotna o dostępie swobodnym. W latach 1955–1975, podstawowa pamięć o dostępie swobodnym, często utożsamiana z pamięcią operacyjną.
Przechowuje dane w postaci kierunku namagnesowania rdzeni ferrytowych o prostokątnej pętli histerezy[1], a do odczytu wykorzystuje zależność napięcia wyjściowego transformatora impulsowego od kierunku wcześniejszego namagnesowania rdzenia z twardego ferromagnetyka.
Prawie wyłącznie oparta jest na rdzeniach toroidalnych. Przy próbie zastąpienia pierścieni otworami w płytce ferrytowej nie udało się uzyskać wymaganej powtarzalności właściwości magnetycznych otworów. Zastąpienie pierścieni rdzeniami wielootworowymi okazało się zbyt drogie i trudne technologicznie. Jedynie pamięci na dwuotworowych biaksach zdobyły niewielką popularność.
Dalszy opis dotyczy pamięci na pojedynczych rdzeniach toroidalnych o ile nie zaznaczono inaczej.
Pamięć ta przechowywała dane przy wyłączonym zasilaniu. Dane były kasowane przy każdym odczycie i – w razie potrzeby – ewentualnie niezwłocznie ponownie zapisywane, jeśli zachodziła potrzeba przechowania ich w dalszych cyklach pracy. Nieniszczący odczyt zapewniają pamięci ferrytowe na biaksach i transfluksorach o odmiennej zasadzie odczytu.
Pamięć rdzeniowa, dała początek angielskiej nazwie zrzutu pamięci (ang. core dump) w systemach typu Unix[2].
Budowa komórki
[edytuj | edytuj kod]Komórka pamięci ferrytowej zdolna przechować 1 bit składa się z jednego, rzadziej dwóch rdzeni o średnicy ok. 1 mm (od 0,2 do 2 mm), przez które zależnie od organizacji przewleczonych jest od 2 do 4 przewodów – maksymalnie: odczytu (S), zakazu (Z) i dwa adresowe (X i Y). Komórki pamięci połączone są w prostokątne płaty.
Zasada działania
[edytuj | edytuj kod]W komórce na jednym rdzeniu połączono dwie funkcje znane z magnetycznych elementów logicznych:
- opóźniaka - opóźniającego impuls zapisujący do czasu impulsu odczytującego,
- selektora koincydencyjnego - ułatwiającego wybór rdzenia.
Każda komórka jest miniaturowym, impulsowym, nasycanym transformatorem dwustanowym z magnesem jako rdzeniem. Rdzeń posiada dwa stabilne stany namagnesowania Br i -Br (dodatni i ujemny), oznaczające 1 i 0.
Stan rdzenia zmieniany jest impulsami w przewodach sterujących (uzwojeniach pierwotnych):
- ujemny impuls odczytujący zeruje komórkę,
- dodatni impuls zapisujący 1.
Prąd sterujący I wytwarza natężenie pola magnetycznego proporcjonalne do swojej wartości, a napięcie wyjściowe Ul jest proporcjonalne do szybkości zmian indukcji magnetycznej.
Indukcja B związana jest z natężeniem pola H pętlą histerezy i zależy od początkowego namagnesowania rdzenia.
Przy odczycie, komórka zawierająca 1 jest zerowana. Przemagnesowaniu rdzenia zawierającego 1 towarzyszy duża zmiana indukcji magnetycznej od Br do -Br, indukująca napięcie w przewodzie sygnałowym. Przy braku przemagnesowania rdzenia zawierającego 0 indukowane jest jedynie niewielkie zakłócenie. W szybkich pamięciach sygnał zakłócający posiada podobną wartość jak użyteczny od przemagnesowanego rdzenia ale towarzyszy przedniemu zboczu prądu odczytu, a sygnał od przemagnesowania jest opóźniony.
Zapis następuje po wyzerowaniu w czasie odczytu. Polega na namagnesowaniu rdzeni odpowiadających 1 w przeciwnym kierunku do namagnesowania w czasie odczytu.
W podstawowej organizacji cykl pracy zawsze składa się z odczytu i następującego bezpośrednio po nim zapisu. W pamięciach z dzielonym cyklem po odczycie pamięć może czekać z zapisem na nową wartość z procesora czytając i zapisując w międzyczasie inne komórki.
Do wyboru rdzenia wykorzystuje się koincydencje dzieląc prąd sterujący na kilka przewodów. Prądy w przewodach dobiera się tak aby przemagnesowaniu uległy tylko wybrane rdzenie. Pozwala to sterować dużą ilością rdzeni za pomocą małej ilości przewodów i elementów elektronicznych.
Występowała w wersjach
[edytuj | edytuj kod]- 3D – koincydencyjnej (duża pojemność, prosta elektronika, skomplikowane płaty, wolna)
- 2D – liniowej (mała pojemność, proste płaty, skomplikowana elektronika, szybka)
- 2,5D – koincydencyjno-liniowej (rozwinięcie pamięci 2D o długim słowie, zawierające dodatkowe elementy selekcji bitów w słowie).
Pamięć koincydencyjna (3D)
[edytuj | edytuj kod]Rdzenie komórek 3D o średnicy 1 mm.
Przez każdy przebiegają cztery przewody:
- X pionowy i Y poziomy przewód adresujący
- S skośny przewód sygnałowy (odczytu)
- Z poziomy, ciemny przewód zakazu.
Nazwa 3D pochodzi od przestrzennego rozmieszczenia rdzeni ferrytowych.
Pamięć składa się z bloku ułożonych jeden na drugim płatów pamięci. Każdy płat odpowiada jednemu bitowi słowa maszynowego.
Płat składa się z siatki prostopadłych przewodów adresowych przewleczonych przez znajdujące się na ich skrzyżowaniach rdzenie. Odpowiadające sobie przewody adresowe wszystkich płatów są połączone szeregowo. Dodatkowo każdy płat posiada dwa swoje indywidualne przewody przewleczone przez wszystkie rdzenie danego płatu – poziomo przebiegający przewód zakazu i skośnie przewód odczytu.
Przewody są tak wszyte aby zakłócenia indukowane między przewodami o różnych funkcjach znosiły się. Stąd szczególny przebieg przewodu odczytu, a w pamięciach trójprzewodowych krzyżowanie jego w połowie długości przewodów adresowych.
W dużych płatach ich wielkość (pojemność) ogranicza długość przewodów odczytu i zakazu dlatego płat jest dzielony na 4 części z oddzielnymi przewodami odczytu i zakazu.
Charakterystyczną cechą pamięci koincydencyjnej jest wzbudzanie wybranego rdzenia przez jednoczesne wzbudzenie dwoma prostopadłymi przewodami adresowymi X i Y. Prąd w nich płynący jest tak dobrany, że pojedynczy przewód nie jest w stanie przemagnesować rdzenia (przemagnesowanie rdzenia następuje tylko na przecięciu wybranych przewodów adresowych).
Odczyt Zapis __________ Prąd w linii X i Y ____/ \_____________ ________ \__________/ ___________ Prąd w linii zakazu _____________________________/ \________ ___ Sygnał wyjściowy __________/ \___________________________________ Prąd zakazu dla wartości 0, dla 1 nie występuje. Sygnał wyjściowy dla wartości 1, dla 0 nie występuje.
W czasie odczytu zeruje się wszystkie bity wybranego słowa. Rdzenie bitów zawierające 1 zostają przemagnesowane. Przemagnesowanie wzbudza napięcie w przewodzie odczytu sygnalizując 1.
W czasie zapisu do przewodów adresowych doprowadza się prąd o przeciwnym kierunku zapisując do komórek 1. Na płatach wymagających pozostawienia 0, zapisowi 1 zapobiega podanie na przewód zakazu prądu kompensującego prąd w przewodzie adresowym.
Trzyprzewodowa pamięć koincydencyjna (3D3W)
[edytuj | edytuj kod]Przewód odczytu jest wykorzystywany tylko w czasie odczytu, a zakazu tylko w czasie zapisu. W nowszych pamięciach 3D zrezygnowano z najbardziej kłopotliwego przy szyciu przewodu odczytu. Do odczytu wykorzystuje się przewód zakazu rozdzielając ich funkcje w układach sterowania. Usunięcie skośnie przebiegającego przewodu odczytu pozwoliło ustawić wszystkie rdzenie równolegle i zbliżyć je do siebie zwiększając upakowanie i pojemność. W opisach wspólny przewód oznaczano “zakazu/odczytu” lub “S/Z” (sygnałowy/zakazu). Czasem w opisach w miejsce przewód używa się nazwy linia. Linia odnosi się do funkcji, a przewód do realizacji fizycznej. Mamy dwie linie: zakazu i odczytu będące jednym przewodem zakazu/odczytu.
Pamięć hybrydowa (płaska, planarna) (H)
[edytuj | edytuj kod]Rozwinięcie pamięci przestrzennej 3D lub 3D3W na płaszczyznę, przy zachowaniu organizacji logicznej.
W pamięci 3D przewody adresowe składały się z krótkich odcinków na kolejnych płatach lutowanych w całość. Bardzo duża liczba połączeń lutowanych była kłopotliwa w wykonaniu i zawodna. Dodatkowo liczne przewody adresowe łączyły blok pamięci z elektroniką.
Wad tych uniknięto układając płaty poszczególnych bitów, przeważnie dziewięciu, na płaszczyźnie (płycie). Pamięć wykonywano jako jeden duży płat z wydzielonymi obszarami poszczególnych bitów o własnych przewodach zakazu/odczytu. Przewody adresowe prowadzono zygzakiem kolejno przez obszary wszystkich bitów.
Płat pamięci był montowany bezpośrednio do płytki drukowanej z elementami sterującymi.
Pamięci scalone
[edytuj | edytuj kod]Ze względu na pracochłonność szycia podejmowano nieudane próby scalenia pamięci ferrytowych:
- Płytka ferrytowa z napylonymi przewodami i dołączonymi półprzewodnikowymi układami sterującymi[3].
- Wielootworowa płytka ferrytowa z przewodami wykonanymi w postaci wielowarstwowego obwodu drukowanego. Początkowo przewody były szyte ręcznie.
- Listew zawierających kolumnę biaksów i szytych tradycyjnie.
Scalenie powiodło się dopiero po zastąpieniu rdzeni ferrytowych cienkimi warstwami anizotropowego permaloju w pamięciach cienkowarstwowych i drutowych.
Historia
[edytuj | edytuj kod]Pierwszy raz zastosowana została w komputerze Whirlwind w 1953. Była podstawową pamięcią o dostępie swobodnym w latach 1955-1975. Częściowo wyparta przez pamięci na cienkich warstwach anizotropowego permaloju a ostatecznie przez pamięci półprzewodnikowe.
Pamięć ta ma dzisiaj znaczenie historyczne.
Była produkowana m.in. przez zakłady Elwro we Wrocławiu do lat 80. XX w. i stosowana np. w komputerach ZAM-21, ZAM-41, serii Odra, a także w maszynach R-32 (z rodziny RIAD).
Obecnie
[edytuj | edytuj kod]Chociaż przestarzała to z racji zainteresowania istnieją zestawy do Arduino, które pozwalają na wykorzystanie pamięci ferrytowych we współczesnych projektach.[4]
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ "Encyklopedia techniki teleelektryka" str. 446 Wydawnictwa Naukowo-Techniczne Warszawa 1967
- ↑ Brian W. Kernighan: Jak UNIX tworzył historię. Gliwice: Helion, 2021, s. 76–77. ISBN 978-83-283-7163-7.
- ↑ "Młody Technik" nr 1/1969 r
- ↑ Core Memory Shield for Arduino from Jussi Kilpelainen on Tindie [online], www.tindie.com [dostęp 2019-03-07] (ang.).