ЗУ делятся на электронные и электронно-механические. Первые базируются на интегральных схемах, характеризуются высокой стоимостью, обладают большим быстродействием, надежностью в работе. Электронно-механические устройства используют механические средства, но более экономичны и имеют большую емкость памяти. В этой связи в каждой системе создается и используется иерархия ЗУ.
Электронно-механические делятся как минимум на два класса: оперативные запоминающие устройства (ОЗУ) и внешние запоминающие устройства (ВЗУ).
В адресном ОЗУ каждый элемент памяти имеет адрес, соответствующий его пространственному расположению в запоминающей среде. Поэтому, обращение к определенному элементу производится в соответствии с кодом его адреса. В ЗУ после приема кода осуществляется его дешифрация, после чего следует выборка из элемента конкретной группы битов или слов.
В ассоциативном ОЗУ поиск данных происходит по конкретному содержимому, независимо от его адреса. Такой поиск информации идет с использованием определенных признаков, например, ключевых слов, которые связаны с искомыми данными. Ассоциативные устройства, хотя и являются более сложными, обеспечивают более быстрый поиск и выбор хранимых данных.
Необходимо отметить, что все распространенные операционные системы, если для работы нужно больше памяти, чем физически присутствует в компьютере, не прекращают работу, а сбрасывают не используемое в данный момент содержимое памяти в дисковый файл (называемый свопом — swap) и затем по мере необходимости «перегоняют» данные между ОЗУ и свопом. Это гораздо медленнее, чем доступ системы к самой ОЗУ. Поэтому от количества оперативной памяти напрямую зависит быстродействие системы в целом.
По типу обращения и организации доступа к ячейкам ЗУ делятся:
Рис 1. Классификация запоминающих устройств
По типу обращения ЗУ делятся на устройства, допускающие как чтение, так и запись информации, и постоянные запоминающие устройства (ПЗУ), предназначенные только для чтения записанных в них данных (ROM - read only memory).
ЗУ первого типа используются в процессе работы процессора для хранения выполняемых программ, исходных данных, промежуточных и окончательных результатов. В ПЗУ, как правило, хранятся системные программы, необходимые для запуска компьютера в работу, а также константы. В некоторых ЭВМ, предназначенных, например, для работы в системах управления по одним и тем же неизменяемым алгоритмам, все программное обеспечение может храниться в ПЗУ.
В ЗУ с произвольным доступом (RAM - random access memory) время доступа не зависит от места расположения участка памяти (например, ОЗУ).
В ЗУ с прямым (циклическим) доступом благодаря непрерывному вращению носителя информации (например, магнитный диск - МД) возможность обращения к некоторому участку носителя циклически повторяется. Время доступа здесь зависит от взаимного расположения этого участка и головок чтения/записи и во многом определяется скоростью вращения носителя.
В ЗУ с последовательным доступом производится последовательный просмотр участков носителя информации, пока нужный участок не займет некоторое нужное положение напротив головок чтения/записи (например, магнитные ленты - МЛ).
Как отмечалось выше, основные характеристики запоминающих устройств - это емкость и быстродействие. Идеальное запоминающее устройство должно обладать бесконечно большой емкостью и иметь бесконечно малое время обращения. На практике эти параметры находятся в противоречии друг другу: в рамках одного типа ЗУ улучшение одного из них ведет к ухудшению значения другого. К тому же следует иметь в виду и экономическую целесообразность построения запоминающего устройства с теми или иными характеристиками при данном уровне развития технологии.
Поэтому в настоящее время запоминающие устройства компьютера, как это и предполагал Нейман, строятся по иерархическому принципу (рис. 2).
Рис. 2. Иерархическая организация памяти в современных ЭВМ
Иерархическая структура памяти позволяет экономически эффективно сочетать хранение больших объемов информации с быстрым доступом к информации в процессе ее обработки.
На нижнем уровне иерархии находится регистровая память (РП)- набор регистров, входящих непосредственно в состав микропроцессора (центрального процессора - CPU). Регистры CPU программно доступны и хранят информацию, наиболее часто используемую при выполнении программы: промежуточные результаты, составные части адресов, счетчики циклов и т.д. Регистровая память имеет относительно небольшой объем (до нескольких десятков машинных слов). РП работает на частоте процессора, поэтому время доступа к ней минимально. Например, при частоте работы процессора 2 ГГц время обращения к его регистрам составит всего 0,5 нс.
Оперативная память (ОП) - устройство, которое служит для хранения информации (программ, исходных данных, промежуточных и конечных результатов обработки), непосредственно используемой в ходе выполнения программы в процессоре. В настоящее время объем ОП персональных компьютеров составляет несколько сотен мегабайт. Оперативная память работает на частоте системной шины и требует 6-8 циклов синхронизации шины для обращения к ней. Так, при частоте работы системной шины 100 МГц (при этом период равен 10 нс) время обращения к оперативной памяти составит несколько десятков наносекунд.
Для заполнения пробела между РП и ОП по объему и времени обращения в настоящее время используется кэш-память, которая организована как более быстродействующая (и, следовательно, более дорогая) статическая оперативная память со специальным механизмом записи и считывания информации и предназначена для хранения информации, наиболее часто используемой при работе программы. Как правило, часть кэш-памяти располагается непосредственно на кристалле микропроцессора (внутренний кэш), а часть - вне его (внешняя кэш-память). Кэш-память программно недоступна. Для обращения к ней используются аппаратные средства процессора и компьютера.
Внешняя память организуется, как правило, на магнитных и оптических дисках, магнитных лентах. Емкость дисковой памяти достигает десятков гигабайт при времени обращения менее 1 мкс. Магнитные ленты вследствие своего малого быстродействия и большой емкости используются в настоящее время в основном только как устройства резервного копирования данных, обращение к которым происходит редко, а может быть и никогда. Время обращения для них может достигать нескольких десятков секунд.
Следует отметить, что электронная вычислительная техника развивается чрезвычайно быстрыми темпами. Так, согласно эмпирическому "закону Мура", производительность компьютера удваивается приблизительно каждые 18 месяцев. Поэтому все приводимые в данном пособии количественные характеристики служат по большей части только для отражения основных соотношений и тенденций в развитии тех или иных компонентов и устройств компьютеров.
Рассмотрим адресные ЗУ. Команды, исполняемые ЭВМ при выполнении программы, равно как и числовые и символьные операнды, хранятся в памяти компьютера. Память состоит из многих миллионов ячеек, в каждой из которых содержится один бит информации (значения 0 или 1). Биты редко обрабатываются поодиночке, а как правило, группами фиксированного размера. Для этого память организуется таким образом, что группы по п бит могут записываться и считываться за одну операцию. Группа п бит называется словом, а значение п — длиной слова. Схематически память компьютера можно представить в виде массива слов (рис. 3).
Обычно длина машинного слова компьютеров составляет от 16 до 64 бит. Если длина слова равна 32 битам, в одном слове может храниться 32-разрядное число в дополнительном коде или четыре символа ASCII, занимающих 8 бит каждый.
Рис. 3. Размещение числовой (а) и символьной (б) информации в слове
Восемь идущих подряд битов являются байтом. Для представления машинной команды требуется одно или более слов.
Для доступа к памяти с целью записи или чтения отдельных элементов информации, будь то слова или байты, необходимы имена или адреса, определяющие их расположение в памяти. В качестве адресов традиционно используются числа из диапазона от 0 до 2к - 1 со значением к, достаточным для адресации всей памяти компьютера. Все 2кадресов составляют адресное пространство компьютера. Следовательно, память состоит из 2кадресуемых элементов.
Например, использование 24-разрядных (как в процессоре 80286) адресов позволяет адресовать 224 (16 777 216) элементов памяти. Обычно это количество адресуемых элементов обозначается как 16 Мбайт (1.Мбайт = 220 = 1 048 576 байт, адресное пространство 8086.и 80186). Поскольку у процессоров 80386, 80486, Pentium и их аналогов 32-разрядные адреса, им соответствует адресное пространство из 232 байт, или 4 Гбайт элементов.
Байтовая адресация.Итак, отдельные биты, как правило, не адресуются и чаще всего адреса назначаются байтам памяти. Именно так адресуется память большинства современных компьютеров. Память, в которой каждый байт имеет отдельный адрес, называется памятью с байтовой адресацией. Последовательные байты имеют адреса 0, 1, 2 и т. д. Таким образом, при использовании слов длиной 32 бита последовательные слова имеют адреса 1, 4, 8,..., и каждое слово состоит из 4 байт.
Прямой и обратный порядок байтов. Существует два способа адресации байтов в словах:
• в прямом порядке (рис. 4, а);
в обратном порядке (рис. 4, б).
Рис. 4. Способы адресации байтов в ОЗУ
Обратным порядком байтов (big-endian) называется система адресации, при которой байты адресуются слева направо, так что самый старший байт слова (расположенный с левого края) имеет наименьший адрес.
Прямым порядком байтов (little-endian) называется противоположная система адресации, при которой байты адресуются справа налево, так что наименьший адрес имеет самый младший байт слова (расположенный с правого края).
Слова «старший» и «младший» определяют вес бита, т. е. степень двойки, соответствующей данному биту, когда слово представляет число. В ПЭВМ на основе 80x86 используется прямой порядок, а в ПЭВМ на основе Motorola 68000 — обратный. В обеих системах адреса байтов 0, 4, 8 и т. д. применяются в качестве адресов последовательных слов памяти в операциях чтения и записи слов.
Наряду с порядком байтов в слове важно также определить порядок битов в байте. Наиболее естественный порядок битов для кодирования числовых данных (непосредственно соответствующий их разрядам) «слева направо»: b32, ••-, b1, b0. Однако существуют компьютеры, для которых характерен обратный порядок битов.
Расположение слов в памяти.В случае 32-разрядных слов их естественные границы располагаются по адресам 0, 4, 8 и т. д. При этом считается, что слова выровнены по адресамв памяти. Если говорить в общем, слова считаются выровненными в памяти в том случае, если адрес начала каждого слова кратен количеству байтов в нем. По практическим причинам, связанным с манипулированием двоично-кодированными адресами, количество байтов в слове обычно является степенью двойки. Поэтому, если длина слова равна 16 бит (2 байтам), выровненные слова начинаются по байтовым адресам 0, 2, 4, ..., а если она равна 64 бит (2 , т. е. 8 байтам), то выровненные слова начинаются по байтовым адресам 0, 8, 16, ... .
Не существует причины, по которой слова не могли бы начинаться с произвольных адресов. Такие слова называются невыровненными. Как правило, слова выравниваются по адресам памяти, но иногда этот принцип нарушается.
Доступ к числам, символам и символьным строкам.Обычно число занимает целое слово, поэтому, для того чтобы обратиться к нему, нужно указать адрес слова, по которому оно хранится. Точно так же доступ к отдельно хранящемуся в памяти символу осуществляется по адресу содержащего его байта.
Во многих приложениях необходимо обрабатывать строки символов переменной длины. Для доступа к такой строке нужно указать адрес байта, в котором хранится ее первый символ. Последовательные символы строки содержатся в последовательных байтах. Существует два способа определения длины строки. Первый из них заключается в использовании специального управляющего символа, обозначающего конец строки и являющегося ее последним символом. Второй способ состоит в использовании отдельного слова памяти или регистра процессора, содержащего число, которое определяет длину строки в байтах.
Операции с памятью.Как команды программ, так и данные, являющиеся операндами этих команд, хранятся в памяти. Для выполнения команды управляющие схемы процессора должны инициировать пересылку содержащего ее слова или слов из памяти в процессор.
Операнды и результаты также должны пересылаться между памятью и процессором. Таким образом, для выполнения команды программы необходимо произвести две операции с памятью:
Load (также Read, или Fetch) — загрузка (или чтение, или выборка соответственно);
Store (или Write) — сохранение (или запись).
Операция загрузки пересылает в процессор копию содержимого памяти по заданному адресу. При этом содержимое памяти остается неизменным. Для того чтобы начать операцию загрузки, процессор отсылает в память адрес и запрашивает содержимое памяти по этому адресу. Из памяти считываются соответствующие данные и пересылаются в процессор.
Операция сохранения пересылает элемент информации из процессора в память по заданному адресу, уничтожая предыдущие данные, хранившиеся по этому адресу. Для выполнения такой операции процессор отсылает в память данные и адрес, по которому они должны быть записаны.
Информацию из одного слова или одного байта можно переслать между процессором и памятью за одну операцию. Процессор содержит небольшое количество регистров, вмещающих по одному слову. Эти регистры служат либо источниками, либо приемниками данных, пересылаемых в память и из памяти. Пересылаемый байт обычно располагается в младшей (крайней справа) позиции в регистре.
Конкретные системы оперативной памяти.Память, хранящая обрабатываемые в текущее время данные и выполняемые команды (программу), называется основной памятью — RAM (Random Access Memory), т. е. память с произвольным доступом. Она составляет основу системной памяти.
В ПК в большинстве случаях основная оперативная память строится на микросхемах динамического типа (DRAM — Dynamic Random Access Memory), где в качестве запоминающего элемента (ЗЭ) используется простейшая сборка, состоящая из одного транзистора и одного конденсатора. Основными причинами широкого применения этой памяти является высокая плотность интеграции (увеличение числа ЗЭ на чип и сокращение числа чипов, необходимых для одного модуля), малое потребление энергии (тратится минимум энергии на хранение одного бита, уменьшается потребляемая системой мощность, снижается стоимость) и т. д. Но имеются и недостатки: каждый ЗЭ представляет, по сути дела, разряжаемый со временем конденсатор, поэтому чтобы предотвратить потерю хранящейся в конденсаторах информации, микросхема RAM постоянно должна регенерироваться.
Имеется другой вид памяти, который лишен этого недостатка. Эта память называется статической (Static RAM — SRAM), где в качестве ЗЭ используется так называемый статический триггер (состоящий из 4—6 транзисторов). Из-за сложности запоминающих элементов (ЗЭ) плотность упаковки микросхем SRAM меньше, чем для DRAM. Следовательно, если бы SRAM устанавливалась в качестве оперативной памяти, то это привело бы к увеличению быстродействия ПК, однако при этом существенно изменилась бы его стоимость, поскольку стоимость микросхемы SRAM значительно выше стоимости DRAM. Для повышения быстродействия в настоящее время применяются различные архитектурно-логические решения. Сейчас имеется множество различных типов памяти, отличающихся друг от друга своими основными характеристиками.
Основная память соединяется с процессором посредством адресной шиныи шины данных. Каждая шина состоит из множества электрических цепей (линий или бит). Ширина (разрядность) адресной шины определяет, сколько адресов может быть в ОЗУ (адресное пространство), а шины данных — сколько данных может быть передано за один цикл. Например, в 1985 г. процессор Intel 386 имел 32-разрядную адресную шину, что дало возможность поддерживать адресное пространство в 4 Гбайт. В процессоре Pentium (1993 г.) ширина шины данных была увеличена до 64 бит, что позволяет передавать 8 байт информации одновременно.
Каждая передача данных между процессором и памятью называется циклом шины. Количество бит, которое процессор может передать за один цикл шины, влияет на производительность компьютера и определяет, какой тип памяти требуется.
Для описания характеристик быстродействия оперативной памяти применяются так называемые циклы чтения/записи (или временные схемы пакета). Дело в том, что при обращении к памяти на считывание или запись первого машинного слова расходуется больше тактов, чем на обращение к трем последующим словам. Так, для асинхронной SRAM чтение одного слова выполняется за 3 такта, запись — за 4 такта, чтение нескольких слов определяется последовательностью 3—2—2—2 такта, (что означает, что чтение 1-го элемента данных занимает 3 такта ЦП, включая 2 такта ожидания, а чтение последующих — по 2 временных такта), а запись — 4—3—3—3.