Обновить

Оперативная память: исчерпывающие руководство. Часть 1 – Физическое устройство RAM от атома кремния до реальных чипов

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров31K
Всего голосов 99: ↑99 и ↓0+114
Комментарии41

Комментарии 41

офигенно!

спасибо за ваш труд, очень доходчиво и простыми словами

Статья не полная, не рассмотрены квантовые эффекты проистекающие в полупроводниках, влияние температур и космического излучения на стабильность ячейки. Так же не вижу статистическую оценку вероятности отказа, не рассмотрены методы защиты от них. Прошу доработать. /s

PS: Почемы Вы под термином RAM понимаете динамическую память ? Обычно, в технической литературе, под RAM понимается классическая 6T ячейка статической памяти. То, что Вы описываете (то, что продается в магазине) это SDRAM.

Про название RAM вначале была оговорка.

А что касательно квантовых эффектов (а уж тем более космического излучения), думаю, это было бы слишком для такой статьи на широкую аудиторию

Спасибо за комментарий!

То была шутка юмора. Спасибо за статью.

влияние температур и космического излучения на стабильность ячейки

Эта шутка про стабильность ячейки памяти при попадании космического луча — даже и не шутка 🙃

Помните от куда это несется? Если не ошибаюсь, так в Швейцарии похоронили электронное голосование.

Видете ли, они посчитали это не уместным, что какие-то лучи могут исказить один голос.

Не ну а чо…. Все эти голосования в телеге, фб — это нормально, там никакие лучи не влияют, а вот выборы в гос органы — это опасно, видете ли…

>Насчёт мультиплексора будем условно считать, что на адресные входы подаётся индекс первого информационного входа, от которого будет отсчитываться 8 бит

вот не надо было 8 бит сюда приплетать. Возьмите любую м/с типа РУ5 или РУ6 - именно ОДНОбитную, из 8 которых включенных параллельно по адресным линиям и получится таки 8 бит. А мультиплексор (точнее, ДЕмультиплексор), как раз надо было поставить ПЕРЕД дешифраторами адреса (соответственно, по адресным линиям передаются или адреса столбца или адреса строки). ИМХО было бы ближе к жизни.

Труд офигенный.
Но самое главное (с точки зрения цифровой схемотехники - это действительно самое главное) не освещено:

  1. Активируемая строка считывается в лэчи (можно регистры - но это не оптимально) - по порядку величины это время 10 нс.

    1. Это действие называется row activation - и при это даныне из капаситоров пропадают.

  2. После этого происходят многократные манипуляции с активированной строкой (то, что так выгодно делать основывается на ключевом свойстве программ - локальности).

  3. После того, как мы закончили обработку текущей строки - мы заново "речаржим" строку (что по порядку величины также занимает 10 нс). Это необходимо сделать, даже если мы только читали, т.к. см "1.1" - в банке памяти текущей строки больше нет, она заменена 0-ми.

Ну и обо всяких мелочах, что общение происходит словами (а значит ширина смещения адреса внутри строки = "размер строки / размер слова в битах") - лучше бы тоже поправить. Вы буквально на всех уровнях: ISA / LLC / DDR-контроллер - оперируете со словами в памяти, а не с какими-то наборами бит.

В целом ощущение, что одну полноценную статю вы скомпали в пару абзацев и решили "и так сойдёт", хотя это прям ключевые моменты про устройство DDR.

Про перезарядку конденсаторов говорил в самом конце (про усилители считывания), в абзаце с уточнениями.

Ну а насчёт процесса чтения/записи согласен, возможно немного сумбурно и не в деталях написал. Но поэтому уровень сложности статьи не «Сложный» и рассчитана она на тех, кто от оперативной памяти знает только название

Спасибо за комментарий!

Ох... не примите ниженаписанное за нападки - мне просто очень грустно от качества статей по микроэлектронике вообще ((.

Про перезарядку конденсаторов говорил в самом конце (про усилители считывания), в абзаце с уточнениями.
.....
В следующей части будут разбираться уже логические аспекты: режимы работы процессоров х86 и их влияние на память, сегментация, страничная организация памяти и так далее.

Кажется вообще самая содержательная часть всего описания памяти, определивная весь дизайн SOC последних 30 лет - memory wall - в план статьи не попадает.

Грустно.
Это вообще какая-то болезнь хабра. Про "физику" - пожалуйста.
Про что-то уже понятное прикладному программисту - пожалуйста.

Написать содержательно про системное программирование и\или микроэлектронику - просто выпадает из фокуса внимания.

Интересный у вас гелий, с четырьмя протонами и тремя нейтронами в ядре. Да и кремний тоже непрост. Унификация атомных ядер для удешевления?

Да, уже потом опомнился, что ядра везде одинаковые нарисовал. Но так как я не акцентировал на них внимание от слова совсем, думаю, нестрашно.

Поэтому ядра на картинках просто ради ядер :)

А что с электронами? На картинке с лампочкой закон Ома не нарушается?

отличная статья - спасибо!

Вам спасибо, что прочитали!

Когда мы замеряем напряжение на конденсаторе, то он как бы "разряжается". Если постоянно его читать, то в конце концов он полностью разрядится, но этого не происходит из-за того, что усилитель его постоянно подзаряжает, всё верно?

Не понял, зачем нужно постоянное напражение для оперативки, ведь если мы закрываем транзистор, то конденсатор оказывается отвязанным от внешнего мира и не должен разряжаться. Понял, заряд постепенно утекает из конденсатора. Почему тогда из накопителей не утекает? И почему нельзя совместить технологию ssd и ram?

Потому что в случае с SSD (флеш-памятью) используется совершенно другая технология. Там транзисторы не полевые, а с плавающим затвором (так и называется, транзистор с плавающим затвором). Вот из них почти не утекает, поэтому информация на SSD может храниться годами.

В основе там лежит туннельный эффект (это уже квантовая физика…). Советую посмотреть видео про SSD на канале Branch Education (на YouTube), чтобы в общих чертах понять что к чему.

Но проблема в том, что SSD намного намного … и так ещё несколько раз (в начале статьи приводил пример с ёжиком и истребителем) медленнее оперативной памяти. Точнее, эта технология (флеш-память) медленнее, на основные которой построен SSD.

Разумеется, если бы такого разрыва в скорости доступа к памяти в этих двух технологиях не было, то давно бы уже сделали не энергонезависимую ОЗУ.

Но всё же, в современных реалиях продолжают искать компромисс между скоростью, надежностью, ну и ценой, разумеется.

Поэтому ОЗУ - очень быстро (иначе нельзя, приводил на эту тему пример в начале статьи), но с перезарядкой. SSD - медленно, но зато надёжно и без постоянной перезарядки. Вот он компромисс.

Спасибо за вопрос! Надеюсь доходчиво ответил

SSD может храниться годами.

ИМХО, тут стоит сделать поправочку что делать так не стоит. По факту так мб и получится, однако производители гарантируют только 3 месяца (может быть этот уже outdated, давно не проверял).

Конечно это гарантия с запасом, но хранить что-то на ssd "на полочке" опрометчиво и потерять отдельные биты можно гораздо раньше чем через годы.

Мой практический максимум 9 месяцев успешного простоя.

P.S. а статья классная и полезная для общего представления и поэтому содержит массу упрощений. "Упрщение утверждений до неверности" -- необходимый компромисс. И с этим, конечно, надо быть осторожным с одной стороны, но и не принимать слишком уж занудную критику близко к сердцу. Жду следующих серий!

Спасибо за постскриптум! Не все это понимают :)

На Хабре под тематической статьей был комментарий о собственном опыте. Собран компьютер с SSD 512Гб, через некоторое время был выключен на полгода, и потом он не загрузился - повредились системные файлы.

И хорошо (пардон), что только файлы повредились. У меня вот был (не самый плохой) диск, у которого что-то в прошивке повредилось.

Спасибо! Насколько я помню, грубо говоря в ссд заряд хранится прямо в транзисторе, в этом плавающем затворе. И соответственно заряжать конденсатор уже не нужно, так почему ссд медленнее, чем полевики с конденсаторами в оперативной памяти?

SSD медленнее, так как сам процесс записи в его ячейки физически требует больше времени и ресурсов в виде приложенного к транзистору (но уже не полевому, а с плавающим затвором) напряжения.

Но в том же время, как я писал выше, электроны становятся «запертыми» на плавающим затворе на намного большее время, чем в ячейке ОЗУ 1T1C.

Почитайте что такое туннельный эффект Фаулера-Нордгейма, если вам интересно.

Думаю, Википедия или научные статьи объяснят уж точно лучше, чем я в одном комментарии на Хабре :)

Ну технически во флэш памяти заряд хранится не в затворе, а в подзатворном диэлектрике, и своим электрическим полем смещает ни к чему не подключенный ("плавающий") затвор. Соответственно затвор приоткрывается, и меняется сопротивление транзистора, которое ещё нужно измерить аналоговой схемой. Это дольше, чем просто разрядить конденсатор на вход усилителя.

А про усилитель вы верно сказали, да, он именно для этого и нужен

Если постоянно его читать, то в конце концов он полностью разрядится

Не в конце концов, а с первого же раза. Это специально такая фича, чтение = стирание. Тогда можно тупо лупить "запись", не опасаясь остаточного заряда.

Ну и да, чем меньше физические размеры конденсатора, тем меньше размер заряда (сейчас уже порядка 1000 электронов). Собственно, их не хватает, даже чтобы 1 раз "качнуть" обычный цифровой транзистор.

Поэтому на каждой линии стоит операционный усилитель (OpAmp, не знаю откуда автор выкопал слово sensitive), охваченный глубокой обратной связью. Гул микрофона когда-нибудь слышали? Это вот оно, операционный усилитель в режиме самовозбуждения. Или нет, если не произошло начального "щелчка". Т.е. считанный бит запоминается в виде состояния операционного усилителя, он либо в покое (0), либо в режиме самовозбуждения (1).

Все дальнейшие манипуляции производятся именно с этими усилителями как некими "ячейками памяти". И в конце, когда работа со строкой закончена, они же пишут информацию назад в конденсаторы.

При разработке стандарта DDR договорились, что ширина строки в одном банке одной микросхемы всегда 8192 бит, а ёмкость зависит только от количества строк в банке и количества банков. На обычной десктопной планке памяти 8 микросхем (без ЕСС) в два ряда (DDR). Т.е. когда ваша программа читает из памяти 1 число, реально память считывает 131072 бита. И потом записываются эти же 131072 бита, даже если вы сами ничего не записывали. Потому что заряда в конденсаторах уже нет, там нули. Впрочем, запись можно делать пост-фактум, если дальше вы читаете из другого банка,

В какой части серии статей будет про банки, ранки, плотность и всё такое,

и про многочисленные проблемы совестимости памяти с теми и иными чипсетами и разбор случаев, когда память согласно даташиту с чипсетом может не работать, но работает и случаев, когда вроде должна работать, но не работает?

В следующей части будут разбираться уже логические аспекты: режимы работы процессоров х86 и их влияние на память, сегментация, страничная организация памяти и так далее.

Насчёт проблем совместимости и прочих вещей, думаю, упоминаться не будет. Ведь все эти проблемы упираются в исторические «костыли » в попытках сохранить обратную совместимость с предыдущими моделями и в сухие технические выкладки конкретных реализаций конкретных компаний…

Всё это практика до мозга костей, мои же статьи по задумке несут более теоретический характер. И что самое главное - упрощённый, для тех, кто пока что вообще не разбирается в теме.

Поэтому, такие вещи, к сожалению, разбираться не будут.

ну то есть теория касаемая банков, ранков, плотности - это будет?

Прочитал с удовольствием, познавательно и простым языком, спасибо!

Отдельное спасибо за наглядное объяснение, как работают транзисторы и почему они n-p (и другие комбинации)!

Разве что немного непонятно, почему вы взяли 4-х битный мультиплексор: раз мы работаем с данными шириной 8 бит, а столбцов 16, то было бы достаточно 1-го битного. Ну либо рисовать не 16, а 128 столбцов.

, то было бы достаточно 1-го битного

Немного не понял о чём вы? Какой 1 битный?

Скорее всего речь идет о том, что зачем нам 4 бита для записи столбца, если мы работает сразу с 8 ячейками. То есть если всего 16 ячеек, то нам нужен всего один бит для столбцов (0 - с 1 по 8 и 1 - с 9 по 16). Я такой же вопрос хотел задать, потому что я моем понимании вообще нет никакого смысла допустим брать информацию с произвольных ячеек (с 6 по 13, например).
Еще хотелось бы услышть про скорость всего этого. Надеюсь, это будет в следующей статье. Из-за чего происходит замедление скорости и от чего зависит различие в скорости разных моделей, например (ведь скорость тока близка к скорости света)

Совершенно верно, с языка сняли! Спасибо)

Да, тогда согласен, мой пример избыточен

Скорость тока не равна скорости света, вообще ток ну очень медленный и условно его можно приравнять к скорости электронов в проводнике. Про протоны и вспоминать неудобно.
А вот скорость распространения электрического поля - да, она ближе к скорости света, но - зависит от материалов.

"Оперативно Забывающее Устройство", про DRAM ещë говорят.

А не используют несколько уровней заряда для хранения больше, чем один бит на конденсатор? Или так только во флешке делают?

Неплохая статья про основы. Но не понятно, зачем про pn-переход и биполярный транзистор написали. Больше запутали только.

Да, такое только во флеш-памяти

А где можно прочитать про стек/тренч-конденсаторы ?

Спасибо, интересная и познавательная статья. Подробно расписано про RAM память, и от чего зависит скорость и производительность, и для простого пользователя ПК достаточно подробно расписано.

Обязательно добавьте в эту статью или в следующую информацию про ранки, банки и рассмотрите реальные примеры планок, которые продаются сегодня или продавались за последние 10 лет, как они устроены, какие особенности чипсетов и БИОСа в работе с RAM.

Посмотрите этот вопрос мой https://qna.habr.com/q/1400652 я бьюс с ним уже который месяц. МНе там дали предположение про проблему, оно звучит вот так:

"Хотя формально чипсет 5520 и проц 5670 поддерживают конфигурации с высокой плотностью, есть одно НО. ....

Ваша конфигурация из 2x8ГБ (dual rank каждый), скорее всего, попадают в один и тот же канал памяти (не забываем, что проц поддерживает трехканальную память и двухканальную - когда используются только 2 слота из шести- и тут сюрприз, у матери всего два слота). Как мне кажется, это дает 4 ранка на канал. И, если допустить что контроллер или BIOS матери поддерживает, то такая конфигурация находится на пределе или превышает предел стабильной работы системы в целом. Система может видеть модули (на этапе POST), но не инициализировать их корректно для работы в ОС из-за слишком высокой электрической нагрузки или невозможности подобрать стабильные тайминги/напряжения.
В случае с двумя модулями 8+4, эта конфига хоть и дает 4 ранка на канал, ключевое отличие - плотность чипов. Плашка на 4ГБ по идее, имеет меньшую плотность чипов. Соответственно, чипы меньшей плотность создают разную и меньшую электрическую нагрузку на канал памяти. Контроллеру и BIOS часто проще "договориться" и найти стабильные настройки для конфигурации в 4 ранка, состоящей из модулей с разными типами чипов, чем для 4 ранка из двух абсолютно одинаковых модулей с чипами высокой плотности. Идентичные модули создают максимально однородную и, следовательно, максимальную нагрузку на канал.

Этим только, пока что, могу объяснить данное поведение. Попробуйте поиграться с напругой на память, задать чуть выше напряжение, если в БИОСе такое предусмотрено. Только не сразу много... шажочками по 0,05В и в пределах не более 1,6В. Или понизьте вручную тайминги. Возможно и взлетят. "

Однако я не смог его понять, так как нету толковых знаний про РАНКИ, БАНКИ, ТАЙМИНГИ, SPD, линии связи с процессором и поддержку БИОСом и чипсетом.

если в вашей статье будет как теоирия про тайминги банки ранки SPD поддержку чипсетом и так и реальная информация про реальные плашки памяти и чипсеты с примерами - это будет реально ИСЧЕРПЫВАЮЩЕЕ РУКОВОДСТВО которое все будут давать ссылку и советовать прочитать про любой вопрос, касаемый RAM

А, я оказывается уже писал выше коммент)) Ну тогда вопрос про Теорию касаемую РАНКОВ, БАНКОВ, ТАЙМИНГОВ, SPD - в силе.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud