Но страницы не могут оставаться открытыми постоянно. Их необходимо закрывать и обновлять. Если страница закрывается в тот момент, когда контроллер памяти пытается считать из нее информацию, то операция чтения задерживается вплоть до повторной активации страницы. Это очень важно, так как теряются циклы процессора.
Эта функция BIOS задает количество циклов простоя, которое допускается до того, как контроллер памяти заставляет ожидающие страницы закрыться и обновиться.
В основе данной опции лежит концепция временной локализации (temporal locality). В соответствии с ней, чем дольше открытая страница простаивает, тем меньше вероятность того, что она снова понадобится до обновления. Поэтому лучше временно закрыть и обновить страницу, чтобы быстро открыть ее впоследствии, если в этом возникнет необходимость.
Вы можете настроить эту функцию на любое количество циклов от 0 Cycles до 48 Cycles. Указав значение, вы определяете, сколько циклов таймера открытые страницы могут простаивать, прежде чем они будут закрыты и обновлены. Вам также доступна опция Disabled.
Если вы выберите значение 0 Cycle (0 циклов), то контроллер памяти будет мгновенно обновлять открытые страницы при наличии цикла простоя.
Если вы выберите значение Disabled, то контроллер памяти не будет обновлять открытые страницы. Открытые страницы остаются активным до тех пор, пока не наступит время их обновления.
Большинство производителей по умолчанию используют значение 8 Cycles (8 циклов), что позволяет контроллеру памяти обновлять открытые страницы после восьми циклов простоя. Благодаря этому запрос команды чтения или записи, обращенный к данным страницам, может быть выполнен мгновенно.
Тем не менее, возможности этой функции ограничены настройкой цикла обновления в BIOS. Это значит, что при необходимости открытая страница будет обновлена независимо от того, достигло ли количество пустых циклов отметки, заданной опцией SDRAM Idle Lim it, или нет. Поэтому функция SDRAM Idle Limit может применяться только для того, чтобы вынудить обновление банка SDRAM до завершения цикла обновления, но не для задержки данного цикла.
Уменьшение количества циклов до 0 Cycles заставляет контроллер памяти закрывать все открытые страницы после того, как запросы перестают отправляться на контроллер памяти. То есть открытые страницы обновляются сразу после прекращения запросов. Теоретически, это может привести к повышению эффективности памяти, так как обновление открытых страниц маскируется во время пустых циклов. Но все запросы, поступающие после этого, должны ждать обновления страницы.
Так как обновления происходят нечасто (примерно один раз в 64 миллисекунды), их воздействие на производительность памяти можно считать минимальным. Преимущество маскировки обновлений во время пустых циклов невелико, особенно если учесть то, что современные системы памяти используют для маскировки обновлений обмен данными между банками.
При установке 0 Cycles запросы данных тоже могут задерживаться, так как один пустой цикл заставляет контроллер памяти закрыть все открытые страницы! На обычных компьютерах операции чтения из памяти пользуются принципом пространственной локализации (spatial locality), который указывает на то, что при считывании одного бита данных велика вероятность считывания и следующего бита. Поэтому закрытие открытых страниц с помощью функции SDRAM Idle Limit ведет к снижению производительности.
С другой стороны, ограничение в 0 или 8 пустых циклов гарантирует более частое обновление содержимого памяти, что позволяет избежать потери данных, вызванной неполным обновлением ячеек памяти. Если вы заставите контроллер памяти чаще обновлять открытые страницы, это позволит удерживать страницы открытыми достаточно долго, чтобы добиться завершения операции.
При работе на обычном компьютере рекомендуем выбирать опцию Disabled, чтобы максимально задерживать обновление страниц. Это позволяет уменьшить количество обновлений и увеличивает пропускную способность памяти.
Для приложений, которые выполняют множество произвольных запросов (например, для серверов), рекомендуем выбирать опцию 0 Cycle, так как последующие запросы, скорее всего, будут выполняться другими страницами. Если открытые страницы будут закрываться для обновления, это подготовит их для следующего запроса. Увеличенное количество обновлений вполне компенсируется повышенной интеграцией данных.
Также вы можете увеличить значение функции Refresh Interval или Refresh Mode, чтобы повысить пропускную способность и поддерживать интеграцию данных в ячейках памяти. Так как очень большие интервалы обновления (например, 64 или 128 m sec) могут привести к потере данных в ячейках, настройка параметра SDRAM Idle Limit на 0 Cycle или 8 Cycles позволяет ячейкам памяти чаще обновляться. Причем высока вероятность того, что подобные обновления будут происходить во время пустых циклов. В результате, как кажется, нам удается решить сразу две задачи, – увеличить время активации банка при высокой загрузке контроллера памяти и сделать обновления более частыми при простое контроллера памяти.
Однако в действительности этот способ не является предпочтительным, так как он зависит от возможности памяти к созданию пустых циклов для активации обновлений. Если ваша системная память подвергается большой нагрузке, у нее может не быть пустого цикла, который позволил бы активировать обновление. Это способно привести к потере данных в ячейках памяти.
При работе на обычном компьютере рекомендуем правильно настроить интервал обновления и выбрать опцию Disabled. Это позволит увеличить пропускную способность памяти путем максимальной задержки обновлений, а также сохранить интеграцию данных в ходе регулярных циклов обновления.
Для серверов рекомендуем правильно настроить интервал обновления и выбрать опцию 0 Cycle. Благодаря этому все открытые страницы будут обновляться при наличии пустого цикла.
SDRAM Leadoff Command (Команда времени действия SDRAM)
Обычные опции: 3, 4.
Эта опция BIOS называется не совсем верно. Ее следовало бы переименовать в SDRAM Command Leadoff Time (Время действия команды SDRAM).
Чтобы выполнить требования системы, контроллер памяти отправляет сигналы в адресную и командную строку на один цикл раньше, чем нужно. Это дает контроллеру памяти дополнительное время для выполнения запросов материнской платы.
Вы можете подумать, что раннее обращение к адресной и командной строке улучшает производительность; это не так. Контроллер памяти отправляет сигналы раньше, чем необходимо, но они достигают модуля памяти в момент, когда ни один из банков памяти не является активным.
Когда сигналы обращаются к модулю памяти, конечный банк активируется, и контроллер памяти начинает чтение. Так как адресная и командная строка были вызваны заранее, активация конечного банка памяти управляется временем действия команды.
По определению, время действия команды – это период между добавлением адреса/команды и активацией банка памяти. Данная функция BIOS позволяет изменить время действия команды в соответствии с параметрами материнской платы и модуля памяти.
Чем меньше время действия команды, тем раньше может быть активирован банк памяти. Это обеспечивает более быстрый доступ к модулю памяти. Рекомендуем настроить функцию SDRAM Leadoff Command на 3 (3 цикла), чтобы добиться повышения производительности памяти.
Однако ваша материнская плата и память могут не поддерживать время действия команды, равное трем циклам. Если ваша система начнет работать нестабильно, измените настройку опции на 4 (4 цикла).
SDRAM Page Closing Policy (Настройка закрытия страниц SDRAM)
Обычные опции: One Bank, All Banks.
Эта функция BIOS является аналогом функции SDRAM Precharge Control.
Контроллер памяти позволяет удерживать открытыми до четырех страниц одновременно. В одном банке памяти может быть открыто не более одной страницы. Если запрос на чтение из SDRAM попадает на открытую страницу, он может быть выполнен мгновенно. Конечно, это повышает производительность.
Если запрос на чтение не может быть выполнен ни одной из четырех открытых страниц, возникают две возможности. Одна из страниц закрывается, чтобы открыть нужную, либо закрываются все открытые страницы. В любом случае запросу приходится ждать полный цикл задержки.
Данная опция определяет, должна ли при наличии пропуска страницы система сохранять все страницы открытыми (закрывая только одну текущую страницу), либо закрывать их (все текущие страницы).
Настройка One Bank (Один банк) вынуждает контроллер памяти закрывать только одну страницу при наличии пропуска страницы. Это позволяет системе получить доступ к другим открытым страницам всего за один цикл.