- •8. Система памяти
- •8.1. Базовые концепции
- •8.2. Быстродействие, объем и стоимость
- •8.3.1. Функция отображения
- •8.3.2. Алгоритмы замещения
- •8.3.3. Примеры технологий отображения
- •8.3.4. Организация Кэша в коммерческих процессорах
- •8.4. Производительность
- •8.4.1. Чередование операций
- •8.4.2. Частота попаданий и накладные расходы при промахах
- •8.4.3. Кэши на микросхеме процессора
- •8.4.4. Другие способы увеличения быстродействия
- •8.5. Виртуальная память
- •8.5.1. Преобразование адресов
- •8.6. Требования к управлению памятью
8.4. Производительность
Важнейшими факторами коммерческого успеха компьютера любой марки являются его производительность и стоимость. Цель создателей любой системы, конечно же, состоит в достижении наивысшей производительности при минимальной цене. Как правило, усилия конструкторов направлены на то, чтобы увеличить производительность системы, не повышая ее цену. Мерой оценки результата является соотношение цены и производительности. В данном разделе речь пойдет о производительности памяти и средствах ее повышения.
Производительность компьютерной системы зависит от того, насколько быстро команды программы могут извлекаться из памяти в процессор и насколько быстро они могут выполняться. Иерархия памяти, описанная в разделе 8.1, разработана исходя из оптимального соотношения цены и производительности. Суть иерархической организации памяти состоит в том, что процессор должен иметь возможность обращаться к памяти большого объема за минимальное время. Каждому уровню иерархии отводится очень важная роль. При этом особенно важны скорость и эффективность пересылки данных между различными уровнями. Хорошо, если обмен данными с наиболее быстрыми устройствами выполняется на скорости этих устройств. Если обмен производится между быстрым и медленным устройствами, достичь высокой скорости невозможно, но в случае параллельного доступа к более медленным устройствам к ней вполне можно приблизиться. Эффективным способом реализации параллельного доступа является чередование операций.
8.4.1. Чередование операций
Если основная память компьютера состоит из набора физически раздельных модулей с собственными буферными регистрами адреса (ABR) и данных (DBR), возможен одновременный доступ к более чем одному модулю. Таким образом можно повысить общую скорость пересылки слов в основную память и из нее.
Для определения среднего количества модулей, которые могут быть заняты в процессе вычисления, важно знать, как между ними распределены адреса. Существует два метода распределения адресов между модулями. Согласно первому из них, генерируемые процессором адреса декодируются так, как показано на рис. 8.13, а. Старшие k бит определяют один их n модулей, а младшие т бит — конкретное слово этого модуля. При обращении к последовательным адресам, как, скажем, в том случае, когда блок данных пересылается в кэш, в операции участвует только один модуль. В то же самое время устройства, поддерживающие прямой доступ к памяти (ПДП), могут обращаться к информации из других модулей памяти.
Второй и более эффективный способ адресации модулей продемонстрирован на рис. 8.13, б. Он называется чередованием адресов памяти. Согласно этому методу, мдадшие k бит адреса памяти выбирают модуль, а старшие т бит — конкретное слово данного модуля. При таком способе адресации последовательные адреса указывают на разные модули. Любой компонент системы, генерирующий запросы на доступ к последовательным адресам памяти, может поддерживать одновременную активность нескольких модулей. Благодаря этому ускоряется доступ к блоку данных и эффективнее используется вся система памяти. Чередование адресов памяти возможно лишь при условии, что количество модулей равно 2k иначе в адресном пространстве памяти будут пробелы.
а
б
Рис. 8.13. Адресация многомодульной системы памяти: последовательные слова располагаются в одном модуле (а), в последовательных модулях (б)
Пример 8.1 _____________________________________________________________________
Чередование адресов оказывает существенное влияние на быстродействие памяти. Проанализируем время, уходящее на пересылку блока данных из основной памяти в кэш в случае промаха чтения. Предположим, что у нас имеется кэш с блоками размером восемь слов, как в примере из раздела 8.3. После неудачной операции чтения блок, содержащий требуемое слово, должен быть скопирован из основной памяти в кэш. Кроме того, сделаем предположение, что аппаратное обеспечение имеет следующие характеристики. На пересылку адреса в основную память уходит один такт. Память состоит из относительно медленных микросхем DRAM, так что на доступ к первому слову уходит 8 тактов, а на доступ к каждому последующему — по 4 такта.
Примечание.
При чтении последовательных элементов данных из одной строки ячеек адрес этой строки декодируется только один раз, после этого поочередно задаются адреса последовательных столбцов массива и на доступ к соответствующим словам требуется вполовину меньше времени. Кроме того, один такт необходим для отправки слова в кэш.
В случае использования одного модуля памяти время загрузки блока в Кеш вычисляется так:
1 + 8 + (7 х 4) + 1 = 38 (тактов)
Теперь предположим, что память состоит из четырех модулей с чередующимися адресами (рис. 8.13, б). Когда начальный адрес блока достигает памяти, все четыре модуля начинают процедуру доступа к нужным данным с использованием старших битов адреса. После 8 тактов в регистре DBR каждого модуля оказывается одно слово данных. Эти слова по очереди пересылаются в кэш в течение последующих четырех тактов. В течение этого времени в каждом модуле выполняется обращение к следующему слову. Полученные слова, опять-таки, пересылаются в кэш в течение четырех тактов. Таким образом, общее время, необходимое на загрузку блока данных из памяти с чередованием адресов, составляет:
1 + 8 + 4 + 4 = 17 (тактов)
Получается, что чередование более чем вдвое сокращает время пересылки блока.
В микросхемах SDRAM технология чередования используется для ускорения доступа к последовательным словам данных. Память в большинстве микросхем SDRAM разделена на два или четыре банка массивов ячеек с чередованием адресов. Это позволяет ускорить передачу блока данных в основную память и из нее.