Настройка подсистемы памяти в BIOS SETUP
Пожалуй, наиглавнейшим моментом в вопросе четкого функционирования компьютера является настройка параметров различных подсистем из BIOS Setup, мимо которой пройти просто невозможно. Основная система ввода/вывода (BIOS — Basic Input Output System) является своего рода "прослойкой" между аппаратной (комплектующие) и программной (операционная система) частями ПК. В ней содержится информация относительно установленных компонент и общих настроек всей системы. Однако большинство установок имеют свою специфику, определяя некоторые особенности и тонкости функционирования управляемых ими подсистем. Систему можно настроить на максимальную эффективность, установив соответствующие параметры на максимально возможные значения с точки зрения производительности, но при этом нет никакой гарантии, что компьютер будет работать надежно и без сбоев. С другой стороны, систему можно настроить на максимальную отказоустойчивость, "загрубив" при этом производительность. Каждая из этих крайностей имеет свои плюсы и минусы, поэтому обычно стремятся достичь "золотой середины", варьируя значения соответствующих пунктов настройки BIOS Setup. Таким образом, можно получить оптимально сбалансированные параметры и добиться максимально возможной производительности при обеспечении стабильного функционирования ПК.
Основными моментами в данном вопросе являются установки параметров, предназначенных для конфигурирования системного ОЗУ (оперативной памяти): всевозможные задержки, специфические режимы работы, общие схемы функционирования и т.д. — все, что касается этого вопроса можно найти в разделе "Advanced Chipset Setup" (или "Chipset Features Setup") в BIOS Setup.
Auto Configuration
Этот пункт в настройке является, пожалуй, основным, однако встречается не в каждой системе — точнее сказать, на всех материнских платах для 486-совместимых процессоров и на большей части Pentium-совместимых материнских плат. Он определяет возможность изменений в настройках подсистемы памяти типа FPM DRAM и EDO DRAM, указывая длительность цикла обращения (минимальный промежуток времени в течение которого можно выполнить циклическое обращение по произвольный адресам) к данным: 60ns (оптимизировано для микросхем памяти с временем доступа 60ns), 70ns (оптимизировано для микросхем памяти с циклом доступа 70ns) и Disable (в данном случае разрешить "ручную" настройку имеющихся параметров подсистемы памяти). При асинхронной передаче данных гарантируется, что определенная операция будет полностью осуществлена за фиксированный промежуток времени, поскольку в данном случае функционирование памяти не привязывается к частоте системной шины. Поэтому, если данные появляются сразу за фронтом системного синхросигнала, то они будут считаны лишь по приходу следующего фронта тактового импульса. Значения 60/70 ns данного пункта указывают системе, что надо использовать предустановки, занесенные производителем материнской платы заранее, которые обеспечивают стабильную работу памяти, исходя из установленной длительности цикла доступа. Понятно, что при этом наверняка теряется некоторая часть максимально возможной производительности. Поэтому, чтобы дать возможность проведения гибкой конфигурации, этот параметр необходимо установить в положение Disable, открыв доступ к другим установкам настройки подсистемы памяти.
DRAM Read Timing
Параметр, характеризующий скорость чтения данных из массива памяти. Сам массив представляет собой некое подобие координатной сетки, где есть положение по горизонтали (адрес строки) и по вертикали (адрес столбца). Упрощенно, на пересечении каждого конкретного адреса строки и столбца находится единичный "строительный элемент" массива — ячейка памяти, которая представляет собой ключ (транзистор) и запоминающий элемент (конденсатор). Логическое состояние ячейки (физически — заряд в конденсаторе) представляется довольно просто: есть заряд — "1", нет заряда — "0".
Для чтения содержимого из одной ячейки памяти в самом простом случае необходимо пять тактов. Сначала на шину выставляется адрес строки (первая половина полного адреса ячейки памяти). Затем подается строб RAS# (Row Address Srobe), который является своего рода контрольным сигналом (защелка адреса строки), подтверждающим полученный адрес строки для записи в специально отведенное место — регистр микросхемы памяти. После этого передается адрес столбца (вторая половина полного адреса ячейки памяти), следующим тактом за которым идет сигнал подтверждения принимаемого адреса (защелка адреса столбца) — CAS# (Column Address Strobe). И, наконец, следует операция чтения из ячейки памяти, контролируемая сигналом разрешения записи — WE# (Write Enable). Однако если считываются соседние ячейки, то нет надобности передавать каждый раз адрес строки или столбца, и процессор "считает", что необходимые данные расположены по соседству. Поэтому на считывание каждой последующей ячейки понадобится уже три такта системной шины. Отсюда и берет свое начало существование определенных схем функционирования (тайминги, в широком смысле этого понятия, обычно означающего временной параметр) конкретного фундаментального типа ОЗУ: xyyy-yyyy-..., где x — количество тактов шины, необходимое для чтение первого бита, а у — для всех последующих.
Так, цикл доступа процессора к памяти состоит из двух фаз: запроса (Request) и ответа (Response). Фаза запроса состоит из трех действий: подача адреса, подача запроса на чтение и подтверждение (необязательно). В фазу ответа входит выдача запрашиваемых данных и подтверждение приема. Довольно часто происходит чтение четырех смежных (соседних) ячеек, поэтому многие типы памяти специально оптимизированы для данного режима работы, и в сравнительных характеристиках быстродействия обычно приводится только количество циклов, необходимое для чтения первых четырех ячеек. В данном случае речь идет о пакетной передаче, которая подразумевает подачу одного начального адреса и дальнейшую выборку по ячейкам в установленном порядке — такого рода трансфер улучшает скорость доступа к участкам памяти с заранее определенными последовательными адресами. Понятно, что в случае необходимости чтения данных с непоследовательного адреса в "цепочке" пакетной передачи возникает разрыв и первый бит следующего произвольного обращения (адреса) считается со стандартным пятитактным доступом, описаваемым выше. Обычно процессор формирует адресные пакеты на четыре передачи данных вперед, поскольку предполагается, что система автоматически возвратит данные из указанной ячейки и трех следующих за ней. Преимущество такой схемы очевидно: на передачу четырех порций данных требуется всего одна фаза запроса.
Например, для памяти типа FPM DRAM применяется схема 5333-3333-..., в отличие от первой разновидности динамического ОЗУ, где применялась самая простая — 5555-5555-... Для памяти EDO DRAM после первого считывания блока данных увеличивается время доступности данных того ряда, к которому происходит доступ в настоящий момент, при этом уменьшается время получения пакета данных, т.к. схема доступа уже 5222-2222-... Синхронное ДОЗУ типа SDRAM, в отличие от асинхронного (FPM и EDO), "свободно" от передачи в процессор сигнала подтверждения и выдает/принимает данные в строго определенные моменты времени (только совместно с сигналом синхронизации системной шины), что исключает несогласованность между отдельными компонентами, упрощает систему управления и дает возможность перейти на более "короткую" схему работы: 5111-1111-... Аналогичную временную диаграмму имеет и пакетное ДОЗУ на основе схемы расширенного доступа к данным (BEDO DRAM) — последняя разновидность асинхронного типа динамической памяти.
Поэтому в рассматриваемом пункте меню настройки можно встретить варианты допустимых значений для циклов обращения к памяти: x333 или x444 оптимально подходит для FPM DRAM, x222 или x333 — для EDO DRAM, и x111 или x222 — для BEDO DRAM (и SDRAM). Варьируя эти параметры и стараясь использовать более короткую диаграмму для конкретного типа памяти, можно добиться некоторого повышения производительности.
DRAM Write Timing
Параметр, аналогичный по принципу предыдущему, с той разницей, что происходит настройка произведения операций записи. Для фундаментальных типов памяти FPM DRAM и EDO DRAM значение рассматриваемого параметра одинаково, поскольку выигрыш от принципа EDO можно получить только на операциях чтения. Соответственно, устанавливаемые значения аналогичны "DRAM Read Timing", принимая во внимание особенности архитектуры используемой памяти.
Fast RAS-to-CAS Delay
Установка, характеризующая задержку в циклах тактового сигнала между стробами RAS# и CAS# (как уже говорилось, по сигналам RAS# и CAS# внутрикристальные триггеры фиксируют части полного адреса — строки и столбца), за которую данные из накопителя ДОЗУ передаются на выходные усилители (SenseAmp, играющие роль временного буфера и усилителя уровня, поскольку сигнал, выходящий из микросхемы, достаточно слабый), и обычно составляющую 2ns. Эта задержка вводится умышленно и необходима для того, чтобы было достаточно времени для однозначного определения адреса строки (сигнал RAS#) и столбца (сигнал CAS#) ячейки. Иными словами, данный параметр характеризует интервал между выставлением на шину контроллером памяти сигналов RAS# и CAS#. Понятно, что чем меньше данное значение, тем лучше, однако не стоит забывать, что за ним стоит возможность самих микросхем памяти реализовать установленную задержку, поэтому выбор здесь неоднозначен.
DRAM RAS Precharge Time
Параметр, определяющий время повторной выдачи (период накопления заряда, подзаряд) сигнала RAS#, т.е. через какое время контроллер памяти будет способен снова выдать сигнал инициализации адреса строки. Это связано с необходимостью проведения фаз обновления содержимого ячеек памяти. Данная установка может принимать значения 3 или 4 (в циклах шины), и во временном отношении аналогична предыдущей — чем меньше, тем лучше. Иногда возможен вариант, когда можно выставить конкретную схему циклов регенерации или прямо указать время обновления содержимого строки памяти, выражаемое в микросекундах (ms).
Для поддержания целостности информации заряд конденсаторов следует периодически обновлять (регенерировать), читая содержимое всего ряда целиком и заново перезаписывая. Устройствам памяти с динамической "природой" присущ один довольно серьезный недостаток - высокая вероятность образования ошибки, когда данные, записанные в определенную ячейку, при считывании могут оказаться иными, что связано с циклами регенерации заряда в ячейке памяти. Для контролирования и исправления этого недостатка существует два способа проверки целостности данных: контроль бита четности и код коррекции ошибок. Как уже упоминалось, элементарная ячейка динамической памяти состоит из одного конденсатора и запирающего транзистора, что дает возможность достичь большей плотности размещения элементов (большее количество ячеек на единицу площади) по сравнению со статической. С другой стороны, данная технология имеет ряд недостатков, главным из которых является то, что заряд, накапливаемый на конденсаторе, теряется со временем. Несмотря на то, что при топологии конденсаторов ячеек динамической памяти используется хороший диэлектрик с электрическим сопротивлением в несколько тераом (х1012 Оhm), заряд теряется достаточно быстро, так как размеры одного конденсатора микроскопические, а емкость мизерна — порядка 10-15 F. При такой емкости на одном конденсаторе накапливается всего порядка 40000 электронов.
Среднее время утечки заряда в массиве ДОЗУ составляет порядка сотни или даже десятков миллисекунд, поэтому его необходимо перезаряжать с 64ms интервалом, согласно требованиям JEDEC Std 21-C. Данные из ядра считываются и передаются на усилители уровня, после чего, не поступая на выход, записываются обратно в массив. Стандартно, банк микросхемы памяти (массив ячеек, имеющий определенную организацию структуры, состоящей из строк и столбцов) содержит или 2k, или 4k, или 8k строк (точнее, или 2048, или 4096, или 8192), доступ к которым позволяет производить одновременную регенерацию всего массива, относящегося к этой строке. Как бы то ни было, наилучшая схема регенерации заключается не в одновременном обновлении содержимого ячеек всех строк, а в поочередном обновлении индивидуально каждой строки. В результате, взяв за основу 4k-массив (средняя плотность), можно вычислить стандартную нормальную схему регенерации одной строки, поделив полный цикл обновления на количество строк: 64000ms/4096=15.625ms. В случае, если банк содержит более 4k строк, любые две строки могут обрабатываться одной командой, или все решается простым кратным увеличением частоты регенерации — с точностью до наоборот, если банк содержит менее 4096 строк. Если рассматривать возможные варианты решения проблемы обновления содержимого массива ДОЗУ, на данный момент известны три различных метода регенерации данных.
Регенерация одним RAS (ROR — RAS Only Refresh). В данном случае адрес регенерируемой строки передается на шину адреса, в ответ на что выдается сигнал RAS# (точно так же, как при чтении или записи). При этом выбирается строка ячеек, и данные из них временно поступают на внутренние цепи (точнее, на выходные усилители уровня) микросхемы, после чего записываются обратно. Так как сигнала CAS# не следует, цикл чтения/записи не начинается. В следующий раз передается адрес следующей строки и так далее, пока не восстановятся все ячейки, после чего цикл регенерации повторяется. Недостатком этого метода, безусловно, является то, что занимается шина адреса, и в момент регенерации блокируется доступ к другим подсистемам компьютера. Это сильно снижает общую производительность, поскольку подобного рода регенерацию в микросхемах памяти необходимо осуществлять довольно часто.
CAS перед RAS (CBR — CAS Before RAS). При нормальном цикле чтения/записи сигнал RAS# всегда приходит первым, а за ним следует CAS#. Если же CAS# приходит раньше RAS#, то начинается специальный цикл регенерации (CBR), при котором адрес строки не передается, а микросхема использует свой собственный внутренний счетчик, содержимое которого увеличивается на 1 (дискретное инкрементирование) при каждом цикле CBR. Этот режим позволяет регенерировать память не занимая шину адреса, что, безусловно, более экономично в плане использования системных ресурсов.
Механизм автоматической регенерации (AutoPrecharge) или саморегенерации (SEREf — SElf REfresh) обычно используется в режиме энергосбережения, когда система переходит в состояние "сна" и формирователь синхросигналов деактивируется. Режим расширенной регенерации (EREf — Extended REfresh) не является отдельным методом, характеризующим саму способность микросхемы, а, как и сокращенная (REREf — REduce REfresh), определяет только режим периодичности обновления содержимого массива относительно нормального цикла (Normal, 15.625ms), и состоит в "подмножестве" цикла саморегенерации. При EREf энергия экономится потому, что теперь регенерацию страницы (строки) можно производить значительно реже: скажем, через 125.2ms, а не через 15.625ms, как это происходит при стандартной регенерации. Сокращенная регенерация рекомендуется к использованию в микросхемах памяти большой емкости (64Mbit устройства и более емкие) и в модулях памяти с большим количеством микросхем (16 и более). Саморегенерация используется в периоды микропотребления (общее состояние системы — Suspend), когда содержимое микросхемы памяти регенерируется самостоятельно путем инкрементирования своего внутреннего счетчика — это значит, что все функции управления можно выключить. В таком состоянии обновление данных в ячейках по вышеописанным методам невозможно, потому как некому посылать сигналы на регенерацию, и микросхема памяти делает это сама — в ней запускается свой собственный генератор, который тактирует ее внутренние цепи.
Так, метод ROR использовался еще в первых микросхемах DRAM и на данный момент практически не применяется. Метод CBR активно используется в микросхемах EDO DRAM. Саморегенерация рекомендована для систем на основе SDRAM и поддерживает значения: 3.906ms (0.25х-сокращенная), 7.812ms (0.5х-сокращенная), 15.625ms (нормальная), 31.25ms (2х-расширенная), 62.5ms (4х-расширенная) и 125.2ms (8х-расширенная). Понятно, что сама способность конкретной микросхемы памяти (контролируемая со стороны "закрытых" установок в BIOS или саморегенерация) определяется архитектурно и зависит от типа используемой памяти. Однако выставив наибольший временной цикл, можно "не вписаться" в общую временную диаграмму, поэтому производитель модуля памяти такого рода информацию просто заносит в специально отведенное место — микросхему SPD, которой оснащено большинство современных модулей DIMM. В случае, если таковой микросхемы на используемом модуле нет, то можно, при условии, что это позволяет гибкая настройка BIOS Setup, самостоятельно выставить периодичность проведения регенерации, исходя из стандартных 15.625ms для 4k массива банка, кратно уменьшая (сокращенная) цикл при увеличении количества строк, или увеличивая (расширенная) цикл при уменьшении количества строк — все зависит от логической организации (количество банков и структура банка) микросхемы и их количества в конкретном модуле памяти.
MA Wait State
Период ожидания до переключения адреса, который позволяет установить или снять дополнительный такт задержки до начала обращения к конкретной микросхеме памяти (подача сигнала выбора кристалла, CS#). Своего рода "контрольной точкой" срабатывания является переключение сигнала MA# (Memory Address) с одно- или двухтактным опережением CS#. Более подробно этот пункт будет рассмотрен ниже применительно к синхронным системам.
DRAM R/W Leadoff Timing
Данный пункт характеризует число тактов, затрачиваемое подсистемой памяти при подготовке выполнения операции чтения/записи данных, определяя их количество на шине до выполнения операции в самой микросхеме. При этом возможны следующие значения: 8/7 и 7/5 — количество тактов для чтения/записи соответственно. Как и любой параметр, характеризующий задержку, его необходимо стараться установить с меньшим значением.
Speculative Leadoff
Параметр, включающий (Enable) и выключающий (Disable) режим опережающей выдачи сигнала чтения (READ), разрешение которого позволяет выдавать его немного ранее, чем адрес будет декодирован (однозначно определен при помощи стробов RAS# и CAS#). Поскольку на определение адреса необходимой ячейки требуется определенное время, система теряет такты, которые могут использоваться с пользой. Поэтому включение этого параметра дает возможность считать следующий адрес ячейки, пока идет процесс определения координаты ячейки, адрес которой считался ранее. Данный прием также позволит в некоторой степени сэкономить время и уменьшить количество "холостых" тактов системной шины.
DRAM ECC/Parity Select
Параметр, управляющий режимами контроля целостности данных: кода коррекции ошибки (ECC — Error Correction Code) и проверки четности (Parity). Нередко встречается также пункт "DRAM Data Integrity Mode".
По характеру ошибки памяти можно разделить на два типа. Временные ошибки (сбои, Soft Errors), связанные с воздействием космических лучей, альфа-частиц, посторонних и внутренних шумов, приводят обычно к однократному изменению информации, и чаще всего данные записываются в ту же ячейку повторно без ошибок. Постоянные ошибки (отказы, Hard Errors), возникающие вследствие неисправности самих микросхем памяти, зачастую приводят к потере информации в целом столбце или даже во всей микросхеме.
В случае использования схемы Parity один бит четности сохраняется в специально выделенной области памяти вместе с каждыми восемью битами информации. Бит четности формируется так: подсчитывается количество "единиц" в двоичном представлении байта: если оно четное, то данный бит принимает значение "1", если нет — "0". После этого данные записываются в оперативную память. При считывании этого байта данных из ячейки к нему "приписывается" бит четности и затем анализируется 9bit значение. Если в этом числе нечетное количество единиц, то бит четности "обрезается" и байт информации передается на обработку — в противном случае генерируется ошибка четности и работа компьютера приостанавливается с выдачей сообщения. Если изменено четное количество бит информации, проверка бита четности не сработает. Однако, несмотря на то, что схема контроля четности может выявлять максимум двухбитные ошибки, исправлять их она не способна.
Механизм ECC может не только выявлять, но и исправлять ошибки, а также генерировать ошибку четности. Обычно данная схема работы основывается на использовании кодов Хемминга (помехоустойчивые коды), позволяющих выявлять и исправлять один неверный бит или же найти две и исправить одну ошибку (корректирующие свойства кода определяются его избыточностью). Коррекция ошибок намного сложнее контроля четности и используется в системах, где необходима передача большого количества информации с минимальной вероятностью ошибки. В любом случае, будь то схема Parity или ECC, использование данных типов памяти может снизить производительность: если контроль четности может "затормозить" систему на 2—3 %, то у ECC этот показатель иногда доходит до 10% в зависимости от сложности используемого алгоритма. Кроме этого, 72bit модуль ECC дороже своего обычного 64bit "аналога" при условии одинаковой емкости, поэтому выбор использования данных типов памяти на ПК является исключительно делом каждого.
Наличие в ПК модуля, поддерживающего схему ECC, определяется самой системой, и если таковые не обнаружены, пункт меню "DRAM Data Integrity Mode" изменить невозможно — "серое" поле с индикацией "Non-ECC". Разрешение (Enable) же пункта "DRAM ECC/Parity Select" при условии, что в системе используются соответствующие модули памяти, приводит к активации контроля коррекции ошибки или к включению механизма контроля четности.
SDRAM Configuration
Параметр, определяющий способ настройки подсистемы памяти на основе SDRAM и принимающий значения: by SPD (необходимые параметры считываются из специальной микросхемы последовательного детектирования, устанавливаемой на модуле памяти, и полностью оптимально согласованы с типом и индивидуальными характеристиками установленных на нем микросхем) или Manual (разрешено варьировать определенные параметры "вручную", причем соответствующие пункты меню этих параметров становятся доступными для изменения). Суть данной установки сводится к тому, что в случае использования схемы Manual разрешается доступ к изменению параметров "SDRAM CAS Latency Time", "SDRAM RAS-to-CAS Delay" и "SDRAM RAS Precharge Time", которые образуют основную тайминговую схему работы памяти (CL-tRCD-tRP соответственно) и позволяют осуществлять более гибкую настройку подсистемы на основе синхронного ДОЗУ — все аналогично рассматриваемому ранее параметру "Auto Configuration". В случае использования схемы SPD требуемые значения автоматически загружаются из микросхемы EEPROM, в которой производитель конкретного модуля памяти заранее "прошивает" необходимые значения временных параметров (таймингов), гарантируя стабильную работу.
При синхронной работе с памятью операции выполняются строго с тактами системного генератора. При этом само управление синхронного ДОЗУ несколько усложняется относительно асинхронного, поскольку приходится вводить дополнительные защелки, хранящие адреса, данные и состояния сигналов управления. В результате этого вместо продолжительности цикла доступа, применяющегося для характеристики в асинхронных системах, для описания быстродействия SDRAM прибегают к указанию длительности периода синхросигнала (tCLK — Clock time — величина, обратно пропорциональная частоте следования синхроимпульсов). Поэтому в некоторых разновидностях BIOS возможно указание непосредственно длительности периода синхросигнала: 7ns (максимальная частота функционирования данного модуля — 143MHz, следовательно, используемые временные схемы будут оптимизированы для устройств памяти с параметром -7, указываемом непосредственно на самой микросхеме), 8ns (максимальная частота функционирования данного модуля — 125MHz, поэтому временные установки будут оптимизированы для приборов памяти с параметром -8) и 10ns (максимальная частота функционирования данного модуля — 100MHz, поэтому временные установки будут оптимизированы для микросхем памяти с параметром -10), которые работают аналогично описываемым ранее в пункте "Auto Configuration", но встречаются сравнительно редко.
Стандартно, массив микросхемы содержит логические банки (Bank), количество и организация которых определяется индивидуальностью (фундаментальностью) самой архитектуры и конечной емкостью микросхемы. Банки содержат логические строки (Row), называемые также страницами (Page, во избежание путаницы с физическими строками), которые, в свою очередь, содержат столбцы (Column) — матрица, образуемая такой иерархией, и является ядром микросхемы памяти. Строка — это объем считываемых или записываемых данных в один из нескольких банков ядра. Столбцы — подмножества строк, которые считываются или записываются в индивидуальных фазах операций чтения/записи.
Рассмотрим последовательно продвижение данных по микросхеме. Обычно цикл начинается по приходу команды активизации банка, которая выбирает и активирует необходимый банк и строку в его массиве. В течение следующего цикла информация передается на внутреннюю шину данных и направляется на усилитель уровня (как говорилось ранее, своего рода "накопитель", играющий роль как усилителя сигнала, так и временного буфера). Когда усиленный уровень сигнала достигает необходимого значения, данные запираются (Latch) внутренним синхросигналом - этот процесс, именуемый задержкой между определением адреса строки и столбца (tRCD — RAS#-to-CAS# Delay), занимает 2—3 цикла системной шины (количество периодов синхросигнала). После этой задержки команда чтения может подаваться совместно с адресом столбца, чтобы выбрать адрес первого слова (в данном случае, объем данных, передаваемых за один цикл, равный ширине шины данных микросхемы памяти), которое надо считать с усилителя уровня. После выставления команды чтения выполняется двух- или трехтактная задержка строба выбора столбца (задержка сигнала CAS# — CAS# Latency или просто CL), в течение которой данные, выбранные из усилителя уровня, синхронизируются и передаются на внешние выводы микросхемы (линии DQ). За первым словом следуют остальные в течение каждого последующего синхросигнала, отрабатывая полную установленную длительность пакета (Burst Length) — количество непрерывно передаваемых слов за одну фазу передачи данных. Лишь после того, как вся информация передалась, данные можно возвратить обратно из усилителя в строку пустых ячеек массива для восстановления его содержимого, что занимает 2—3 тактовых цикла. Справедливости ради необходимо заметить, что вопреки правильной записи последовательности tRCD-CL-tRP обычно основная тайминговая схема имеет вид CL-tRCD-tRP, таким образом указывая степень важности составляющих ее параметров. Динамический, а значит обладающий свойством ослабевания сигнала и утечки, по своей природе массив ячеек должен регенерировать их содержимое. Периоды восстановления заряда устанавливаются регенерирующим контроллером программы мониторинга, выполняемой счетчиком регенерации (Refresh Counter) — подобное восстановление требует 7—10 циклов, в течение которых поток данных прерывается.
Процедура записи в рассмотрении временной схемы доступа аналогична фазе чтения с разницей в дополнительном интервале tWR, характеризующем период восстановления интерфейса после проведения операции. Иными словами, период восстановления в фазе записи — это обычно двухтактная задержка между окончанием выдачи данных на шину (последний импульс по Data Bus) и инициированием нового цикла. Этот временной интервал обеспечивает восстановление интерфейса после проведения операции записи и гарантирует корректность ее выполнения. В результате, по окончанию передачи последнего слова в фазе записи, строка банка, к которой происходит обращение, входит в стадию регенерации не сразу, а по истечении дополнительной задержки, минимальное значение которой обуславливается наименьшим интервалом, в течение которого ожидается корректное завершение текущей операции записи. Поэтому время активности страницы в фазе записи становиться больше значения tRAS фазы чтения на длительность периода восстановления, tWR.
SDRAM CAS Latency Time
Задержка выдачи сигнала CAS# для микросхемы синхронного ДОЗУ является одной из важнейших характеристик и обозначает минимальное количество циклов шины (Clock Period) от момента "фиксации" запроса данных стробом CAS# до момента их устойчивого определения и считывания. Предполагается, что на момент прихода фронта сигнала CAS# на адресных входах имеются правильные данные. Однако, поскольку везде существуют временные задержки (в том числе и внутри самой микросхемы), то специально отводится некоторое время на их преодоление, причем в силу разброса параметров задержки для разных адресных линий могут быть разными — это и есть в данном случае CAS Latency (CL), а CL2 и CL3 — время вводимой задержки в тактах (2 и 3 соответственно). Чем меньше задержка — тем больше скорость работы с памятью, но и тем больше риск, что данные попадут "не по адресу", что непременно вызовет сбой. Устойчивость к подобным сбоям — есть устойчивость по CL.
Иными словами, CL — это задержка между формированием логикой управления кристалла микросхемы команды чтения и доступностью к чтению первого слова. Если регистрация (опознавание приемником сигнала конкретного логического уровня) команды чтения происходит по фронту такта N, а CL составляет M тактов, то соответствующие данные будут доступны через N+M тактов. Однако, для обеспечения гарантированной выдачи данных, транзисторы выходных цепей линий данных включаются на один такт раньше (N+M-1), т.е. на них выводятся данные с неопределенными (на тот момент) уровнями, в результате чего контроллер памяти ожидает еще один такт, и только после этого принимает поступающие данные. При использовании CL2 для модулей, рассчитанных для данной частоты на CL3, выходные цепи могут не успеть выставить нужный уровень (и обеспечить номинальный ток) для точного представления данных на шине и может возникнуть ошибка.
SDRAM RAS-to-CAS Delay
Аналогичного рода параметр (Fast RAS-to-CAS Delay), определяемый как tRCD, описывался ранее, и в данном случае может принимать значения 2 или 3, устанавливая двух- и трехтактную задержку от начала передачи команды активизации конкретного логического банка до момента приема команды чтения/записи по приходу фронта CAS# (переход в активный низкий уровень). Другими словами, после подачи команды активизации банка, строку, к которой происходит обращение, необходимо предварительно зарядить (выполнить цикл накопления заряда, Precharge) до момента поступления команды чтения (определяемой адресом столбца). Это означает, что данные передаются из массива памяти на внутрикристальный выходной усилитель уровня с задержкой 2 или 3 цикла. Необходимо понимать, что рассматриваемая задержка сама по себе играет довольно незначительную роль в общей задержке при условии попадания в страницу и/или чтения данных из открытой страницы. Тем не менее, далеко не в каждом BIOS можно варьировать значение данной задержки по причине отсутствия соответствующего параметра, однако в действительности tRCD учитывается также в значении "Bank X/Y Timing".
SDRAM RAS Precharge Time
Длительность подзаряда строки — tRP. В данном случае микросхема DRAM с двумя/четырьмя банками (логическая организация) позволяет "скрыть" это время, чтобы обеспечить непрерывный ввод/вывод данных: в то время, когда происходит какая-либо операция с одним банком памяти, другой успевает регенерировать (обновить данные). Проще говоря, данный параметр позволяет определять быстрое (Fast) или медленное (Slow) накопление заряда по линии RAS# до начала цикла регенерации. Установка значения Fast увеличивает быстродействие, однако может привести к нестабильности работы. Slow же действует наоборот — повышает стабильность работы компьютера, однако увеличивает время, затрачиваемое на цикл регенерации данных. Поэтому рекомендуемое значение Fast следует устанавливать в случае уверенности в качестве микросхем памяти. Обычно встречаемые значения 2 и 3 данного пункта определяют количество тактов системной шины, необходимых для восстановления данных в странице, к которой происходило обращение.
Вообще, задержка, обуславливаемая накоплением заряда в строке, необходима для перемещения данных обратно в массив (закрытие банка/страницы) до момента прихода команды активизации следующего банка. Так, 30—60 % от общего количества передаваемых запросов на чтение теряется в пределах одной страницы (Page), стандартно называемая строкой логического банка), что получило название попадания в страницу (Page Hit). Поэтому в данном случае нет необходимости активизировать банк, так как данные уже находятся в странице, и все, что требуется — это изменить адрес столбца посредством выдачи сигнала CAS#. Если запрашиваемые данные не найдены в пределах данной страницы, их необходимо вернуть обратно в массив и закрыть банк.
Если запрашиваемые данные существуют в одном и том же банке, но в разных строках, необходимо подать команду перезаряда, чтобы банк закрылся (промежуток, составляющий длительность подзаряда), а новая команда активизации банка откроет правильную строку (задержка tRCD), где размещаются необходимые данные. Позднее, через промежуток CL, команда чтения придет по правильно выбранному адресу. В результате количество циклов общей задержки (схема tRCD-CL-tRP), описываемое как 2-2-2, составляет 6 тактов, а схема 3-3-3 увеличивает ее до 9.
Если запрашиваемые данные расположены в разных строках, нет необходимости тратить время на ожидание закрытия первого банка, поэтому задержка tRP в данном случае не учитывается. Следовательно, остается только задержка выдачи сигнала CAS# и интервал RAS#-CAS#. Вообще, данная схема немного упрощена, поскольку если данные находятся в одном банке, но в разных строках, то банк необходимо не просто закрыть, а еще и реактивировать. Поэтому каждый банк имеет очень малое время, в течение которого он остается открытым, и длительность цикла tRC становится довольно критическим фактором.
Для микросхемы памяти, которая вошла в фазу саморегенерации (SEREf), необходим определенный интервал времени для ее возвращения обратно в активное состояние. Как уже говорилось ранее, в случае ввода устройства в фазу Self-Refresh все входные интерфейсы переводятся в состояние DtC (Don’t Care), а тактовый вход CKE деактивируется, после чего моментально включается внутрикристальный счетчик регенерации. В этот период микросхема памяти является пассивным относительно системы устройством и не отвечает на команды, поскольку интерфейс синхронизации деактивирован. После проведения фазы внутренней регенерации механизм внешней синхронизации активизируется и устройство возвращается в активное состояние по команде Refresh Exit. Тем не менее, полная фаза активизации с момента начала подачи сигнала CKE до готовности принять первую команду от контроллера занимает 4—7 тактов и называется Refresh RAS Assertion.
SDRAM Cycle Time Tras/Trc
Параметр, характеризующий быстродействие микросхемы SDRAM (динамику массива) и определяющий отношение интервала, в течение которого строка открыта для переноса данных (tRAS — RAS# Active time), к периоду, в течение которого завершается полный цикл открытия и обновления ряда (tRC — Row Cycle time), также называемого циклом банка (Bank Cycle Time).
По умолчанию устанавливается значение 6/8 — более медленное, но более стабильное, чем 5/6. Однако, 5/6 быстрее сменяет циклы в SDRAM, но может не оставлять строки (ряды) открытыми на период времени, достаточный для полного завершения транзакции, что особенно справедливо для SDRAM с частотой синхронизации более 100MHz. Следовательно, для начала рекомендуется попробовать установить 5/6 в целях увеличения производительности SDRAM, но, если система становится нестабильной, следует изменить на 6/8. Также данный параметр можно встретить в виде [tRAS, tRC]. Например, для некоторых базовых логик данные установки могут иметь следующие значения: для серии i82815xx — [5T, 7T] или [7T, 9T], для серий наборов VIA — [5T, 7—8 T] или [6T, 8—9 T], и для ALi MAGiK1 — [3—10 T, 4—15 T].
Цикл банка определяет количество тактов, необходимых после выставления команды активизации банка до начала фазы перезаряда. Другими словами, после открытия страницы ее необходимо поддерживать в открытом состоянии некоторый промежуток времени до того как она снова закроется. Параметр tRC определяет минимальное количество тактов от момента начала обращения к строке до тех пор, пока банк реактивируется. Поскольку фаза перезарядки имеет задержку 2—3 такта, то полный цикл банка является суммой времени активности сигнала RAS# и интервала обновления данных в странице: tRС=tRAS+tRP, где tRAS=tRCD+CL определяется как задержка отклика (Latency), характеризующая промежуток времени между регистрацией полученной команды и моментом начала передачи ассоциируемых с командой данных. Таким образом, tRС характеризует общее количество циклов, входящих в основную тайминговую схему tRCD-CL-tRP. Так, серия i82815xx поддерживает схемы [5T, 7T] или [7T, 9T], откуда видно, что период подзаряда фиксирован и составляет два цикла шины (2T). Серия базовых логик от VIA определяет интервал tRAS по значениям 5T и 6T, что говорит о плавающем значении tRP в 2 или 3 такта соответственно, однако они не прямо доступны, а являются частью "микса" установок.
Текущие микросхемы SDRAM имеют продолжительность цикла ядра 50—60 ns. С другой стороны, это означает, что теоретически микросхема, синхронизирующаяся на частоте 133MHz (7.5ns период), имеет значение tRC=7T, откуда можно определить текущий цикл ядра: 7х7.5ns=52ns. Если частоту синхронизации увеличить, количество циклов, соответственно, тоже увеличится, чтобы укладываться в 50ns окно. Проведя расчет, можно отметить теоретический предел частоты синхронизации SRDAM в 183MHz при текущих параметрах (9T), что означает 49.2ns цикл ядра. Интересной особенностью является то, что в ранних ревизиях i82815 серии схема выглядела как [5T, 7T] или [6T, 8T], что определяет предел частоты синхронизации в районе 166MHz. Для 100MHz синхросигнала, с целью получения максимально возможной производительности, цикл банка необходимо установить как 5/7, а для 133MHz шины, как 5/8 или 6/8 — в зависимости от того, насколько сильно требуется "разогнать" интерфейс.
В связи с этим, наиглавнейшим вопросом считается определение минимально возможного интервала активности страницы (сигнала RAS#) и что повлечет за собой выход за пределы его допустимых значений (tRAS Violation). После того, как сигнал RAS# активизировал банк, данные запираются в усилителе уровня. Например, имеется две линии, идущие параллельно, из которых одна сигнальная, а другая — связанная. Эта схема работает по принципу чередования, где каждая линия может быть и сигнальной, и опорной. Усилитель уровня дифференцирует напряжение между заряженной линией данных и опорной, и усиливает относительно слабый сигнал — это необходимо делать, чтобы восстанавливать информацию в ячейках. Сигнальные линии имеют четко определенную емкость, которая уменьшается с увеличением заряда. Если фаза перезаряда (стирание всей информации со строки данных для активизации следующего банка — строчный доступ) начинает выполняться до момента, пока уровень сигнала не стабилизировался достаточно для возможности восстановления первоначального содержимого страницы, четко определенная длительность активности страницы (сигнала RAS#) нарушается (tRAS Violation), результатом чего является полная потеря данных или в лучшем случае неверное их восстановление. Другими словами, tRAS — это время, необходимое для накопления полного заряда в строке и восстановления данных до начала цикла следующего передзаряда. В свою очередь, перезаряд является командой, закрывающей страницу или банк, поэтому tRAS также характеризуется как минимальное время активности страницы. Если к этому добавить еще и длительность цикла перезаряда, то в результате получится общее количество тактов, необходимое для открытия и закрытия банка, именуемое циклом банка (tRC) — то, о чем велась речь ранее.
SDRAM MA Wait State
Для систем на основе синхронного ДОЗУ контроллеру памяти необходимо послать несколько сигналов доступа, чтобы выполнить полную фазу обращения к конкретной микросхеме памяти: CS# (выбор кристалла), MA (адрес памяти), WE# (разрешение записи) RAS# (строб подтверждения адреса строки) и CAS# (строб подтверждения адреса столбца). Любой доступ к памяти включает в себя эти сигналы в разных вариациях в зависимости от типа выполняемой операции. Например, без сигнала выбора кристалла все последующие команды не будут восприняты микросхемой.
Так, все адресные линии, идущие от контроллера памяти к подсистеме, соединяются со всеми микросхемами памяти на всех модулях, что обуславливает значительную (в зависимости от общего количества микросхем) логическую нагрузку для контролера, который должен посылать правильный конечный адрес всем микросхемам в составе модуля(ей). Поэтому рекомендуется соблюдение 1—2-тактного опережения адресной и другой специфической информации до подачи сигнала CS#. В результате дается возможность подавать адрес и другие специфические командные сигналы с 0- (Fast, не включает никакого состояния ожидания перед подачей сигнала CS#), 1- (Normal, один такт опережения команды выбора кристалла) или 2- (Slow, опережение команды выбора кристалла в 2Т) тактным опережением сигнала выбора кристалла.
Таким образом, если модуль памяти содержит, например, всего 4 или 8 микросхем, то в этом случае рекомендовано значение Fast. Если модуль памяти имеет 16 или 18 устройств, то для него подойдет однотактное опережение. Если более 18 микросхем памяти (Registered DIMM) — 2T. В сложных конфигурациях подсистемы с использованием нескольких модулей с разной логической и физической организацией необходим более глубокий практический анализ.
SDRAM Bank Interleaving
Механизм чередования логических банков микросхемы памяти (не путать с режимом чередования физических банков — переключение физических строк, поделенных на сегменты с собственной логикой управления для каждого, — реализация которого требует присутствия сложной аппаратной адаптивной логики и специальной разводки сигнальных трасс подсистемы памяти) позволяет "коммутировать" циклы регенерации и доступа (конвейеризация): в то время, как один логический банк проходит цикл обновления содержимого, другой находится в активном состоянии и отрабатывает цикл обращения. Это улучшает эффективность функционирования подсистемы памяти (реальную пропускную способность приближает к теоретической пиковой) относительно неоптимизированного механизма (предвыборка) и "скрывает" время обновления содержимого каждого отдельного банка.
Так, чипы памяти ДОЗУ с емкостью массива 16Mbit и менее используют одноблочную матрицу (один логический банк). Некоторые 16Mbit и все 32Mbit микросхемы имеют уже двухбанковую внутреннюю архитектуру. Устройства с емкостью ядра 64Mbit и выше организованы четырехбанковой логической структурой, разделенной внутренними магистралями и трассами ввода/вывода.
Разделение логического массива ядра на четыре части позволяет использовать интерфейс выбора кристалла для управления всеми логическими банками одновременно и дает возможность держать сразу по одной открытой странице в каждом банке (если, конечно, используется независимая структура построения). Это дает возможность производить доступ без необходимости смены действительного адреса месторасположения необходимых данных — адреса строк и столбцов используются совместно между всеми логическими банками в пределах одной микросхемы. Вследствие этого контроллер может перенаправлять обращения от одного внутреннего банка к другому, производя необходимые операции. Данные перемежения и получили названия чередующихся обращений, которые дают преимущество, когда при закрытии одного логического банка данные продолжают поступать в/из другого, создавая непрерывный поток. Таким образом, в случае промаха в страницу, фаза перезаряда строки является системно-прозрачной операцией. Тем не менее, одновременное открытие сразу всех логических банков (обращение к конкретной странице в каждом) невозможно, поскольку команды активизации в данном случае могут подаваться с минимальной задержкой в один такт.
Иными словами, базисная идея чередующихся обращений заключается в доступе от одного банка к другому, когда соответствующие страницы открыты в каждом банке — этот момент требует высокой степени концентрированности данных в системном ОЗУ. Обычно команда активизации может открыть один банк в определенный момент времени (предвыборка), а затем считать данные после задержки tRCD+CL. Однако, практически сразу же, после посылки команды активизации одного банка, контроллер памяти может послать команду активизации другого в этом же цикле, таким образом открыв следующий банк. Если контроллер точно знает какие данные следует передать в другой банк, он может послать команду чтения без трешинга (Trashing, режим интенсивной передачи данных при нехватке системной памяти) пакета данных первого банка. В этом случае делается возможным переход от одного банка к другому с задержкой лишь в один цикл (Bank-to-Bank Latency, задержка перехода "банк-банк") между пакетами из четырех слов (BL=4). В дополнение, фазы накопления заряда и закрытия банка могут выполняться в "фоновом режиме" в процессе считывания данных из перемежающихся банков.
Известны три режима чередования: обычный (No Interleave), двухбанковое чередование (2-Way Interleave, данные коммутируются между двумя логическими банками) и четырехбанковое чередование (4-Way Interleave, данные коммутируются между четырьмя логическими банками). Режим чередования логических банков работает только в том случае, если последовательно запрашиваемые адреса находятся в разных банках — иначе транзакции данных происходят по обычной схеме No Interleave. В этом случае системе придется простаивать время прохождения обращения и цикл регенерации, после чего запрос повторится. Тем не менее, поддержка конкретного режима должна быть реализована еще и на уровне конкретного приложения. Вообще, любая программа, сильно зависящая от процессорного кэша (объема, типа и иерархии), не способна оптимально использовать режимы чередования по простой причине ограниченности размера страницы, и данные из кэша могут потеряться. В результате, чередование банков может отрицательно сказаться на производительности, поскольку неправильный открытый банк необходимо закрыть до выполнения следующего цикла доступа к данным.
Bank X/Y DRAM Timing
Параметр, включающий в себя сумму tRCD+tRP+Bank Interleaving и разделяющийся на схемы: SDRAM 8—10 ns, Normal, Medium, Fast и Turbo — оптимизированные под "одноименную" производительность настройки, которые производитель материнской платы прописывает в BIOS сам (схема, подобная описываемому ранее "Auto Configuration" и "SDRAM Configuration"). Так, значения соответствующих настроек BIOS, которые устанавливают управляющие регистры контроллера памяти в определенное состояние, обычно выглядят следующим образом: