Фото из коллекции автора
1. История
Пузырьковая память, или память на цилиндрических магнитных доменах является энергонезависимой памятью, разработанной в Bell Labs в 1967 году Эндрю Бобеком (Andrew Bobeck). Исследования показали, что маленькие цилиндрические магнитные домены образуются в монокристаллических тонких плёнках ферритов и гранатов, когда достаточно сильное магнитное поле направлено перпендикулярно поверхности плёнки. Изменяя магнитное поле, можно перемещать эти пузыри. Такие свойства делают магнитные пузырьки идеальным средством для построения последовательного хранилища бит, наподобие сдвигового регистра, в котором наличие или отсутствие пузырька в определённой позиции означает нулевое или единичное значение бита. Диаметр пузыря составляет десятые доли микрона, один чип может хранить тысячи бит данных. Так, например, весной 1977 года Texas Instruments впервые представила на рынке чип ёмкостью 92304 бита. Эта память является энергонезависимой, что делает её похожей на магнитную ленту или диск, но так как она является твердотельной и не содержит движущихся частей, она имеет большую надёжность, чем лента или диск, и не требует обслуживания, а также имеет гораздо меньшие размеры и вес, и может использоваться в портативных устройствах.
Первоначально изобретатель пузырьковой памяти, Эндрю Бобек, предложил «одномерный» вариант памяти, в виде нити, на которую намотана тонкая полоска ферромагнитного материала. Такая память называлась «твисторной», и даже выпускалась серийно, однако вскоре была вытеснена «двумерным» вариантом.
Вы можете ознакомиться с историей создания пузырьковой памяти в [1-3].
2. Принцип действия
Здесь я прошу меня простить, я не физик, поэтому изложение будет очень приблизительным.
Некоторые материалы (например, гадолиниево-галлиевый гранат), обладают свойством намагничиваться в только одном направлении, и если вдоль этой оси приложить постоянное магнитное поле, то намагниченные области сформируют нечто вроде пузырьков, как показано на рисунке ниже. Каждый пузырь имеет всего несколько микрон в диаметре.
Пусть мы имеем тонкую, порядка 0,001 дюйма, кристаллическую плёнку из такого материала, нанесённую на немагнитную, например, стеклянную, подложку.
Всё дело в волшебных пузырьках. Картинка слева — магнитное поле отсутствует, картинка справа — магнитное поле направлено перпендикулярно поверхности плёнки.
Если на поверхности плёнки из такого материала сформировать рисунок из магнитного материала, например, пермаллоя, железо-никелевого сплава, то пузырьки будут примагничиваться к элементам этого рисунка. Обычно используются рисунки в виде Т-образных или V-образных элементов.
Одиночный пузырь может быть сформирован магнитным полем 100-200 эрстед, которое приложено перпендикулярно магнитной плёнке и создаётся постоянным магнитом, а вращающееся магнитное поле, сформированное двумя катушками в направлениях XY, позволяет перемещать пузырьки-домены от одного магнитного «островка» к другому, как это показано на рисунке. После четырёхкратной смены направления магнитного поля домен переместится от одного островка к соседнему.
Всё это позволяет рассматривать ЦМД-устройство как сдвиговый регистр. Если мы будем формировать пузыри на одном конце регистра и детектировать их на другом, то мы можем пустить определённый паттерн пузырьков по кругу, и использовать систему как запоминающее устройство, считывая и записывая биты в определённые моменты времени.
Отсюда следуют достоинства и недостатки памяти на ЦМД: достоинством является энергонезависимость (пока приложено перпендикулярное поле, создаваемое постоянными магнитами, пузырьки никуда не исчезнут и не сдвинутся со своих позиций), а недостатком — большое время доступа, т.к. для доступа к произвольно взятому биту нужно прокрутить весь сдвиговый регистр до нужной позиции, и чем он длиннее, тем больше циклов для этого потребуется.
Паттерн магнитных элементов на магнитной плёнке ЦМД.
Создание магнитного домена называется по-английски «nucleation», и заключается в том, что к обмотке прикладывается ток в несколько сотен миллиампер на время около 100нс, и создаётся магнитное поле, перпендикулярное плёнке и противоположное полю постоянного магнита. При этом создаётся магнитный «пузырь» — цилиндрический магнитный домен в плёнке. Процесс, к сожалению, сильно зависит от температуры, возможно неудачное завершение операции записи, при котором пузырь не сформируется, или формирование нескольких пузырей.
Для чтения данных с плёнки используется несколько техник.
Один способ, неразрушающее чтение, заключается в детектировании слабого магнитного поля цилиндрического домена с помощью магниторезистивного сенсора.
Вторым способом является разрушающее чтение. Пузырь отводится на специальный трек генерации/детектирования, в котором пузырь уничтожается, путём намагничивания материала в прямом направлении. Если материал был намагничен в обратном направлении, то есть пузырь присутствовал, это вызовет больший ток в катушке, и это детектируется электронной схемой. После этого пузырь должен быть сгенерирован повторно на специальном треке записи.
Однако, если память будет организована в виде одного непрерывного массива, то у неё будет два больших недостатка. Во-первых, время доступа будет очень большим. Во-вторых, единственный дефект в цепочке приведёт к полной неработоспособности всего устройства. Поэтому делают память, организованную в виде одного главного трека, и множества подчинённых треков, как показано на рисунке.
Пузырьковая память с одним непрерывным треком
Пузырьковая память с главным/подчинёнными треками
Такая конфигурация памяти позволяет не только сильно уменьшить время доступа, но и позволяет выпускать устройства памяти, содержащие некоторое количество дефектных треков. Контроллер памяти должен их учитывать и обходить их при операциях чтения/записи.
На рисунке ниже показан разрез «чипа» пузырьковой памяти.
Также вы можете прочитать о принципе действия пузырьковой памяти в [4, 5].
3. Intel 7110
Intel 7110 — модуль пузырьковой памяти, MBM (magnetic-bubble memory) ёмкостью 1 Мб (1048576 бит). Именно он изображён на КДПВ. 1 мегабит — это ёмкость для хранения пользовательских данных, с учётом избыточных треков полная ёмкость составляет 1310720 бит. Устройство содержит 320 петлеобразных треков (loops) ёмкостью 4096 бит каждый, но для пользовательских данных используются только 256 из них, остальное — резерв для замены «битых» треков и для хранения избыточного кода коррекции ошибок. Устройство имеет архитектуру «главный трек-подчинённые треки» (major track-minor loop). Информация о активных треках содержится в отдельном загрузочном треке (bootstrap loop). На КДПВ вы можете видеть шестнадцатиричный код, напечатанный прямо на модуле. Это и есть карта «битых» треков, 80 шестнадцатиричных цифр представляют 320 треков данных, активные представлены единичным битом, неактивные — нулевым.
Вы можете ознакомиться с оригинальной документацией на модуль в [7].
Устройство имеет корпус с двухрядным расположением выводов и монтируется без пайки (в сокет).
Структура модуля показана на рисунке:
Массив памяти делится на две «полусекции» (half sections), каждая из которых делится на две «четвертинки» (quads), каждая четвертинка имеет 80 подчинённых треков. Модуль содержит пластину с магнитным материалом, расположенную внутри двух ортогональных обмоток, создающих вращающееся магнитное поле. Для этого на обмотки подаются сигналы тока треугольной формы, смещённые на 90 градусов относительно друг друга. Сборка из пластины и обмоток помещена между постоянными магнитами и помещена в магнитный экран, который замыкает магнитный поток, создаваемый постоянными магнитами и экранирует устройство от внешних магнитных полей. Пластина размещена под наклоном в 2,5 градуса, что создаёт небольшое поле смещения, направленное вдоль наклона. Это поле пренебрежимо мало по сравнению с полем катушек, и не мешает перемещению пузырьков при работе устройства, но смещает пузырьки в фиксированные позиции относительно пермаллоевых элементов, когда устройство выключено. Сильная перпендикулярная составляющая постоянных магнитов поддерживает существование пузырьковых магнитных доменов.
Модуль содержит следующие узлы:
1. Запоминающие треки. Непосредственно те треки из пермаллоевых элементов, которые удерживают и направляют пузырьки.
2. Генератор репликации. Служит для репликации пузырька, который постоянно присутствует в месте генерации.
3. Входной трек и узлы обмена. Сгенерированные пузырьки перемещаются вдоль входного трека. Пузырьки перемещаются в один из 80 подчинённых треков.
4. Выходной трек и узел репликации. Пузыри вычитываются из треков данных без их разрушения. Пузырь разделяется на две части, и одна из них направляется в выходной трек.
5. Детектор. Пузыри из выходного трека попадают в магниторезистивный детектор.
6. Загрузочный трек. Загрузочный трек содержит информацию об активных и неактивных треках данных.
Ниже мы рассмотрим эти узлы более подробно. Также вы можете ознакомится с описанием этих узлов в [6].
Генерация пузыря
Для генерации пузырька, в самом начале входного трека имеется проводник, изогнутый в виде крошечной петли. В него подаётся импульс тока, который создаёт в очень маленькой области магнитное поле сильнее, чем поле постоянных магнитов. Импульс создаёт в этом месте пузырёк, который остаётся постоянно, поддерживаемый постоянным магнитным полем, и циркулирует вдоль пермаллоевого элемента под действием вращающегося магнитного поля. Если нам нужно записать единицу в память, мы подаём короткий импульс в проводящую петлю, и в результате рождается два пузырька (на рисунке обозначены как Bubble split seed). Один из пузырьков устремляется вращающимся полем вдоль пермаллоевоего трека, второй остаётся на месте и быстро приобретает первоначальный размер. Затем он перемещается к одному из подчинённых треков, и меняется местами с пузырьком, который циркулирует в нём. Он, в свою очередь, достигает конца входного трека и исчезает.
Обмен пузырьками
Обмен пузырьками происходит, когда в соответствующий проводник подаётся импульс тока прямоугольной формы. При этом не происходит разделения пузырька на две части.
Чтение данных
Данные направляются на выходной трек путём их репликации, и продолжают циркулировать в своём треке после считывания. Таким образом, в данном устройстве реализован неразрушающий способ чтения. Для репликации, пузырь направляется под продолговатый элемент из пермаллоя, под которым он растягивается. Сверху также находится проводник в форме петли, если в петлю подать импульс тока, пузырь разделится на две части. Импульс тока состоит из короткого участка с большой силой тока для того, чтобы разделить пузырь на две части, и более длинного участка с меньшей силой тока, для того, чтобы направить пузырь на выходной трек.
В конце выходного трека находится детектор пузыря, магниторезистивный мост, изготовленный из пермаллоевых элементов, образующих цепь большой длины. Когда магнитный пузырь попадает под пермаллоевый элемент, его сопротивление изменяется, и на выходе моста появляется разность потенциалов в несколько милливольт. Форма пермаллоевых элементов подобрана так, чтобы пузырь двигался вдоль них, в конце он попадает на специальную «охранную» шину и исчезает.
Избыточность
Устройство содержит 320 треков, каждый по 4096 бит. Из них 272 активных, 48 запасных, неактивных.
Загрузочный трек (Boot Loop)
Устройство содержит 320 треков данных, из которых для хранения пользовательских данных предназначены 256, остальные могут быть неисправны или могут служить запасными для замены неисправных. Один дополнительный трек содержит информацию об использовании треков данных, по 12 бит на каждый трек. Когда на систему подаётся питание, она должна быть инициализирована. В процессе инициализации контроллер должен прочитать загрузочный трек, и записать информацию из него в специальный регистр чипа форматирования/датчика тока. Тогда контроллер будет использовать только активные треки, а неактивные будут игнорироваться, и в них не будет производиться запись.
Хранилище данных — структура
С точки зрения пользователя, данные хранятся в 2048 страницах по 512 бит каждая. 256 байт данных, 14 бит кода коррекции ошибок и 2 неиспользуемых бита сохраняются в каждой половине устройства.
Коррекция ошибок
Обнаружение и коррекция ошибок может производиться микросхемой датчика тока, которая содержит декодер 14-битного кода, исправляющего единичную ошибку длиной до 5 бит (burst error) в каждом блоке из 270 бит (включая сам код). Код дописывается в конец каждого 256-битного блока. Код коррекции может использоваться, или не использоваться, по желанию пользователя, проверка кода может быть включена или выключена в контроллере. Если код не используется, все 270 бит могут быть использованы для пользовательских данных.
Время доступа
Магнитное поле вращается с частотой 50 кГц. Среднее время доступа к первому биту первой страницы равно 41 мс, это половина времени, требуемого для совершения полного цикла по треку плюс время прохождения выходного трека.
320 активных и запасных треков разделены на четыре части по 80 треков в каждой. Такая организация сокращает время доступа. Четвертинки адресуются попарно: каждая пара четвертинок содержит чётные и нечётные биты слова соответственно. Устройство содержит четыре входных трека с четырьмя начальными пузырьками, и четыре выходных трека. Выходные треки используют два детектора, они организованы таким образом, что в один детектор никогда не попадает два пузырька с двух треков одновременно. Таким образом, четыре потока пузырьков мультиплексируются и преобразуются в два потока бит и сохраняются в регистрах чипа датчика тока. Там содержимое регистров снова мультиплексируется и по последовательному интерфейсу попадает в контроллер.
Во второй части статьи мы более подробно рассмотрим схемотехнику контроллера пузырьковой памяти.
4. Список литературы
Автор нашёл в самых тёмных уголках сети и сохранил для вас в массу полезной технической информации по памяти на ЦМД, её истории и прочим связанным аспектам:
1. https://old.computerra.ru/vision/621983/ — Две памяти инженера Бобека
2. https://old.computerra.ru/vision/622225/ — Две памяти инженера Бобека (часть 2)
3. http://www.wikiwand.com/en/Bubble_memory — Bubble memory
4. https://cloud.mail.ru/public/3qNi/33LMQg8Fn Adaptation of Magnetic Bubble Memory in a Standard Microcomputer Environment
5. https://cloud.mail.ru/public/4YgN/ujdGWtAXf — Texas Instruments TIB 0203 Bubble Memory
6. https://cloud.mail.ru/public/4PRV/5qC4vyjLa — Memory Components Handbook. Intel 1983.
7. https://cloud.mail.ru/public/4Mjv/41Xrp4Rii 7110 1-Megabit Bubble Memory