"Информатика (базовый и углублённый уровень)", Гейн А.Г., Сенокосов А.И.
Оперативная память временно хранит программы и данные, которые нужны процессору во время работы. Её удобно представлять как ряд одинаковых ячеек: у каждой есть уникальный адрес, а данные передаются по отдельной шине. Адресная шина выбирает ячейку, шина данных переносит её содержимое. При чтении данные сохраняются, а при записи прежнее содержимое заменяется новым. Число адресуемых ячеек зависит от разрядности адреса, а общая ёмкость — ещё и от размера каждой ячейки.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Оперативная память — память компьютера для временного хранения программ и данных, к которым процессор обращается во время работы. Она нужна, чтобы процессор мог быстро получать команды и значения, не обращаясь каждый раз к более медленным носителям. Содержимое ОЗУ обычно сохраняется, пока компьютер включён.
Ячейка памяти — минимальная адресуемая область оперативной памяти, хранящая слово или байт данных. Именно с ячейками компьютер выполняет операции чтения и записи. Представление памяти в виде ячеек помогает точно указать, где находится нужное значение.
Адрес памяти — двоичный код, однозначно выбирающий ячейку, с которой выполняется операция. Адрес нужен, чтобы процессор обратился к конкретному месту, а не искал значение по всему объёму памяти. Сам адрес не является хранящимися в ячейке данными.
Шина данных — набор линий, по которым передаются записываемые или считанные данные. Число линий связано с количеством битов, передаваемых одновременно. Эта шина переносит содержимое ячейки, тогда как адресная шина указывает, какую ячейку выбрать.
Оперативную память удобно представлять как массив одинаковых ячеек, потому что процессору требуется обращаться к данным по одному и тому же понятному правилу. У каждой ячейки есть собственный адрес, поэтому разные значения можно независимо читать и заменять. Такое представление упрощает и устройство памяти, и описание операций с ней.
Если адресная шина имеет n разрядов, каждый разряд принимает одно из двух значений: 0 или 1. Значит, всего можно составить 2ⁿ различных кодов адреса и выбрать столько же ячеек, если память содержит их достаточно. Дешифратор распознаёт поступивший код и активирует именно ту ячейку, которой он соответствует.
При чтении процессор сначала выставляет адрес на адресную шину. Дешифратор выбирает соответствующую ячейку, после чего её содержимое передаётся процессору по шине данных. Адрес и данные идут по разным шинам, потому что один сигнал должен указывать место, а другой — переносить значение.
Для записи на адресную шину подают адрес нужной ячейки, а на шину данных — новое значение. Затем управляющий сигнал разрешает записать это значение в выбранную ячейку. Содержимое заменяется, потому что задача операции — сохранить новое значение именно по указанному адресу.
Количество ячеек определяется числом возможных адресов, а размер ячейки — числом битов, которое она хранит. Поэтому информационная ёмкость равна произведению числа ячеек на размер слова; результат можно выразить в битах или байтах. Разрядность адреса отвечает за число ячеек, а разрядность слова — за объём данных в каждой из них.
| Характеристика | Чтение | Запись |
|---|---|---|
| Что задаётся на адресной шине | Адрес ячейки, из которой получают данные | Адрес ячейки, куда записывают данные |
| Что передаётся по шине данных | Содержимое выбранной ячейки к процессору | Новое значение от процессора к памяти |
| Управляющий сигнал | Разрешение на чтение | Разрешение на запись |
| Изменяется ли содержимое ячейки | Нет | Да, прежнее значение заменяется |
| Результат операции | Данные получены процессором | Новое значение сохранено по адресу |
Сравнивая строки таблицы, сначала проверь, что в обеих операциях адрес выбирает ячейку, а направление передачи данных различается. Затем обрати внимание на управляющий сигнал и изменение содержимого. Это помогает не путать чтение с записью даже тогда, когда адрес в обоих случаях один и тот же.
Адресная шина имеет 8 разрядов, а каждая ячейка хранит 1 байт. Нужно найти число адресуемых ячеек и общую информационную ёмкость. Сначала вычислим число кодов, которые может передать адресная шина, затем учтём объём одной ячейки.
Ответ: адресуются 256 ячеек, информационная ёмкость памяти — 256 байт. Проверка проста: восемь двоичных разрядов задают коды от 00000000 до 11111111, всего их 256. Умножать на восемь адресных линий нельзя: они задают адреса, а не размер хранимых данных.
В памяти по адресу 1011 записано число 37. Требуется записать по тому же адресу число 52, а затем прочитать содержимое ячейки. Здесь важно разделять адрес и значение: 1011 указывает место, числа 37 и 52 — содержимое этого места.
Ответ: после записи в ячейке 1011 хранится 52, и чтение возвращает 52. Число 37 не сохраняется в этой ячейке после завершения записи. Если прочитать значение до записи, результатом было бы 37, но само чтение его не изменило бы.
Организация памяти 1024 × 16 означает 1024 ячейки по 16 бит в каждой. Нужно определить разрядность адресной шины, число линий данных и ёмкость в байтах. Найдём параметры по отдельности, чтобы не перепутать количество ячеек с размером слова.
Ответ: адресная шина имеет 10 разрядов, шина данных — 16 линий, ёмкость памяти составляет 2048 байт. Результат в байтах можно также записать как 2 КиБ, если использовать двоичную единицу измерения. Проверка: 1024 слова по 2 байта в каждом дают 2048 байт.
Адрес ячейки иногда принимают за хранящееся в ней число. Это происходит потому, что оба значения записывают цифрами, но адрес отвечает на вопрос «где?», а содержимое — «что?». Проверяй себя так: адрес подают на адресную шину, а данные передают по шине данных.
Можно решить, что n адресных линий выбирают n ячеек. Ошибка возникает из-за смешения числа линий с количеством кодов, которые они образуют: каждая линия принимает 0 или 1. Чтобы проверить ответ, вычисли 2ⁿ; например, четыре линии дают 16 комбинаций, а не четыре адреса.
Иногда чтение считают операцией, которая стирает или меняет данные. Вероятно, это смешение с записью, при которой новое значение заменяет прежнее. Проверь результат чтения: данные переданы процессору, но повторное чтение по тому же адресу при отсутствии записи даст прежнее значение.
При вычислении ёмкости могут умножить число ячеек на разрядность адреса или на число адресных линий. Так делают, когда забывают, что адресная шина выбирает место, а не определяет объём каждой ячейки. Перед умножением выпиши две величины: количество ячеек и размер одной ячейки; затем перемножь их и при необходимости переведи биты в байты.
Для понимания адресации полезны двоичная система счисления, степени двойки и принцип работы дешифратора. Эти знания объясняют, как код на адресных линиях превращается в выбор одной ячейки. Тема также помогает понять взаимодействие процессора с памятью, команды чтения и записи и устройство компьютерной шины.
Дальше эти представления пригодятся при изучении кэш-памяти и виртуальной памяти. Они также нужны, чтобы разбираться в адресации данных в программах: программа обращается к данным по адресу, а система организует доступ к памяти. Понимание разницы между адресом и содержимым лежит в основе этого взаимодействия.
Почему оперативная память называется памятью с произвольным доступом?
Процессор может обратиться к ячейке по её адресу напрямую, не проходя последовательно через все предыдущие ячейки. Поэтому время доступа не зависит от того, где именно расположены нужные данные.
Чем адрес ячейки отличается от данных в этой ячейке?
Адрес — это код, который указывает, какую ячейку нужно выбрать. Данные — это значение, которое хранится внутри выбранной ячейки и передаётся при чтении.
Почему при n адресных линиях получается 2^n ячеек?
Каждая линия может передавать 0 или 1, то есть имеет два состояния. Из n таких разрядов составляется 2^n разных двоичных кодов, и каждый код может обозначать отдельную ячейку.
Можно ли считать чтение из оперативной памяти изменением данных?
Нет, обычное чтение только передаёт содержимое выбранной ячейки процессору. Значение в ячейке остаётся прежним; его заменяет операция записи.
Как по обозначению памяти определить разрядность адресной и информационной шин?
В обозначении вида 1024 × 16 первое число показывает количество ячеек, а второе — размер слова в битах. Разрядность адресной шины находят из равенства 2ⁿ = 1024, а число линий данных равно 16.
§ 22. Логика оперативной памяти