
Сегодня мы поговорим о таком интересном классе электронных компонентов, который носит название «мемристоры» и позволяет даже строить на их основе нейросети.
Их привлекательность заключается в том, что их вполне можно делать даже самостоятельно, из подручных компонентов.
В последнее время мы привыкли, что под понятием нейросетей подразумеваются определённые программные структуры. Однако мемристоры позволяют строить нейросети на физической основе! О_о
Аппаратные физические нейросети… Как вам такое? :-) Весьма близко к тому, что мы видим в природе, кстати говоря...
Небольшой спойлер: ниже мы остановимся больше на физической стороне явления и как (в теории) можно было бы создавать на его основе устройства. Тема весьма обширная и рассмотрение ещё и практической работы с созданной нейросетью/ячейкой памяти выйдет очень сильно далеко за пределы статьи (возможно, в будущем вернёмся и к этому аспекту). В конце статьи будут ключевые слова, по которым можно поискать в интернете дополнительную информацию по работе с такими нейросетями/ячейками памяти. Итак...
Суть явления
Это довольно необычные электронные компоненты, которые могут менять своё сопротивление, в зависимости от того, какой ток через них проходил ранее.
В отличие от других широко использующихся и известных электронных компонентов, таких, как резисторы, конденсаторы и др., мемристоры не были широко известны до 2008 года*, до официального подтверждения учёными из компании Hewlett-Packard, которые продемонстрировали наноструктуру на основе оксида титана, обладающую гистерезисом** вольт-амперной (ВАХ) характеристики.
*Идея мемристора была известна ещё в 1971 году, когда она была предложена Леоном Чуа, однако на тот момент технологии не позволяли ещё создать компактный и управляемый мемристор для коммерческого применения.
**Гистерезис вольт-амперной характеристики подразумевает явление, когда сопротивление элемента зависит не только от текущего напряжения, но и от того, какой ток проходил через него ранее.
На практике это выглядит следующим образом:
- Если плавно увеличивать напряжение на мемристоре, то его сопротивление будет снижаться, а ток через него будет расти.
- Если затем начать уменьшать напряжение, то ток не повторит предыдущую кривую, так как сопротивление останется низким, ниже, чем было при подаче тока в самом начале.
Это похоже на аналогию из жизни, где для первого открывания двери нужно её сильно толкнуть, но в то же время, для открытия её во второй и последующие разы потребуется меньше усилий, так как петли разработаются и позволят открывать дверь легче.
Подобный эффект памяти позволяет мемристорам хранить информацию, где высокое или низкое сопротивление можно рассматривать как аналогию 0 или 1*.
*Но не нужно воспринимать сказанное слишком буквально — если сказать в общем, то мемристоры — это аналоговые элементы и хранят скорее не 0 или 1 — а пути протекания тока, сложившиеся из-за установившихся сопротивлений — «протоптанные тропинки», если можно так сказать, так как ток ищет путь с наименьшим сопротивлением для своего протекания.
Также этот эффект позволяет имитировать работу синапсов в мозге (контакт между рефлекторной клеткой и нейроном или между несколькими нейронами), где чем чаще используется связь, тем она сильнее.
Таким образом можно сказать, что гистерезис — основная отличительная черта мемристора, отличающая его от обычного резистора.
Подобное поведение наблюдается в материалах, где под воздействием электрического поля происходят обратимые изменения структуры или распределение зарядов.
Среди наиболее известных механизмов, за счёт которых наблюдается это явление, можно назвать:
- Миграция ионов кислорода в оксидах металлов, например, таких как
.
- Фазовые переходы, например, между аморфным и кристаллическим состояниями в халькогенидных стёклах.
- Реконфигурация точечных эффектов (вакансий*, междуузловых атомов*).
*Здесь подразумевается, что в оксидах металлов, атомы иногда расположены не идеально — присутствуют «вакансии», то есть «дырки» в кристаллической решётке, где не хватает атома; также наблюдаются и «межузловые» атомы — то есть, лишние атомы «втиснуты» между узлами решётки.
Здесь и далее мы будем рассматривать в основном мемристоры, представляющие собой оксидные плёнки на металлах.
Рассмотрим последний механизм подробнее (так как он наиболее близок к тому, что мы будем рассматривать ниже).
С мемристорами это связано следующим образом: когда мы подаём напряжение, ионы металла, перемещаются, заполняя вакансии или выталкивая атомы в межузловое пространство.
В свою очередь, это меняет локальную проводимость — появляется «проводящая нить» или, наоборот, появляется разрыв.
После снятия напряжения дефекты частично остаются на своих местах — именно таким образом и возникает «память о прошлом».
Например, в случае ржавчины (
В тех местах, где ионов скапливается больше — образуются проводящие нити.
После отключения напряжения, часть нитей сохраняется — это и есть «память» сопротивления.
В свою очередь, в медных оксидах (
- В отличие от ржавых гвоздей, медный оксид более тонкий и однородный — так как образуется с помощью нагрева или электролиза; в ржавчине же — он рыхлый и нестабильный.
- Медные оксидированные детали имеют более чёткие пороги переключения, так как ионы меди движутся более предсказуемо, в то время как в оксиде железа — более хаотично, из-за примесей.
- Медь гораздо легче восстанавливается, так как проводящие нити меди формируются при гораздо меньших напряжениях (1-3 В против 5-10 В для железа).
- Для переключения медных мемристоров требуется гораздо меньше циклов*, по сравнению с железными: в среднем 10 циклов, в то время как железным может потребоваться 50-100 циклов.
*Выше мы говорили о том, что мемристоры, по сути, имитируют работу синапсов мозга — требуется определённое количество импульсов напряжения (одного чаще всего недостаточно), чтобы сформировать устойчивую связь: при первом включении, ток создаёт случайные проводящие нити, однако они хрупкие.
Последующие циклы можно назвать «тренировкой» — проводящие нити становятся толще и стабильнее, как тропинка, которая была утоптана множеством путников.
Процесс можно ускорить, если, в случае меди, нагреть её до 150°С, для увеличения пластичности оксида — тогда может хватить и 3-5 циклов; в свою очередь, для железа, хорошо поможет добавка электролита (соль и вода), чтобы усилить упорядоченное движение ионов.
Выше мы писали всё время о записи, а как же стирать записанное?
Очень просто: нужно всего лишь подать напряжение обратной полярности — при этом в рассмотренных выше оксидах меди или железа произойдёт разрушение проводящих нитей, так как ионы металлов возвратятся на своё место.
Однако так же, как и при записи, может потребоваться несколько циклов для надёжного стирания.
Кроме того, нужно иметь в виду, что требуется превысить пороговое напряжение (так как разрушение проводящих нитей требует больше усилий) — например, если мы записывали напряжение (для меди) в +1 В, то, для надёжного стирания может потребоваться использовать -5 В (конкретные напряжения подбираются экспериментально и зависят от толщины оксидной плёнки и площади контакта).
Единичный мемристор
Одним из самых простых способов наблюдения этого эффекта является использование обычных ржавых гвоздей или стальной проволоки, покрытых оксидом железа.
В качестве альтернативного варианта можно использовать медную проволоку, покрытую
Кстати, запомните этот вариант с медной проволокой — мы к нему ещё вернёмся! ;-)
Далее необходимо сформировать активный слой, то есть контакт между двумя электродами, через оксидный слой, что можно осуществить следующим образом, для железа и меди, соответственно:
- Ржавый гвоздь погружается в электролит (слабый раствор поваренной соли), после чего в него же погружается и второй электрод — из нержавеющей стали или графита.
- Две медные проволоки с окисленными концами слегка соприкасаются друг с другом или соединяются через влажную среду.
Далее при подаче напряжения питания (0-5 В) наблюдается гистерезис вольт-амперной характеристики, о котором мы говорили выше.
Наблюдать эффект можно с помощью амперметра и осциллографа или снятием показателей с АЦП Ардуино/esp32.
Вот и всё, у нас, по сути, готов единичный элемент компьютерной памяти — несмотря на то, что он, казалось бы, из совсем неподходящего материала — ржавого гвоздя или медной проволоки!
В простейшем случае можно обойтись даже без электролита между контактами, однако в этом случае возникнут затруднения:
- Нестабильный контакт.
- Менее выраженный гистерезис.
- Требуется придавливание проволок друг другу (для улучшения контакта).
В общем случае можно сказать, что с электролитом будут более резкие переключения — т. е. сопротивление будет изменяться в 10-100 раз, а пороги напряжения для срабатывания — стабильнее.
В противовес ему, если не использовать электролит, то эффект потребует больше циклов для тренировки и сопротивления будут изменяться менее выражено.
Массивы мемристоров
Одиночный мемристор — это, конечно, хорошо, однако массив мемристоров в корне меняет дело и даёт новые интересные возможности!
На создание таких массивов учёные были вдохновлены технологиями производства печатных плат, и существуют экспериментальные технологии, позволяющие создавать такие массивы аналогично печатным:

Одна из таких технологий (иллюстрация конечного результата которой приведена выше), включает в себя следующие шаги:
- Берётся двухслойный фольгированный текстолит, на одной стороне которого фоторезистом или даже лаком/спиртовым маркером наносятся квадратами изолирующие точки (например, с расстоянием между центрами точек в 5х5 мм).
- На обратной стороне текстолита, наносятся защищающие полоски, на те места, где будут будущие токопроводящие шины.
- Текстолит травится в хлорном железе, таким образом, что после травления, одна сторона его становится покрытой токопроводящими медными точками, а вторая сторона покрывается медными полосками, связывающими точки между собой, в виде полосок.
- В центрах точек сверлятся сквозные отверстия, после чего делается металлизация этих отверстий — то есть, точки на лицевой стороне и полоски на обратной стороне становятся связанными друг с другом.
- Далее, текстолит укладывается на массивную алюминиевую пластину, выступающую в качестве теплоотвода таким образом, чтобы этой пластины касалась нижняя часть текстолита, которая покрыта токопроводящими полосками из протравленной фольги.
- Текстолит нагревается с лицевой стороны (где медные точки) до 180-200°С и выдерживается при такой температуре порядка 1-2 часов, чтобы вызвать покрытие медных точек слоем оксида — при этом обратная сторона текстолита, покрытая дорожками — не оксидируется, так как в этот момент тепло от неё эффективно отводится с помощью массивной алюминиевой пластины, на которой текстолит лежит.
- После остывания, на ту сторону, где медные точки — перпендикулярно к медным полоскам на обратной стороне — наносятся полоски из графитовой краски (известен способ нанесения с помощью распыления аэрографом), или наклеить алюминиевые полоски из фольги — на токопроводящий клей; можно даже просто прочертить перпендикулярные полоски карандашом.
В местах пересечения верхних полосок (алюминий/карандаш/графитовая краска) с медными точками, покрытыми оксидом — образуются мемристоры.
Всё, массив мемристоров готов! Это не единственно возможная технология, существует и ряд других.
Теперь остаётся только подавать напряжение на конкретный мемристор, включая соответствующую «строку» и «столбец» — чтобы записать/стереть/прочитать.
Те, кто хоть немного сталкивался с электроникой, сразу увидят ключевую проблему всей этой затеи: коммутация большого количества выводов такого массива.
Таким образом, основной проблемой будет являться не столько физическое создание самого массива, сколько управление выводами этого массива (их банально слишком много) — причём проблема будет критически расти, с ростом количества элементов массива.
В электронике вопрос коммутации большого количества выводов решается использованием разнообразных мультиплексоров/демультиплексоров, сдвиговых регистров, FPGA-матриц.
Однако, зададимся странным вопросом: а может ли этот массив коммутировать сам себя, не требуя для этого внешних чипов и устройств?
Тем более, что не сказать, чтобы они были слишком дешёвыми, особенно для больших массивов (а нам — чем больше, тем лучше: будет «умнее»). Да и паять надо будет много (а не хочется)...
Как ни странно, такой способ есть, и он довольно прост: встроенная самоорганизущаяся структура — на принципе домино (волновая адресация).
Проблема только будет заключаться в том, что без чёткой адресации мы не сможем запрашивать конкретные данные — «дай данные#1», «дай данные#2» — такая структура может работать только с ассоциативной памятью, например, когда мы сможем ей «показать» — т. е. подать на массив последовательность аналоговых сигналов (уровней напряжения), символизирующих букву А, всего по 2 проводам, он её запомнит и будет узнавать потом среди других (более подробно об этом написано почти в конце статьи).
Делается это следующим образом:
Поверх каждой медной точки, покрытой оксидом меди — добавляется капелька из полупроводника — оксида цинка (
Если бы нанести оксид цинка прямо на медь, и он был бы перемычкой между медью и графитом — образовался бы классический барьер Шоттки, который работал бы как диод, пропуская ток только в одном направлении.
В нашем же случае образуется гетеропереход (полупроводник-полупроводник), так как оксид цинка наносится на оксид меди, и этот переход будет несколько хуже классического варианта с прямым нанесением на медь, но тем не менее, всё равно будет работать как диод, только несколько менее эффективно и для переключения потребуется чуть большее напряжение и обратные утечки через место контакта (оксид-оксид) возрастут.
Изменяется и расположение графитовых дорожек: в случае с полной адресацией они были нанесены прямо поверх текстолита, сейчас же прямо поверх текстолита, с той стороны, где точки, — наносится тонкая плёнка, с прорезями в тех местах, где точки.
В свою очередь, графитовые дорожки наносятся прямо поверх плёнки.
Такая конструкция образует конденсатор, а графитовые дорожки выступают в качестве резисторов; всё это вместе представляет собой «RC- контур», назначение которого заключается в замедлении протекания тока, чтобы ток тёк не сразу по всем ячейкам, а по цепочке, по принципу домино, то есть ток течёт не хаотично, и каждая ячейка активируется по очереди; таким образом разная скорость течения тока по разным путям, например, позволяет отличать букву А от буквы Б.
Далее, в углу массива (ячейка [0,0]) подаётся инициирующий импульс, и активированные мемристоры последовательно переключают соседей по цепной реакции, вследствие чего волна распространяется до края массива за примерно 1 мс (при размере массива в 1000х1000 мемристоров).
Этот массив можно применить в качестве ассоциативной памяти, например, массив 1000х1000 способен хранить до 100 образов, например, рукописных цифр 28х28 пикселей (правда, теоретически — если бы у нас была возможность доступа ко всем контактам — но у нас её нет, т. к. мы строим самоорганизующуюся структуру и пытаемся избавиться от необходимости FPGA и прочих коммутаторов — поэтому она сможет «помнить» только 1 вариант данных).
Обучение производится импульсами по 1-3 В: например, мы хотели бы записать букву «Б»: даём ему импульсы 3В-1В-2В (просто условность, для понимания сути) — в результате чего ток прокладывает определённые «узоры» из соответствующим образом активированных мемристоров.
Далее, если мы ему подадим тот же самый «токовый рисунок» — то в ответ получим сильные сигналы, символизирующие то, что массив узнал образ. Если же мы его попробуем обмануть и подадим ему условные сигналы буквы «А» — то в ответ получим слабые сигналы: массив не узнал.
Стирание такого массива также будет отличаться от стандартного массива, где это могло бы быть осуществлено просто сменой полярности — в настоящем случае один из самых применимых методов — это разрядка через нагрузку: подать напряжение на все строки и столбцы (через резистор 10-100 кОм, чтобы не было короткого замыкания), в результате чего ток потечёт через этот резистор, постепенно разряжая ячейки.
Диоды (переход: капелька-оксид меди(
)) останутся закрытыми, но паразитные утечки через них постепенно сбросят состояние.
Прочитав всё это, вы наверняка скажете: это всё, конечно, интересно, но всё равно как-то сложно, надо платы травить, чего-то там сверлить...
А что, если я скажу вам, что всё это можно сделать многократно проще — для этого всего лишь потребуется:
- Медная проволока и коммутатор — сдвиговый регистр/FPGA (подключённые к каждому столбцу/строке), резисторы на 100 кОм на каждый столбец или строку (на выбор — чтобы не было короткого замыкания), Arduino — если строить вариант с адресацией.
- Если строить вариант без адресации — то всё то же самое, что и выше, только не нужны сдвиговые регистры или FPGA, резистор на 100 кОм ставим один, Arduino и массив мемристоров связаны двумя проводами: земля и [0,0] ячейка.

Выше мы уже узнали о том, что покрытые оксидом медные проволоки, коснувшиеся друг друга — в месте контакта образуют мемристор (для стабильности можно использовать электролит, в качестве которого взять слабый раствор поваренной соли, которым смочить место контакта).
Таким образом, вы уже наверняка поняли: берётся ряд медных проволочек без изоляции, обжигается на огне, до появления чёрного налёта на поверхности, после чего укладывается друг на друга перекрёстно, в виде решётки.
Для улучшения контакта, места пересечения проволок можно смочить электролитом (слабый раствор поваренной соли).
Далее всё это плотно придавливается каким-либо грузом сверху, чтобы улучшить контакт.
Вот и всё, ваш массив мемристоров готов! Но, это вариант с адресацией.
Если строить вариант без адресации — придётся вместо второго слоя проволок, уложенных под углом 90°, использовать электрическую плёнку, капельку оксида цинка на каждое пересечение и массив вторых электродов из графитовой краски.
Тем не менее, очевидно, что этот вариант будет многократно проще, чем травить платы :-)
Кстати, любопытный момент — вот мы говорим о варианте без адресации, и внимательный читатель может подумать (вполне обоснованно!) что массив хранит значение сопротивленияR
— которое было получено во время последнего импульса, так как у нас он связан с Ардуино всего 2 проводами (земля и [0,0] ячейка). И как тогда быть — мы же перезаписываем старые данные последними как бы? Всё верно! То есть, например, чтобы записать букву А (пример условный, все цифры далее — тоже) — мы заранее кодируем в памяти Ардуино букву А как уникальную последовательность сопротивлений, где соседние значения не повторяются. Например: 100 Ом → 50 Ом → 10 Ом. В то время как букву Б кодируем как 200 Ом → 80 Ом → 5 Ом.
И при чтении мы «знаем» — что раз сейчас текущее сопротивление 5 Ом — то, с вероятностью почти в 100% — это буква Б.
Из этого проистекает ещё одно следствие — массив для такого использования переусложнён!
Для такого последовательного хранения данных годится вполне и единичный мемристор!
Таким образом — массив мемристоров интересен только в варианте с адресацией и коммутацией выводов на базе сдвиговых регистров/FPGA.
Для чего это можно применять?
Известны применения, когда массив 4х4 элемента распознавал буквы или 5х5 — мог распознать наклон линии, а массив 100х100 — рукописные буквы (все эти варианты — когда есть доступ ко всем выводам, т. е. применяется FPGA-коммутация или коммутация на сдвиговых регистрах); также возможно создание аналогового компьютера и применения не ограничиваются этими — работы в этом направлении постоянно идут.
Напоследок можно сказать, что структуры из мемристоров позволяют реализовать «бессерверное» обучение — нет никакого CPU, а вся логика возникает из физики материалов.
Кроме того, подобные структуры отличаются и энергоэффективностью: ~10 мкВт/синапс (в 100 000 раз меньше, чем у GPU) и отличаются малой плотностью элементов, по сравнению с кремниевыми чипами (по крайней мере, на данный момент :-) ).
Тема эта весьма объёмная и не получится осветить её в рамках одной статьи, но, в любом случае, надеюсь, было интересно.
Желающие более подробно ознакомиться с использованием в практических задачах подобных нейросетей/ячеек памяти могут поискать в интернете дополнительную информацию по следующим ключевым словам и фразам:
- Handmade Copper Oxide Memristor Crossbars.
- Bioinspired Memristive Crossbar Arrays.
- Crossbar Arrays of Self-Assembled Memristive Nanowires for Associative Memory.
- Flexible Memristor Crossbar Arrays with Embedded Copper Nanowires for Wearable Electronics.
- Self-assembled nanowire memristor crossbars for neuromorphic computing.
© 2025 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT 💻
