Разработчик
- Статус
- Оффлайн
- Регистрация
- 21 Июн 2025
- Сообщения
- 220
- Реакции
- 87
Содержание данной статьи:
1.1. Углубляемся в SRAM. SR-защелки, отутствие регенерации, демонстрация RS-триггера
1.2. Углубляемся в DRAM. Регенерация данных, конденсаторы
2. Итог, сравнение SRAM и DRAM, цена, скорость
3. Заключение
Память используется для хранения как команд, так и данных.
В современных ПК память делится на два основных типа.
SRAM состоит из 6 транзисторов и хранит она 1 бит.
SRAM статическая память работающая на триггерах(flip-flop), птростейшие устройства для хранения одного бита информации, они имеют два устойчивых состояния, 0 или 1, и способны сохранять это состояние пока подано питание они строятся из логических элементов, чаще всего из инверторов или NOR элементов, классический пример это RS-триггер, который можно собрать из двух перекрестно связанных логических элементов:
Но, перед разбором триггеров, я бы хотел рассказать более подробно про статическую память.
Важно учитывать, что в ячейке SRAM данные сохраняются без необходимсоти регенерации данных, благодаря наличию двух инверторов которые подключены в кольцо, выход первого инвертора подключен ко входу второго,а выход второго - обратного ко входу первого.
Каждый инвертор построен из 2-х транзисторов - одного PMOS и NMOS оба инвертора вместе содержат в итоге 4 транзистора(2p + 2n).
Для начала разберем, что это вообще за транзисторы. Это два типа полевых ключей с разной полярностью, которые вместе образуют архитектуру CMOS, NMOS транзистор открывается при подаче единицы на затвор и соединяет выход с землей, PMOS работает наоборот и включается от логического нуля, подтягивая узел к питанию, в такой паре один транзистор всегда закрыт, пока другой открыт:
Чтобы создать один бит памяти, нужна схема, которая каким-то образом запоминает предудыщие входные значения, такую схему конструируют из двух вентилей НЕ-ИЛИ.
У SR-защелки есть два входа - S(setting - установить) И R(Resetting - сбросить), также есть два комплиментарных выхода Q и -Q(обсуждалось выше).
Когда Q = 1, SR-защелка устанавливается на SET, в то время противоположно при -Q = 1, SR-защелка устанавливается на RESET, потому что в архитектуре защелки два инвертора всегда находятся в противофазе, если на основном выходе Q висит единица, то на инверсном выходе -Q обязательно будет ноль, то есть можно назвать это устойчивым состояним SET, когда же мы подаем сигнал на вход RESET, мы принудительно открываем нижний транзистор в плече Q и стягиваем его потенциал к нулю, что автоматически через кольцо обратной связи заставляет второе плечо -Q переключиться в единицу.
То есть:
Q = 1 значит
-Q = 1 значит
Обратите внимание на скриншот выше, на нем видно, что внутри SR-защелки, Q = 1, в то время как -Q = 0.
В первом случае установлен префикс SET, в то время как -Q = 0 получает префикс RESET, тем самым на скрине демонстрируется взаимодополняемость.
Вот еще примерчик, запишем вот такой пример:
Когда в узле Q устанавливается логическая 1, первый инвертор преобразует этот сигнал в логический 0, на узле -Q, второй инвертор, получив на входе 0, вновь формирует на выходе узел Q, логическую 1, в итоге этот процесс просто зацикливается и ячейка устойчиво хранит записанное состяоние пока есть питание, этим и отличается SRAM, тем, что данные не нужно регенерировать, они зациклены.
Важно различать защелки и триггеры. Защелки работают по уровню управляющего сигнала и остаются прозрачными для данных всё время, пока на входе разрешения держится единица, в то время как триггеры срабатывают строго по фронту тактового импульса, фиксируя состояние в конкретный момент перехода из нуля в единицу.
Если еще проще, то триггеры - это почти те же защелки, но дополненные специальной схемой управления, которая заставляет их менять состояние только в короткий момент щелчка тактового генератора.
Просто запомните, что триггер запускается перепадом сигнала, а защелка запускается уровнем сигнала.
Технология SRAM используется: в кэше, в регистрах которые распологаются рядом с АЛУ, буферы инструкций, очередь uOps, ROB, TLB для MMU.
Все это в SRAM, потому-что нужна скорость, перечислять можно еще очень долго, но это маленькая статья, а не целая книге по схемотехнике.
Подробнее разбирать не буду, потому что статью пиши как мини, но если если людям зайдет подробнее опишу и разберем на практике формирование регистро, других видов триггера и т.д, далее.
В DRAM есть понятие регенерации данных, относительно статической памяти, где внутри кольца двух объеденненых инверторов процесс 1/0 просто зацикливается и данные не нужно восстанавливать, то тут все по другому, в DRAM подобного нет, в DRAM есть конденсатор, который содержит заряд, этот заряд пропадает, но потом вновь восстанавливается в течение 64 МС.
Чтение из DRAM в некотором плане является разрушающим, при считывании заряд конденсатора теряется, поэтому данные автоматически перезаписываются контроллером памяти, поэтому вы можете наблюдать то, что обращение к ОЗУ может занимать 100-300 тактов, процессор пытается уместить данные в кэш, то есть в SRAM, да и не только из-за рефреша данных, задержка возникает еще и из-за физической удаленности чипов памяти от кристалла процессора, в то время как те же регистры находятся прямо в АЛУ, внутри блока процессора, сигналу нужно пройти через дорожки на материнской плате и контакты сокета, также время тратится на работу контроллера памяти, который должен сначала выбрать нужный банк, затем активировать строку через команду RAS и только потом столбец через CAS, при этом если нужная строка еще не открыта, контроллеру приходится выполнять процедуру закрытия предыдущей строки, что добавляет еще больше циклов ожидания
Процессор проверяет есть ли данные в кэше l1 затем l2 затем l3 если данных нет происходит обращение к медленной оперативной памяти.
Рассмотрим небольшой пример, чтобы стало еще понятнее, код специально на С++ написал.
Например при резервировании массива:
Процессор видит, что массив типа int(размер 4 байта), содержит в себе 5 элементов, в случае если эти данные выровнены по определенной границе, у нас есть логически массив занимает 20 байт (4 байта * 5 элементов), но фактически память выделяется страницами и блоками значительно большего размера, но процессор никогда не работает с такими мелкими порциями напрямую, вместо этого он загружает данные в кэш L1 целыми блоками, которые называются кэш-линиями, стандартный размер такой линии составляет 64 байта. Поэтому при обращении даже к самому первому элементу массива numbers[0] процессор автоматически затягивает в сверхбыструю память L1 не только весь ваш массив, но и соседние ячейки, которые оказались рядом в этом 64-байтовом сегменте.
1. Архитектура ПК. Профессор Таненбаум, последнее издание.
2. Цифровые интегральные схемы. Jan M. Rabaey.
1.1. Углубляемся в SRAM. SR-защелки, отутствие регенерации, демонстрация RS-триггера
1.2. Углубляемся в DRAM. Регенерация данных, конденсаторы
2. Итог, сравнение SRAM и DRAM, цена, скорость
3. Заключение
Углубляемся в SRAM. SR-защелки, отутствие регенерации, создаем собственный RS-триггер.
Память является необходимым компонентом любого ПК, без памяти не было бы ПК, по крайне мере таких, какие есть сейчас.Память используется для хранения как команд, так и данных.
В современных ПК память делится на два основных типа.
SRAM состоит из 6 транзисторов и хранит она 1 бит.
SRAM статическая память работающая на триггерах(flip-flop), птростейшие устройства для хранения одного бита информации, они имеют два устойчивых состояния, 0 или 1, и способны сохранять это состояние пока подано питание они строятся из логических элементов, чаще всего из инверторов или NOR элементов, классический пример это RS-триггер, который можно собрать из двух перекрестно связанных логических элементов:
Но, перед разбором триггеров, я бы хотел рассказать более подробно про статическую память.
Важно учитывать, что в ячейке SRAM данные сохраняются без необходимсоти регенерации данных, благодаря наличию двух инверторов которые подключены в кольцо, выход первого инвертора подключен ко входу второго,а выход второго - обратного ко входу первого.
Каждый инвертор построен из 2-х транзисторов - одного PMOS и NMOS оба инвертора вместе содержат в итоге 4 транзистора(2p + 2n).
Для начала разберем, что это вообще за транзисторы. Это два типа полевых ключей с разной полярностью, которые вместе образуют архитектуру CMOS, NMOS транзистор открывается при подаче единицы на затвор и соединяет выход с землей, PMOS работает наоборот и включается от логического нуля, подтягивая узел к питанию, в такой паре один транзистор всегда закрыт, пока другой открыт:
Чтобы создать один бит памяти, нужна схема, которая каким-то образом запоминает предудыщие входные значения, такую схему конструируют из двух вентилей НЕ-ИЛИ.
У SR-защелки есть два входа - S(setting - установить) И R(Resetting - сбросить), также есть два комплиментарных выхода Q и -Q(обсуждалось выше).
Когда Q = 1, SR-защелка устанавливается на SET, в то время противоположно при -Q = 1, SR-защелка устанавливается на RESET, потому что в архитектуре защелки два инвертора всегда находятся в противофазе, если на основном выходе Q висит единица, то на инверсном выходе -Q обязательно будет ноль, то есть можно назвать это устойчивым состояним SET, когда же мы подаем сигнал на вход RESET, мы принудительно открываем нижний транзистор в плече Q и стягиваем его потенциал к нулю, что автоматически через кольцо обратной связи заставляет второе плечо -Q переключиться в единицу.
То есть:
Q = 1 значит
R = 0, S = 1-Q = 1 значит
R = 1, S = 0.Обратите внимание на скриншот выше, на нем видно, что внутри SR-защелки, Q = 1, в то время как -Q = 0.
В первом случае установлен префикс SET, в то время как -Q = 0 получает префикс RESET, тем самым на скрине демонстрируется взаимодополняемость.
Вот еще примерчик, запишем вот такой пример:
Q = 1 что это значит, разберем глубже? это значит, что открыт PMOS транзистор(на втором 0, когда на одном 1), он содержит логическое 1, то есть это значит, что в главном узле хранения установлен высокий уровень напряжения, в этот момент верхний транзистор PMOS открыт и как мостик соединяет выход ячейки с шиной питания, в то же время нижний NMOS полностью закрыт, чтобы ток не уходил в землю, в NMOS лежит логический 0.Когда в узле Q устанавливается логическая 1, первый инвертор преобразует этот сигнал в логический 0, на узле -Q, второй инвертор, получив на входе 0, вновь формирует на выходе узел Q, логическую 1, в итоге этот процесс просто зацикливается и ячейка устойчиво хранит записанное состяоние пока есть питание, этим и отличается SRAM, тем, что данные не нужно регенерировать, они зациклены.
Важно различать защелки и триггеры. Защелки работают по уровню управляющего сигнала и остаются прозрачными для данных всё время, пока на входе разрешения держится единица, в то время как триггеры срабатывают строго по фронту тактового импульса, фиксируя состояние в конкретный момент перехода из нуля в единицу.
Если еще проще, то триггеры - это почти те же защелки, но дополненные специальной схемой управления, которая заставляет их менять состояние только в короткий момент щелчка тактового генератора.
Просто запомните, что триггер запускается перепадом сигнала, а защелка запускается уровнем сигнала.
Технология SRAM используется: в кэше, в регистрах которые распологаются рядом с АЛУ, буферы инструкций, очередь uOps, ROB, TLB для MMU.
Все это в SRAM, потому-что нужна скорость, перечислять можно еще очень долго, но это маленькая статья, а не целая книге по схемотехнике.
Подробнее разбирать не буду, потому что статью пиши как мини, но если если людям зайдет подробнее опишу и разберем на практике формирование регистро, других видов триггера и т.д, далее.
1.2 Углубляемся в DRAM. Регенерация данных, конденсаторы
DRAM - динамичекая память которая состоит из одного транзистора и одного кондесатора, что равно 1 биту, на DRAM основана оперативная память(ОЗУ), сделано это из-за того, что содержать SRAM в виде основной памяти было бы слишком затратно, потому что, как уже было рассмотрено выше SRAM содержит целых 6 транзисторов, он избыточен под ОЗУ, если бы ОЗУ был основан на нем, ПК был бы слишком дорогим, то есть статик память занимает больше площади кристалла.Это две металлические пластины с диэлектриком между ними, которые физически не могут долго удерживать электроны из-за токов утечки
Чтение из DRAM в некотором плане является разрушающим, при считывании заряд конденсатора теряется, поэтому данные автоматически перезаписываются контроллером памяти, поэтому вы можете наблюдать то, что обращение к ОЗУ может занимать 100-300 тактов, процессор пытается уместить данные в кэш, то есть в SRAM, да и не только из-за рефреша данных, задержка возникает еще и из-за физической удаленности чипов памяти от кристалла процессора, в то время как те же регистры находятся прямо в АЛУ, внутри блока процессора, сигналу нужно пройти через дорожки на материнской плате и контакты сокета, также время тратится на работу контроллера памяти, который должен сначала выбрать нужный банк, затем активировать строку через команду RAS и только потом столбец через CAS, при этом если нужная строка еще не открыта, контроллеру приходится выполнять процедуру закрытия предыдущей строки, что добавляет еще больше циклов ожидания
Процессор проверяет есть ли данные в кэше l1 затем l2 затем l3 если данных нет происходит обращение к медленной оперативной памяти.
Рассмотрим небольшой пример, чтобы стало еще понятнее, код специально на С++ написал.
Например при резервировании массива:
C++:
#include <iostream>
int main() {
int numbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
std::print("{} ", numbers[i]);
}
return 0;
}
Заключение.
Вот такая мини-статья вышла на тему памяти, тут было пропущено много чего сложного, ну, имхо форум читерский, рассматривать углубленно архитектуру ПК на уровне физики смысла нет. Надеюському-то было полезно, также предоставляю полезные материалы по этому направлению:1. Архитектура ПК. Профессор Таненбаум, последнее издание.
2. Цифровые интегральные схемы. Jan M. Rabaey.
Последнее редактирование: