Учебное пособие -> Глава 5. Организация
компьютерных систем: основная память
Глава 5. Организация компьютерных
систем: основная память
Памятьэто тот
компонент компьютера, в котором хранятся граммы и данные. Основной единицей
хранения данных в памяти является двоичный разряд, который называется битом. Бит
– наименьшая единица памяти, может принимать значения 0 или 1.
Байт - единица измерения количества информации, считается
равным восьми битам. Байт в современных компьютерах - это минимально адресуемая
последовательность фиксированного числа битов.
Машинное слово - упорядоченный набор цифр, букв и других
символов, хранящихся в памяти ЭВМ и воспринимаемых при обработке устройствами
машины как единое слово, команда. Это машиннозависимая и платформозависимая
величина, измеряемая в битах или байтах, равная разрядности регистров процессора
и/или разрядности шины данных. Количество основных символов в машинном слове
называется длиной слова; обычно машинное слово содержит целое число байтов.
Адреса памяти.
Память состоит из ячеек, каждая из которых может хранить
некоторую порцию информации. Каждая ячейка имеет номер, который называется
адресом. По этому адресу программы могут ссылаться на определенную ячейку. Если
память содержитn ячеек,
они будут иметь адреса от 0 до
. Все ячейки памяти содержат одинаковое число бит. Если ячейка
состоит изk бит, она может содержать любую изкомбинаций. Ячейка -
минимальная единица памяти, к которой можно обращаться.
Различная организация 96-разрядной памяти
Виды памяти.
По доступным операциям с данными память в компьютере можно
разделить на следующие категории:
-ROM (read-only memory) - память только для
чтения;
-RAM (random-access memory) - память для
чтения/записи.
По энергозависимости память можно разделить на следующие
категории:
-Энергонезависимая память (nonvolatile storage)память, реализованная запоминающими устройствами (ЗУ), записи в которых
не стираются при снятии электропитания. Энергонезависимая память в основном
применяется для хранения неизменяемой (или редко изменяемой) информации -
системного программного обеспечения BIOS (Basic Input-Output System), памяти
конфигурации устройств (ESCD
- ExtendedSystemCongurationData), (EEPROM- ElectricallyErasableProgrammableRead-OnlyMemory) адаптеров.
-Энергозависимая память (volatile storage)память, реализованная ЗУ, записи в которых стираются при снятии
электропитания. К этому типу памяти относятся память на оперативных запоминающих
устройствах (ОЗУ), кэш-память.
Энергозависимую память также можно разделить на две
категории:
-Статическая памятьSRAM(StaticRandomAccessMemory)
способна хранить информацию в статическом режиме - то есть сколь угодно долго
при отсутствии обращений (но при наличии питающего напряжения). Ячейки
статической памяти реализуются на триггерах - элементах с двумя устойчивыми
состояниями (0 или 1). По сравнению с динамической памятью эти ячейки более
сложные и занимают больше места в кристалле, однако они проще в управлении и не
требуют регенерации.
-Динамическая память
DRAM (DynamicRandomAccessMemory)
получила свое название от принципа действия ее запоминающих ячеек, которые
выполнены в виде конденсаторов, образованных элементами полупроводниковых
микросхем. При записи логической единицы в ячейку конденсатор заряжается, при
записи нуля - разряжается. Благодаря относительной простоте ячейки динамической
памяти на одном кристалле удается размещать миллионы ячеек и получать дешевую
полупроводниковую память достаточно высокого быстродействия с умеренным
энергопотреблением, используемую в качестве основной памяти компьютера.
По назначению память можно разделить на следующие
категории:
-Буферная память - память, предназначенная для
временного хранения данных при обмене ими между различными устройствами или
программами.
- Временная память (temporary memory) - память
для хранения промежуточных результатов обработки.
-Кэш-память (cache memory) - часть архитектуры
устройства или программного обеспечения, осуществляющая хранение часто
используемых данных для предоставления их в более быстрый доступ.
-Разделяемая память или память коллективного
доступа (shared memoryили sharedaccessmemory) -
память, доступная одновременно нескольким пользователям, процессам или
процессорам.
Кэш-память.
Основная идея кэш-памяти состоит в том, что в ней находятся
машинные слова, которые используются чаще всего. Если процессору нужно
какое-нибудь слово, сначала он обращается к кэш-памяти. Только в том случае,
если слова там нет, он обращается к основной памяти.
Если значительная часть слова находится в кэш-памяти,
среднее время доступа значительно сокращается. Ситуация, когда при
последовательных обращениях к памяти в течение некоторого промежутка времени
используется только небольшая ее область, называется принципом локальности. Этот
принцип составляет основу всех систем кэш-памяти. Идея состоит в том, что когда
определенное слово вызывается из памяти, оно вместе с соседними словами
переносится в кэш-память, что позволяет при очередном запросе быстро обращаться
к следующим словам.
Рисунок Кэш-память должна находиться между
процессором и основной памятью
Если слово считывается или записывается k раз, компьютеру
требуется сделать 1 обращение к медленной основной памяти иk-1обращений к быстрой кэш-памяти. Чем большеk, тем выше общая производительность.
Пусть cвремя
доступа к кэш-памяти, tвремя
доступа к основной памяти и h коэффициент кэш-попаданий (hit ratio), который
показывает соотношение числа обращений к кэш-памяти и общего числа всех
обращений к памяти
.
Коэффициент кэш-промахов (miss ratio), равен 1-h
Таким образом, среднее время доступа можно вычислить по
следующей формуле:
среднее время доступа =c + (1-h)×t.
Если h®
1, то есть все обращения делаются только к кэш-памяти, то время доступа
стремится к c. С другой стороны, если h®0,
то есть каждый раз нужно обращаться к основной памяти, то время доступа
стремится к c + t: сначала требуется время c для проверки кэш-памяти (в данном
случае безуспешной), а затем - время t для обращения к основной памяти.
В некоторых системах обращение к основной памяти может
начинаться параллельно с исследованием кэш-памяти, чтобы в случае кэш-промаха
цикл обращения к основной памяти уже начался.
Однако эта стратегия требует способности останавливать
процесс обращения к основной памяти в случае кэш-попадания, что усложняет
разработку подобного компьютера.
Кэш-память очень важна для вычислительных систем. При этом
существует ряд проблем:
1. Объем кэш-памяти - чем больше объем, тем более
эффективно она работает, но тем дороже стоит.
2. Размер строки кэша - кэш-память объемом 16 Кбайт можно
разделить на 1024 строки по 16 байт, 2048 строк по 8 байт и т. д.
3. Проблема выбора слов, которые необходимо помещать в
кэш-память.
4. Нахождение команд и данных в общей кэш-памяти. В
объединенной кэш-памяти (unied cache) хранятся и данные и команды. В настоящее
время существует тенденция к использованию разделенной кэш-памяти (split cache),
когда команды хранятся в одной кэш-памяти, а данные - в другой (Гарвардская
архитектура). Разделенная кэш-память позволяет осуществлять параллельный доступ,
а общая - нет.
5. Количество блоков кэш-памяти - в настоящее время часто
кэш-память первого уровня располагается прямо на микросхеме процессора,
кэш-память второго уровня помещается не на самой микросхеме, а в корпусе
процессора, кэш-память третьего уровня помещается еще дальше от процессора.
В зависимости от способа определения взаимного соответствия
строки кэша и области основной памяти различают три архитектуры кэш-памяти: кэш
прямого отображения (direct-mapped cache), полностью ассоциативный кэш (fully
associative cache) и их комбинация - частично-ассоциативный или
наборно-ассоциативный кэш (set-associative cache).
Код исправления
ошибок.
В памяти компьютера из-за всплесков напряжения и по другим
причинам время от времени могут содержаться ошибки. Чтобы бороться с ошибками,
используются специальные коды, которые умеют обнаруживать и исправлять ошибки. В
этом случае к каждому слову в памяти особым образом добавляются дополнительные
биты. Когда слово считывается из памяти, эти дополнительные биты проверяются,
что и позволяет обнаруживать ошибки.
Рассмотрим простую графическую
схему, которая четко иллюстрирует
идею кода исправления ошибок для 4-разрядных слов. Диаграмма Венна нсодержит 3
круга, A, В и С, которые вместе образуют семь секторов. В
качестве примера закодируем слово из 4 бит 1100 в сектора АВ, ABC, АС
и ВС, по одному биту в каждом секторе (в алфавитном порядке). Подобное
кодирование представлено на рисунке:
.
Далее добавляетсябит четности к
каждому из трех пустых секторов, чтобы сумма битов в каждом из трех кругов, A,
B, и С, получилась четной.
В круге А находится 4 числа: 0, 0, 1 и 1, которые в сумме
дают четное число 2.
В круге В находятся числа 1, 1, 0 и 0, которые также при
сложении дают четное число 2.
В круге C находятся числа 0, 1, 0 и 0, которые при сложении
дают нечетное число 1, и поэтому для
четности мы добавляем 1.
Рисунок соответствует кодовому слову, состоящему из 4 бит
данных и 3 бит четности.
Предположим, что бит в секторе АС изменился с 0 на 1.
Компьютер обнаруживает, что круги A и С являются нечетными. Единственный способ
исправить ошибку, изменив только один бит, — возвращение значения 0 биту в
секторе АС. Таким способом компьютер может исправлять одиночные ошибки
автоматически.
Алгоритм Хэмминга для слов любого размера
В коде
Хэмминга к слову, состоящему из n бит, добавляются r бит четности, при этом
образуется
слово длиной m + г бит. Биты нумеруются с единицы (а не с нуля), причем первым
считается крайний левый. Все биты, номера которых — степени двойки, являются
битами четности; остальные используются для данных.
Например,
к 16-разрядному слову нужно добавить 5 бит четности. Биты с номерами 1,2, 4, 8 и
16 — биты четности, все остальные — биты данных. Всего слово содержит 21 бит (16
бит данных и 5 бит четности). Каждый бит четности позволяет проверять
определенные битовые позиции. Общее число битов со значением 1 в проверяемых
позициях должно быть четным.