Увеличение производительности кэш-памяти. Увеличиваем размеры оперативной памяти

Самыми сильными качествами оперативной памяти являются ее высокие скорости чтения и записи информации. К сожалению, это достигается только за счет физических свойств и незначительности размеров модулей памяти.

Тем не менее, если вы будете «правильно» записывать данные в память и удалять оттуда ненужную информацию, ничто не сможет помешать вам насладиться высокими скоростями работы оперативной памяти:

  • С помощью утилиты Dataram RAMDisk вы можете использовать часть вашей оперативной памяти в качестве жесткого диска.
  • В нашей пошаговой инструкции ниже «Настраиваем бесплатный RAMDisk » мы показываем, как вы можете создать и настроить небольшого размера флеш-диск в оперативной памяти. О том, как вы можете использовать такой диск, например, для хранения кэша браузера Firefox, мы расскажем в нижеприведенной инструкции «Размещаем в RAM-диске кэш браузера ».
  • С помощью бесплатной программы CleanMEM вы можете автоматизированно или вручную удалять более ненужные данные из вашей оперативной памяти.

Увеличиваем размеры оперативной памяти

Если ваш компьютер, несмотря на все усилия по оптимизации, продолжает оставаться медлительным, вы можете предпринять еще кое-что, чтобы повысить производительность системы. Для этого вам потребуется заменить уже установленные модули памяти или добавить к ним новые. Хотя для этого и придется разобрать корпус вашего компьютера, но мы поможем вам подробной инструкцией и фотографиями.

  • О том, как идентифицировать тип используемой на вашем компьютере оперативной памяти и узнать о количестве свободных слотов, мы рассказываем в . Так вы можете узнать, какую оперативную память и в каком количестве можно установить в вашем случае.
  • Инструкцию на тему того, как вы можете установить новую оперативную память, мы тоже вам даем в .
  • В случае с ноутбуками замена отдельных компонент может оказаться несколько более сложной. Однако, именно к жестким дискам и модулям памяти, как правило, вы можете получить доступ через специальные «сервисные крышки», открывающиеся без необходимости в полной разборке корпуса. В этой статье мы даем вам .
  • Обратите внимание на условия гарантии на ваш компьютер - не потеряется ли она при вскрытии корпуса. В том случае, если у вас есть сомнения, для установки компонент или их замены лучше будет привлечь специалиста.

Размещаем в RAM-диске кэш браузера:

Настраиваем бесплатный RAMDisk

1 Бесплатная утилита


С помощью Starwind RAMDisk вы можете бесплатно настроить под Windows один или несколько RAM-дисков. Единственное ограничение: размеры каждого такого RAM-диска не могут превышать 1 Гбайт.

2 Может понадобиться драйвер


Windows должна думать, что в случае с RAM-диском речь идет как бы о жестком диске. Этого программное обеспечение добивается с помощью нового драйвера.

3 Обзор RAM-дисков


Windows может работать даже с несколькими RAM-дисками. Утилита представит вам обзор всех имеющихся в системе RAM-дисков.

4 Добавляем RAM-диск


Для добавления и настройки нового RAM-диска кликните на пункт «Add Device».

5 При настройке поможет ассистент


Сразу же вам на помощь приходит «ассистент», который поможет пройти самые важные шаги.

6 Ограничение в 1 Гбайт


В случае со свободно распространяемой версией программы размеры RAM-диска не могут превышать 1 Гбайт. Тем не менее, в большинстве случаев этого должно быть достаточно. Для разных действий вы можете использовать разные RAM-диски. Важно: обязательно поставьте галочку перед «Automount this Device», чтобы при каждой перезагрузке системы RAM-диск появлялся в «Проводнике» автоматически.

На многих сайтах компьютерной тематики обязательно найдутся ссылки на программы, которые обещают в один клик улучшить работу нашего компьютера и превратить старенький медленный компьютер в скоростной «космолет». о том, что подобные «однокликовые» оптимизаторы как минимум бесполезны, и что к вопросу оптимизации необходимо подходить совершенно иначе — более продуманно и уж никак не с инструментом вида «в один клик». Также встречаются и оптимизаторы оперативной памяти, которые в линейке бесполезных утилит стоят особо высоко, потому что они не только не приносят никакой пользы, но и снижают скорость работы вашего компьютера. И сейчас я объясню почему.

На чем основана популярность оптимизаторов памяти?

Популярность оптимизаторов памяти основывается на нашем убеждении, что малый объем свободной памяти — это очень плохо. Хотя на самом деле никакой трагедии в этом нет, потому что это хорошо! Это может показаться странным, но это так.

Что такое «свободная память»?

Действительно, свободной памяти всегда мало… Однако понятия немного изменились за последние пять-семь лет. Теперь свободная память большого объема означает не большую эффективность работы системы, а наоборот меньшую. Дело в том, что современные операционные системы оставляют свободным лишь тот объем памяти, который может экстренно потребоваться какому-то вновь стартовавшему приложению или работающей программе в процессе ее деятельности. Всю остальную зарезервированную память система расходует на запущенные программы и службы.

Что такое кэш?

Кэш — это данные, которые использовались системой или программами, и которые были зарезервированы в оперативной памяти на тот случай, если они еще понадобятся. Данные резервируются именно в памяти потому, что скорость чтения из оперативной памяти в разы выше, чем скорость чтения с жесткого диска. В случае необходимости система снова использует эти данные и без задержек выведет результат пользователю на экране. Если бы эти данные каждый раз резервировались на жестком диске, то скорость их загрузки была бы значительно ниже, что сильно бы замедляло скорость работы системы в целом и создавало повышенную нагрузку на жестких диск.

В качестве аналогии можно привести пример с кэшем браузера, который хранится на жестком диске компьютера (графика, стили, скрипты, флэш-анимация и прочее). Загружать все эти данные из интернета для каждой отделной страницы было бы слишком расточительно и занимало бы слишком много времени. Потому все современные браузеры резервируют эти «тяжелые» данные на жестком диске и подгружают только основной контент, что в разы ускоряет отображение страниц для пользователя. Подобный принцип используется и при работе системного кэша, который хранится в оперативной памяти для быстрого доступа к данным.

Поэтому стоит менять свои взгляды на память: в новых операционных системах понятие «свободная память» есть синоним бездарно пропадающих без дела ресурсов. Это всего лишь резерв, чтобы система могла выдать его очередному приложению на некоторое время, пока освобождается занятая память. Windows сама освободит нужный приложению объем оперативной памяти от данных кэша или перебросит данные редко используемых программ в файл подкачки.

Заметьте, делает все это операционная система самостоятельно, без помощи каких-либо оптимизаторов. Тогда зачем нужны такие «очистители памяти» и «бустеры»?

Как работают утилиты по освобождению памяти?

Основных принципов их работы всего два:

  • Они используют функцию EmptyWorkingSet из API Windows. Эта функция делает принудительный сброс неиспользуемых данных из памяти в файл подкачки на жестком диске компьютера. Визуально в диспетчере задач количество свободной памяти увеличится, но станут ли быстрее работать программы? Однозначно — нет. Потому что скорость чтения с диска значительно ниже, чем скорость чтения из оперативной памяти компьютера.
  • Второй метод «очистки памяти» — приложение-оптимизатор требует у системы под себя достаточно много памяти. Система сама принудительно освобождает память от кэша и неиспользуемых данных. Но минут через десять Windows поймет, что программе-оптимизатору эта память не требуется и отдаст ее обратно под кэш и данные других программ.

Что делать, чтобы реально помочь своей системе с оптимизацией памяти?

Ответ банален — просто не мешайте работать Windows и следуйте простым советам.

  • Старайтесь не запускать слишком много приложений без дела. Есть пользователи, которые после редактирования текста не закрывают окно Word. А документов за день они редактируют много и все они висят в фоне и «съедают» память.
  • Удалите ненужные приложения с компьютера, особенно если они «висят» в автозагрузке.
  • Добавьте память физически, если ваш компьютер это позволяет. Стоимость оперативной памяти сейчас весьма демократична, а эффект от увеличения памяти вы увидите сразу!

Все сторонние «оптимизаторы» и «бустеры» памяти как минимум бесполезны, а как максимум замедлят работу системы, показав кратковременное освобождение небольшого количества оперативной памяти.

Увеличение производительности кэш-памяти

Формула для среднего времени доступа к памяти в системах с кэш-памятью выглядит следующим образом:

Среднее время доступа = Время обращения при попадании + Доля промахов x Потери при промахе

Эта формула наглядно показывает пути оптимизации работы кэш-памяти: сокращение доли промахов, сокращение потерь при промахе, а также сокращение времени обращения к кэш-памяти при попадании. На рисунке 5.38 кратко представлены различные методы, которые используются в настоящее время для увеличения производительности кэш-памяти. Использование тех или иных методов определяется прежде всего целью разработки, при этом конструкторы современных компьютеров заботятся о том, чтобы система оказалась сбалансированной по всем параметрам.

Зачем увеличивать кэш?

Первичная причина увеличения объема встроенного кэша может заключаться в том, что кэш-память в современных процессорах работает на той же скорости, что и сам процессор. Частота процессора в этом случае никак не меньше 3200 MГц. Больший объем кэша позволяет процессору держать большие части кода готовыми к выполнению. Такая архитектура процессоров сфокусирована на уменьшении задержек, связанных с простоем процессора в ожидании данных. Современные программы, в том числе игровые, используют большие части кода, который необходимо извлекать из системной памяти по первому требованию процессора. Уменьшение промежутков времени, уходящих на передачу данных от памяти к процессору, - это надежный метод увеличения производительности приложений, требующих интенсивного взаимодействия с памятью. Кэш L3 имеет немного более высокое время ожидания, чем L 1 и 2, это вполне естественно. Хоть он и медленнее, но все-таки он значительно более быстрый, чем обычная память. Не все приложения выигрывают от увеличения объема или скорости кэш-памяти. Это сильно зависит от природы приложения.

Если большой объем встроенного кэша - это хорошо, тогда что же удерживало Intel и AMD от этой стратегии ранее? Простым ответом является высокая себестоимость такого решения. Резервирование пространства для кэша очень дорого. Стандартный 3.2GHz Northwood содержит 55 миллионов транзисторов. Добавляя 2048 КБ кэша L3, Intel идет на увеличение количества транзисторов до 167 миллионов. Простой математический расчет покажет нам, что EE - один из самых дорогих процессоров.

Сайт AnandTech провел сравнительное тестирование двух систем, каждая из которых содержала два процессора - Intel Xeon 3,6 ГГц в одном случае и AMD Opteron 250 (2,4 ГГц) - в другом. Тестирование проводилось для приложений ColdFusion MX 6.1, PHP 4.3.9, и Microsoft .NET 1.1. Конфигурации выглядели следующим образом:

Dual Opteron 250;

2 ГБ DDR PC3200 (Kingston KRX3200AK2);

Системная плата Tyan K8W;

Dual Xeon 3.6 ГГц;

Материнская плата Intel SE7520AF2;

ОС Windows 2003 Server Web Edition (32 бит);

1 жесткий IDE 40 ГБ 7200 rpm, кэш 8 МБ

На приложениях ColdFusion и PHP, не оптимизированных под ту или иную архитектуру, чуть быстрее (2,5-3%) оказались Opteron"ы, зато тест с.NET продемонстрировал последовательную приверженность Microsoft платформе Intel, что позволило паре Xeon"ов вырваться вперед на 8%. Вывод вполне очевиден: используя ПО Microsoft для веб-приложений, есть смысл выбрать процессоры Intel, в других случаях несколько лучшим выбором будет AMD.

Больше - не всегда лучше

Частота промахов при обращении к кэш-памяти может быть значительно снижена за счет увеличения емкости кэша. Но большая кэш-память требует больше энергии, генерирует больше тепла и увеличивает число бракованных микросхем при производстве.

Один из способов обойти эти трудности -- передача логики управления кэш-памятью от аппаратного обеспечения к программному.

«Компилятор потенциально в состоянии анализировать поведение программы и генерировать команды по переносу данных между уровнями памяти», -- отметил Шен.

Управляемая программным образом кэш-память сейчас существует лишь в исследовательских лабораториях. Возможные трудности связаны с тем, что придется переписывать компиляторы и перекомпилировать унаследованный код для всех процессоров нового поколения.

Windows был построен для использования на максимум машин с разными конфигурациями, и поэтому она обычно не оптимизирована для вашего компьютера и использования. Я также приглашаю вас, чтобы прочитать наши другие статьи статьи об оптимизации ваших компьютеров, если это уже сделано. «Не оптимизации», это на уровне процессора. Наши процессоры имеют кэшей, которые позволяют им положить в памяти некоторые данные для ускорения восстановления своих данных в будущем: http://fr.wikipedia.org/wiki/M%C3%A9moire_cache по словам процессоров, вы можете иметь 2 или 3 уровнях ()) кэша. По умолчанию Windows использует кэш L2 (Level 2) 256 Кбайт, который означает, что если ваш процессор может использовать больше пространства, (что обычно происходит и будет больше времени будет проходить с учетом постоянной эволюции процессоров), ограниченный Windows возможности вашего процессора! И я даже не говорить не кэш L3, потому что Windows не использовать его, это как если вы не имеете этот третий кэш-память является крупнейшим из 3 уровней процессор!

Его процессор информация:

Первое, что сделать это знать возможности CPU (процессор), это:

  • Скачать CPU – Z:-http://www.cpuid.com/softwares/cpu-z.html
  • Установите его и открыть его
  • Чтобы увидеть различные уровни кэша, у вас есть 2 возможности: 1 вкладку Нижний правый или 2

Для увеличения L2 кэша в Windows:

  1. В меню «Пуск», найдите и откройте «regedit» (база данных реестра) (как в любой манипуляции в базе данных реестра, рекомендуется выполнить резервное копирование его компьютера в случае возникновения проблем)
  2. Дважды щелкните на HKEY_LOCAL_MACHINE > система > CurrentControlSet > управления > Менеджер сессий > Управление памятью
  3. в правом окне вы должны найти ключ с именем «SecondLevelDataCache», щелкните правой кнопкой мыши на нем и нажмите «Изменить»
  4. Нажмите кнопку «Десятичная»
  5. И замените значение true вашего процессора. В моем случае, CPU – Z говорит мне 2 x 256, так что положить в моем случае значение 512.
  6. Нажмите кнопку «ОК»

Чтобы включить кэш L3 в Windows:

  1. Шаг 1-2 так же, как L2 и поэтому прибывают в том же окне на шаге 3.
  2. В свободной зоне в правом окне, щелкните правой кнопкой мыши и нажмите на «Новый» > «DWORD 32 бита»
  3. Переименуйте новый ключ на «ThirdLevelDataCache» (без кавычек)
  4. Щелкните правой кнопкой мыши на этот новый ключ переименован и нажмите «Изменить»
  5. Нажмите кнопку «Десятичная»
  6. Измените значение, что ваш процессор обозначается CPU – Z: в моем случае, я 3MBytes, так что я должен сделать 3 x 1024, что означает, что я должен положить 3072 как значение.
  7. Нажмите кнопку «ОК».

Перезагрузите компьютер. 1 после перезагрузки, ваш компьютер может быть немного медленнее, чем обычно, что из того факта, что Windows необходимо включить эти новые данные, но позже, ваш компьютер должен быть быстрее и мощнее! Лично я не медленно во время перезагрузки, 1-й, но я заметил улучшение в скорости программ, особенно на уровне multi-tasking, несмотря на тот факт, что ВОЗ уже SSD на моем компьютере! Примечание: этот трюк не разгона, и поэтому нет никакого риска перегрева, который может быть найден в оверклокинга.

Формула для среднего времени доступа к памяти в системах с кэш-памятью выглядит следующим образом:

Среднее время доступа = Время обращения при попадании + Доля промахов x Потери при промахе

Эта формула наглядно показывает пути оптимизации работы кэш-памяти: сокращение доли промахов, сокращение потерь при промахе, а также сокращение времени обращения к кэш-памяти при попадании. Ниже на рис. 7.3 кратко представлены различные методы, которые используются в настоящее время для увеличения производительности кэш-памяти. Использование тех или иных методов определяется прежде всего целью разработки, при этом конструкторы современных компьютеров заботятся о том, чтобы система оказалась сбалансированной по всем параметрам.

Метод Доля промахов Потери при промахеВремя обраще-ния при попадании Слож-ность аппаратуры Примечания
Увеличение размера блока + -
Повышение степени ассоциативности + - 1
Кэш-память с вспомогательным кэшем +
Псевдоассоциативные кэши +
Аппаратная предварительная выборка команд и данных + 2 Предварительная выборка данных затруднена
Предварительная выборка под управлением компилятора + 3 Требует также неблокируемой кэш-памяти
Специальные методы для уменьшения промахов + 0 Вопрос ПО
Установка приоритетов промахов по чтению над записями + 1 Просто для однопроцессорных систем
Использование подблоков ++ 1 Сквозная запись + подблок на 1 слово помогают записям
Пересылка требуемого слова первым +
Неблокируемые кэши +
Кэши второго уровня + 2 Достаточно дорогое оборудование
Простые кэши малого размера - + 0
Обход преобразования адресов во время индексации кэш-памяти + 2
Конвейеризация операций записи для быстрого попадания при записи + 1

Рис. 7.3. Обобщение методов оптимизации кэш-памяти

Кэш-память (или просто кэш, от англ. Cache - склад, тайник) предназначена для промежуточного хранения информации из системной памяти с целью ускорения доступа к ней. Ускорение достигается за счет использования более быстрой памяти и более быстрого доступа к ней. При этом в кэш-памяти хранится постоянно обновляемая копия некоторой области основной памяти.

Необходимость введения кэша связана с тем, что системная память персонального компьютера выполняется на микросхемах динамической памяти, которая характеризуется меньшей стоимостью, но и более низким быстродействием, по сравнению со статической памятью. Идея состоит в том, что благодаря введению быстрой буферной, промежуточной статической памяти можно ускорить обмен с медленной динамической памятью. По сути, кэш-память делает то же, что и применявшийся ранее конвейер команд, но на более высоком уровне. В кэш-памяти хранится копия некоторой части системной памяти, и процессор может обмениваться с этой частью памяти гораздо быстрее, чем с системной памятью. Причем в кэш-памяти могут храниться как команды, так и данные.



Выигрыш в быстродействии от применения кэша связан с тем, что процессор в большинстве случаев обращается к адресам памяти, расположенным последовательно, один за другим, или же близко друг к другу. Поэтому высока вероятность того, что информация из этих адресов памяти окажется внутри небольшой кэш-памяти. Если же процессор обращается к адресу, расположенному далеко от тех, к которым он обращался ранее, кэш оказывается бесполезным и требует перезагрузки, что может даже замедлить обмен по сравнению со структурой без кэш-памяти.

В принципе кэш-память может быть как внутренней (входить в состав процессора), так и внешней. Внутренний кэш называется кэшем первого уровня, внешний - кэшем второго уровня. Объем внутреннего кэша обычно невелик - типовое значение 32 Кбайт. Объем внешнего кэша может достигать нескольких мегабайт. Но принцип функционирования у них один и тот же.

Кэш первого уровня процессора 486 имеет четырехканальную структуру (рис. 7.9). Каждый канал состоит из 128 строк по 16 байт в каждой. Одноименные строки всех четырех каналов образуют 128 наборов из четырех строк, каждый из которых обслуживает свои адреса памяти. Каждой строке соответствует 21-разрядная информация об адресе скопированного в нее блока системной памяти. Эта информация называется тегом (Tag) строки.

Рис. 7.9. Структура внутреннего кэша процессора 486.

Кроме того, в состав кэша входит так называемый диспетчер, то есть область памяти с организацией 128 х 7, в которой хранятся 4-битные теги действительности (достоверности) для каждого из 128 наборов и 3-битные коды LRU (Least Recently Used) для каждого из 128 наборов. Тег действительности набора включает в себя 4 бита достоверности каждой из 4 строк, входящих в данный набор. Бит достоверности, установленный в единицу, говорит о том, что соответствующая строка заполнена; если он сброшен в нуль, то строка пуста. Биты LRU говорят о том, как давно было обращение к данному набору. Это нужно для того, чтобы обновлять наименее используемые наборы.

Адресация кэш-памяти осуществляется с помощью 28 разрядов адреса. Из них 7 младших разрядов выбирают один из 128 наборов, а 21 старший разряд сравнивается с тегами всех 4 строк выбранного набора. Если теги совпадают с разрядами адреса, то получается ситуация кэш-попадания , а если нет, то ситуация кэш-промаха .

В случае цикла чтения при кэш-попадании байт или слово читаются из кэш-памяти. При кэш-промахе происходит обновление (перезагрузка) одной из строк кэш-памяти.

В случае цикла записи при кэш-попадании производится запись как в кэш-память, так и в основную системную память. При кэш-промахе запись производится только в системную память, а обновление строки кэш-памяти не производится. Эта строка становится недостоверной (ее бит достоверности сбрасывается в нуль).

Такая политика записи называется сквозной или прямой записью (Write Through). В более поздних моделях процессоров применяется и обратная запись (Write Back), которая является более быстрой, так как требует гораздо меньшего числа обращений по внешней шине.

При использовании обратной записи в основную память записываемая информация отправляется только в том случае, когда нужной строки в кэше нет. В случае же попадания модифицируется только кэш. В основную память измененная информация попадет только при перезаписи новой строки в кэш. Прежняя строка при этом целиком переписывается в основную память, и тем самым восстанавливается идентичность содержимого кэша и основной памяти.

В случае, когда требуемая строка в кэше не представлена (ситуация кэш-промаха), запрос на запись направляется на внешнюю шину, а запрос на чтение обрабатывается несколько сложнее. Если этот запрос относится к кэшируемой области памяти, то выполняется цикл заполнения целой строки кэша (16 байт из памяти переписывается в одну из строк набора, обслуживающего данный адрес). Если затребованные данные не укладываются в одной строке, то заполняется и соседняя строка. Заполнение строки процессор старается выполнить самым быстрым способом - пакетным циклом, однако внешний контроллер памяти может потребовать использования более медленных пересылок.

Внутренний запрос процессора на данные удовлетворяется сразу, как только данные считываются из памяти, а дальнейшее заполнение строки может идти параллельно с обработкой данных. Если в наборе, который обслуживает данный адрес памяти, имеется свободная строка, заполнена будет именно она. Если же свободных строк нет, заполняется строка, к которой дольше всех не обращались. Для этого используются биты LRU, которые модифицируются при каждом обращении к строке данного набора.

Кроме того, существует возможность аннулирования строк (объявления их недостоверными) и очистки всей кэш-памяти. При сквозной записи очистка кэша проводится специальным внешним сигналом процессора, программным образом с помощью специальных команд, а также при начальном сбросе – по сигналу RESET. При обратной записи очистка кэша подразумевает также выгрузку всех модифицированных строк в основную память.

Отметим, что в пространстве памяти персонального компьютера имеются области, для которых кэширование принципиально недопустимо (например, разделяемая память аппаратурных адаптеров - плат расширения).

Режим пакетной передачи (Burst Mode), впервые появившийся в процессоре 486, предназначен для быстрых операций со строками кэша. Пакетный цикл обмена (Burst Cycle) отличается тем, что для пересылки всего пакета адрес по внешней шине адреса передается только один раз - в начале пакета, а затем в каждом следующем такте передаются только данные. Адрес для каждого следующего кода данных вычисляется из начального адреса по правилам, установленным как передатчиком данных, так и их приемником. Например, адрес каждого следующего слова данных вычисляется как инкрементированный адрес предыдущего. В результате время передачи одного слова данных значительно сокращается. Понятно, что обмен пакетными циклами возможен только с устройствами, изначально способными обслуживать такой цикл. Допустимая длина пакета не слишком велика, например, при чтении размер пакета ограничен одной строкой кэша.

Режим внутреннего умножения тактовой частоты процессора был предложен для того, чтобы повысить быстродействие процессора, но при этом устанавливать его в системные платы, рассчитанные на невысокие тактовые частоты. Например, модель процессора 486DX2-66 работает в системной плате с тактовой частотой 33, но эту частоту внутри себя преобразует в удвоенную частоту - 66 МГц. Это позволяет уменьшить общую стоимость системы, так как снижает требования к элементам системной платы.

Процессор 486 выпускался в 168- или 169-выводных корпусах. Напряжение питания - 5 В или 3,3 В. Введение пониженного напряжения питания 3,3 В связано с необходимостью снижения величины рассеиваемой мощности. Растущая тактовая частота и усложнение структуры процессоров приводят к тому, что рассеиваемая ими мощность достигает нескольких ватт. Для современных процессоров уже обязательно применение вентиляторов на корпусе процессора.