Видео: YouTube
Строка памяти
Чуть ранее мы рассмотрели элемент памяти, способный хранить один бит информации. Сейчас же мы рассмотрим строку памяти, способную хранить двоичное слово.
Как можно заметить, в этом примере слово состоит из трех бит. По числу D триггеров и соответственно разрядности шины данных, проводящей биты до входов триггеров. Как мы помним, синхронный вход триггера С отвечает за процедуру записи входного бита. На этой схеме этот вход управляется конъюнкцией с тремя входами, а это значит, что единица на выход пройдет только в том случае, если все биты на входе единицы. А это означает, что тактовый сигнал CLK пройдет на вход триггера только если два остальных входа конъюнкции единицы. Это происходит тогда, когда на самой нижней линии разрешения записи единица. По английски это Write Enable. Еще одну единицу обеспечит дешифратор строки. В этом примере на нулевом выходе дешифратора появится единица, когда на двух его входах будут нули. В таком случае говорят, что адрес этой строки памяти 00 в двоичном виде. Никакой другой адрес не вызовет единицу на этом выходе дешифратора. Итого. Чтобы записать двоичное слово в эту строку памяти необходимо:
- Выставить на шину адреса 00
- Выставить 1 на линию разрешения записи
- Подать на CLK импульс, где будет переход с уровня 0 до уровня 1
Статическая RAM память
Память с произвольным доступом позволяет обращаться к любой своей строке в произвольном порядке. Соединим несколько строк памяти в такой массив как на рисунке.
Теперь это настоящая память с произвольным доступом. Можно обратиться к любому слову, еще это слово называют ячейкой памяти. В эту ячейку можно произвести запись, можно прочитать ее содержимое. При чтении ячейки памяти на линию разрешения записи выставляется ноль. Адрес ячейки вызовет активацию конъюнкций, которые подключены к нужному выходу дешифратора. Теперь уже других конъюнкций с двумя входами на выходах триггеров. Таким образом, содержимое строки выставляется на выходную шину данных. Условное обозначение рассмотренной памяти изображено справа. Около косых черточек указаны разрядности шин данных и адреса.
Чтоб лучше запомнить порядок сохранения двоичного слова в памяти, представим память как таблицу.
Итак, заполним ячейку памяти данными. Нулевая ячейка, адрес ноль, ноль. Хотим запомнить единицу, ее код на шине данных. На линии разрешения записи единица. Импульс на тактовой линии и слово один лежит в нулевой ячейке. На выходной шине также содержимое нулевой ячейки.
Динамическая RAM память
Поскольку ячейки памяти сохраняют свое содержимое пока есть питание схемы — такая память называется статической. Динамическая память имеет ячейки памяти, основанные на других физических принципах работы. В случае утечки заряда с таких ячеек появляется необходимость постоянно восстанавливать ее содержимое. Такое восстановление называют регенерацией. Благодаря тому, что ячейка памяти имеет малый размер, на одной микросхеме могут умещаться миллионы таких ячеек.
Динамическая память создана для хранения данных с высокой плотностью. Чтобы организовать доступ ко всем ее ячейкам требуется большое количество линий адреса. Однако инженеры существенно сократили количество этих линий. Следовательно микросхемы с меньшим количеством контактов стали более компактными.
Каким же образом сокращено количество линий адреса? Весь секрет в том, что адрес поступает частями из двух половинок за два такта.
За первый такт одна половинка, за второй такт другая. Части адреса хранятся в регистрах столбца и строки. Импульсы записи в эти регистры приходят по линиям RAS и CAS. Ячейки памяти в таких микросхемах организованы в свои столбцы и строки. Одна часть адреса дешифрует столбец, другая часть дешифрует строку. Как только это произошло — содержимое ячейки памяти поступает в буфер данных, откуда оно может быть считано. Запись в такую микросхему также состоит из поэтапной дешифрации адреса и записи двоичного слова из буфера данных в соответствующее пересечение строки и столбца. Буфером данных может быть регистр и дополнительная логика управления процессом записи и чтения.
Контроллер памяти
Как можно заметить, теперь данные не появляется сразу как только мы захотим. Доступ к ним это теперь более сложный ритуал. Процессоры и прочие вычислители не должны вдаваться в подробности этого ритуала. Тем более, у разных моделей микросхем могут быть свои особенности. Инженеры нашли выход и здесь.
Промежуточным звеном между вычислителем и памятью стал контроллер памяти. Для вычислителя это обычная память без сложных манипуляций. Он выставляет данные и адрес, отдает команду записи или чтения. В это время контроллер занимается тем, что выставляет на вход реальной микросхемы все необходимые сигналы в нужном порядке.
Тем, кто раньше не понимал что означает латентность памяти теперь понятно не только, что это задержка, но и что показывают системные программы про память в вашем компьютере.
- CAS Latency (CL) или латентность оперативной памяти — самый важный среди таймингов.
- RAS to CAS Delay (tRCD) — задержка между обращением к столбцу матрицы адресов страниц оперативной памяти и обращением к строке этой же матрицы.
- RAS Precharge (tRP) — задержка между закрытием доступа к одной строке матрицы и открытием доступа к другой.
- Active to Precharge Delay (tRAS) — Задержка, необходимая на возвращение памяти к ожиданию следующего запроса.
Эти показания — наносекунды задержек между стадиями работы контроллера памяти. Он недолжен работать быстрее чем способны реагировать микросхемы памяти.
Итак, статическая память обладает маленькой плотностью хранения, но высокой скоростью доступа к данным. Динамическая память имеет высокую плотность хранения данных, но низкую скорость доступа к ним. Не только из за множества этапов, но и из-за периодической регенерации ячеек. Эти особенности привели к тому что статическая память используется в высокоскоростной кэш памяти процессора. Динамическая память используется в качестве оперативной памяти. Ее можно покупать отдельно когда компьютеру уже не хватает прежнего объема.