Slp s4 assertion width что это
Slp_s4# min. assertion width [1 to 2 seconds, Initiate graphic adapter [peg/pci, Peg port configuration – Asus TS100-E5/PI4 User Manual
Page 77
South Bridge Configuration
SMBUS Controller [Enabled]
Allows you to enable or disable the SMBUS Controller.
Configuration options: [Enabled] [Disabled]
SLP_S4# Min. Assertion Width [1 to 2 seconds]
Allows you to select the SLP_S4# Min. Assertion Width.
[4 to 5 seconds] [3 to 4 seconds] [2 to 3 seconds]
DRAM RAS# to CAS# Delay [6 DRAM Clocks]
Controls the latency between the DDR SDRAM active command and the
Configuration options: [3 DRAM Clocks] [4 DRAM Clocks] [5 DRAM Clocks]
[6 DRAM Clocks]
DRAM RAS# Precharge [6 DRAM Clocks]
Controls the idle clocks after issuing a precharge command to the DDR
Configuration options: [3 DRAM Clocks] [4 DRAM Clocks] [5 DRAM Clocks]
[6 DRAM Clocks]
DRAM RAS# Activate to Precharge Delay [15 DRAM Clocks]
Configuration options: [9 DRAM Clocks] [10 DRAM Clocks]
Initiate Graphic Adapter [PEG/PCI]
Allows you to select the graphics controller as the primary boot device.
Configuration options: [PCI/PEG] [PEG/PCI]
PEG Port Configuration
Configuration options: [Auto] [Disabled]
South Bridge chipset Configuration
SLP_S4# Min. Assertion Width [1 to 2 seconds]
Тойтерьеры форева! Материнская плата Foxconn 910GL7MH-S
Начать текст придется с извинений. Когда статья «Универсальный солдат» (UPgrade #40 (233)) готовилась к выходу, я и не предполагал, что в мире столько поклонников… тойтерьеров. После публикации «Солдата» на меня свалилось много писем, общий смысл которых можно передать фразой: «Руки прочь от тойтерьеров!» Вот цитата из одного такого письма: «Я старый собаковод. За много лет жили у меня такса, бультерьер, доберман. А сейчас — русский гладкошерстный тойтерьер, окрас — черный, с подпалинами. Так вот. Для меня он стал лучшим из всех предыдущих моих псов. Маленький, удобный, ест мало, гулять с ним можно всего пару минут (хотя он-то хочет больше, а если бы, как кошку, к лотку приучили, и вовсе было бы нам, хозяевам здорово), в квартире незаметен, мыть легко, в машине или транспорте не мешается и т. д., и т. п. Он ДРУЖОК! Добрейшее и ласковое существо, умен… И, как ни странно, храбр. Никого не боится. Был бы побольше — всех овчарок порвал бы».
Пользуясь случаем, хочу извиниться за то, что оскорбил таких классных, удобных и компактных собак, сравнив с ними кусок текстолита от компании ECS. Обещаю впредь сравнивать материнки только с кошками (смайл). Вот, между прочим, и случай представился: на моем столе лежит очередной девайс от компании Foxconn, ждущий исследования. Если ECS PF88 по размеру можно сравнить с собакой, то Foxconn 910GL7MH-S не больше кошки. (Ах, с каким удовольствием я каждый раз упоминаю романтичные и легко запоминающиеся названия плат Foxconn! — Прим. автора. — Конечно, всегда приятно произнести хорошо ритмизированную аббревиатуру! — Прим. ред.) Все это дикое количество знаков я потратил для того, чтобы сообщить вам о том, что объектом тестирования стала материнская плата формата mATX (и чтобы показывать другим авторам этот кусок текста в качестве примера того, как писать не надо. — Прим. ред.)
Есть у i910GL поддержка PCI Express (правда, поддерживаются всего четыре линии), пусть и реализована она не на северном мосту, а на южном. Однако именно эти четыре линии и дают нам возможность подключить-таки внешнее видео. Причем, заметьте, без какой-либо потери скорости на видеокартах класса middle-end или low-end (а ставить дорогую карту на дешевую материнку было бы довольно странно). Большинству пользователей поддержка DDR2 не нужна, они готовы отказаться от нее по религиозным соображениям (память дорогая, маркетологи — сволочи), да и не могу сказать, что DDR400 в двухканальном режиме в чем-то уступает DDR2. Скорость, конечно, поменьше, но в реальных условиях это не сильно сказывается на производительности системы.
А вот еще одно ограничение, куда более серьезное.
Плата не поддерживает шину 800 МГц, а значит, ее удел — обслуживать процессоры Celeron D и медленные (до 2,8 ГГц) Pentium 4 с шиной 533 МГц. Даже без технологии Hyper-Threading. Воткнуть в плату 800-мегагерцовый камень, конечно, ничто не мешает, но работать он будет с шиной 533 МГц.
Средства разгона на плате есть, но мне не удалось заставить процессор Pentium 4 3,6 ГГц (множитель — 18) работать на его штатной частоте. Плата позволяет повысить частоту несущей до 199 МГц, но с такими настройками процессор не завелся.
Остальные недостатки платы, например отсутствие аудиокодека стандарта HDA и слотов PCI Express x1, пользователя взволнуют куда меньше, чем самое главное, процессорное ограничение. Тем не менее, если уж юзер решится поставить Celeron D, другие минусы чипсета его не расстроят. Вот такая экономия. Но вернемся к плате. mATX — стандарт, предполагающий компактность, так что все элементы на плате расположены очень плотно.
В частности, если вы решите использовать внешнюю видеокарту, вам придется забыть об одном, а то и о двух слотах PCI (в зависимости от размеров системы охлаждения, стоящей на карточке). Если же вам захочется поставить на процессор большой кулер, то придется подпилить радиатор чипсета напильником или заменить его на меньший, но с вентилятором. Установите на плату Zalman 7700Cu или другой подобный девайс, и он будет угрожающе нависать над модулями памяти и немного охлаждать их (или подогревать, все зависит от того, что под ним будет находиться).
А какую интересную логическую задачу будет вынужден решать человек, который захочет собрать все провода в жгуты и прикрепить их к стенкам корпуса! Разъемы для подключения БП расположены компактно, но почему-то в очень странных местах, будто бы производитель специально их прятал, чтобы не отсвечивали. Четырехконтактный коннектор питания, например, думает, что его за высокими конденсаторами не видно стабилизатора питания процессора (семь банок по 3300 мкф, четыре банки по 1500 мкф). Посмотрите, кстати, на фотографию. Обратите внимание на южный мост. Это, между прочим, радиатор на нем такой. Алюминиевая пластина толщиной 2,5 мм с ребрами в виде волн высотой 0,5 мм. Отличное решение, но уж больно смешно смотрится на фоне других радиаторов системы.
Нераспаянных интегрированных контроллеров нет, зато есть сетевой контроллер RTL8100C и звуковой кодек AD1888. Не густо, но и не пусто. Еще наличиствует один PATA и четыре SATA-канала, но их поддерживает сам чипсет. Да, ну и, конечно, встроенное видео — 333-мегагерцовое ядро Intel GMA900, которое есть и в чипсете i915G. DirectX 9.0, шейдеры и прочие достоинства, которые хороши только на бумаге (реально никакой пользы они вам не принесут ввиду смехотворной производительности подсистемы). Однако для офиса такое решение в самый раз, особенно если полноценные видеокарты, согласно внутренним правилам фирмы, считаются абсолютным злом. (В смысле — на безрыбье и рыба становится раком. Или наоборот? Впрочем, какая разница.)
Задняя панель платы под стать передней: VGA, COM, LPT, два порта PS/2, четыре USB-разъема, сетевой коннектор и три мини-джека. Теперь о том, что еще умеет плата, то есть об ее BIOS. Настроек памяти не слишком много: четыре демона со страшными именами RAS# и CAS#, а также малопонятное существо SLP_S4# Assertion Width (видимо, оно главное в этой банде, как минимум эцелоп). О функции повышения частоты FSB до 199 МГц я упомянул, а чтобы разгон шины не повредил другим железкам, есть возможность зафиксировать частоты шин PCI Express и PCI. Функция Ratio Free присутствует, но что толку.
Однако нельзя не признать, что возможности у этой офисной материнки более чем достойные, да и со стабильностью проблем нет. Да и откуда им взяться, если ни в каких экстремальных режимах плата не функционирует, а при тихой офисной работе нагрузка на элементы системы невелика. Нет, разумеется, бенчмарк S&M я запустил, и он отработал, сколько ему положено, однако, даже если бы материнка не прошла этот тест, ее все равно можно было бы рекомендовать тому, кто не такой, как все (в смысле, работает в офисе, далее по тексту).
Звезд с неба она не хватает, однако вполне себе дышит, да еще и имеет не самые плохие возможности расширения функциональности (хотя шины 800 МГц все равно не хватает). Медальки она, конечно, не заслуживает (вернее, заслуживает, но номинации «Выбор менеджера среднего звена — 2005» у нас нет и не предвидится), но почета и уважения — вполне. И трогать ее, как говорится, не моги за ее малый рост, малый рост (это из другой известной песни, о кошках).
Цена: нет данных l Чипсет: i910GL l Частота FSB: 400 / 533 МГц l Память: 2 х DDR400, до 2 Гбайт l Графический интерфейс: PCI Express x4 l Видео: Intel GMA900 l Слоты расширения: 3 x PCI l Дисковая подсистема: 4 x SATA, 1 x PATA l Сеть: RTL8100C l Звук: AD1888
Автор: Сергей Бучин
Благодарность: Устройство предоставлено российским представительством компании Foxconn
2 system agent (sa) configuration – AAEON EMB-B75A User Manual
Page 42
SLP_S4 Assertion Width [Enabled]
Allows you to set the minimum assertion width of the SLP_S4 signal.
Configuration options: [1-2 seconds] [2-3 seconds] [3-4 seconds] [4-5 seconds]
Restore AC Power Loss [Last State]
[Power On]
The system goes into on state after an AC power loss.
The system goes into off state after an AC power loss.
The system goes into either off or on state, whatever the system
state was before the AC power loss.
System Agent (SA) Configuration
CHAP Device (B0:D7:F0 [Disabled]
Allows you to enable or disable the SA CHAP device.
Configuration options: [Enabled] [Disabled]
Thermal Device (B0:D4:F0) [Disabled]
Allows you to enable or disable the SA Thermal device.
Configuration options: [Enabled] [Disabled]
Enable NB CRID (B0:D4:F0) [Disabled]
Allows you to enable or disable the NB CRID workaround function.
Configuration options: [Enabled] [Disabled]
BDAT ACPI Table Support [Disabled]
Allows you to enable or disable the BDAT ACPI table.
Configuration options: [Enabled] [Disabled]
C-State Pre-Wake [Disabled]
Allows you to enable or disable the C-State Pre-Wake feature.
Configuration options: [Enabled] [Disabled]
Graphics Configuration
Allows you to configure the graphics settings.
DMI Configuration
Allows you to control various DMI functions.
NB PCIe Configuration
Allows you to configure the NB PCI Express settings.
Assert. Что это?
Assert — это специальная конструкция, позволяющая проверять предположения о значениях произвольных данных в произвольном месте программы. Эта конструкция может автоматически сигнализировать при обнаружении некорректных данных, что обычно приводит к аварийному завершению программы с указанием места обнаружения некорректных данных. Странная, на первый взгляд, конструкция — может завалить программу в самый неподходящий момент. Какой же в ней смысл? Давайте подумаем, что произойдет, если во время исполнения программы в какой-то момент времени некоторые данные программы стали некорректными и мы не «завалили» сразу же программу, а продолжили ее работу, как ни в чем не бывало. Программа может еще долго работать после этого без каких-либо видимых ошибок. А может в любой момент времени в будущем «завалиться» сама по известной только ей причине. Или накачать вам полный винчестер контента с гей-порносайтов. Это называется неопределенное поведение (undefined behavior) и, вопреки расхожему мнению, оно свойственно не только языкам программирования с произвольным доступом к памяти (aka C, C++). Т.к. assert завершает программу сразу же после обнаружения некорректных данных, он позволяет быстро локализировать и исправить баги в программе, которые привели к некорректным данным. Это его основное назначение. Assert’ы доступны во многих языках программирования, включая java, c#, c и python.
Какие виды assert’ов бывают?
Assert’ы позволяют отлавливать ошибки в программах на этапе компиляции либо во время исполнения. Проверки на этапе компиляции не так важны — в большинстве случаев их можно заменить аналогичными проверками во время исполнения программы. Иными словами, assert’ы на этапе компиляции являются ничем иным, как синтаксическим сахаром. Поэтому в дальнейшем под assert’ами будем подразумевать лишь проверки во время исполнения программы.
Важно понимать, что входящие аргументы функции могут быть неявными. Например, при вызове метода класса в функцию неявно передается указатель на объект данного класса (aka this и self). Также функция может обращаться к данным, объявленным в глобальной области видимости, либо к данным из области видимости лексического замыкания. Эти аргументы тоже желательно проверять с помощью assert’ов при входе в функцию.
Если некорректные данные обнаружены на этом этапе, то код данной функции может содержать баги. Пример:
Когда и где стоит использовать assert’ы?
Ответ прост — используйте assert’ы всегда и везде, где они хоть чуточку могут показаться полезными. Ведь они существенно упрощают локализацию багов в коде. Даже проверка результатов выполнения очевидного кода может оказаться полезной при последующем рефакторинге, после которого код может стать не настолько очевидным и в него может запросто закрасться баг. Не бойтесь, что большое количество assert’ов ухудшит ясность кода и замедлит выполнение вашей программы. Assert’ы визуально выделяются из общего кода и несут важную информацию о предположениях, на основе которых работает данный код. Правильно расставленные assert’ы способны заменить большинство комментариев в коде. Большинство языков программирования поддерживают отключение assert’ов либо на этапе компиляции, либо во время выполнения программы, так что они оказывают минимальное влияние на производительность программы. Обычно assert’ы оставляют включенными во время разработки и тестирования программ, но отключают в релиз-версиях программ. Если программа написана в лучших традициях ООП, либо с помощью enterprise методологии, то assert’ы вообще можно не отключать — производительность вряд ли изменится.
Когда можно обойтись без assert’ов?
Понятно, что дублирование assert’ов через каждую строчку кода не сильно улучшит эффективность отлова багов. Не существует единого мнения насчет оптимального количества assert’ов, также как и насчет оптимального количество комментариев в программе. Когда я только узнал про существование assert’ов, мои программы стали содержать 100500 assert’ов, многие из которых многократно дублировали друг друга. С течением времени количество assert’ов в моем коде стало уменьшаться. Следующие правила позволили многократно уменьшить количество assert’ов в моих программах без существенного ухудшения в эффективности отлова багов:
Можно избегать дублирующих проверок входящих аргументов путем размещения их лишь в функциях, непосредственно работающих с данным аргументом. Т.е. если функция foo() не работает с аргументом, а лишь передает его в функцию bar(), то можно опустить проверку этого аргумента в функции foo(), т.к. она продублирована проверкой аргумента в функции bar().
Можно опускать assert’ы на недопустимые значения, которые гарантированно приводят к краху программы в непосредственной близости от данных assert’ов, т.е. если по краху программы можно быстро определить местонахождение бага. К таким assert’ам можно отнести проверки указателя на NULL перед его разыменованием и проверки на нулевое значение делителя перед делением. Еще раз повторюсь — такие проверки можно опускать лишь тогда, когда среда исполнения гарантирует крах программы в данных случаях.
Вполне возможно, что существуют и другие способы, позволяющие уменьшить количество assert’ов без ухудшения эффективности отлова багов. Если вы в курсе этих способов, делитесь ими в комментариях к данному посту.
Когда нельзя использовать assert’ы?
Т.к. assert’ы могут быть удалены на этапе компиляции либо во время исполнения программы, они не должны менять поведение программы. Если в результате удаления assert’а поведение программы может измениться, то это явный признак неправильного использования assert’а. Таким образом, внутри assert’а нельзя вызывать функции, изменяющие состояние программы либо внешнего окружения программы. Например, следующий код неправильно использует assert’ы:
Очевидно, что данные могут оказаться незащищенными при отключенных assert’ах.
Чтобы исправить эту ошибку, нужно сохранять результат выполнения функции во временной переменной, после чего использовать эту переменную внутри assert’а:
Т.к. основное назначение assert’ов — отлов багов (aka ошибки программирования), то они не могут заменить обработку ожидаемых ошибок, которые не являются ошибками программирования. Например:
Если write() возвращает 0, то это вовсе не означает, что в нашей программе есть баг. Если assert’ы в программе будут отключены, то ошибка записи может остаться незамеченной, что впоследствие может привести к печальным результатам. Поэтому assert() тут не подходит. Тут лучше подходит обычная обработка ошибки. Например:
Я программирую на javascript. В нем нет assert’ов. Что мне делать?
В некоторых языках программирования отсутствует явная поддержка assert’ов. При желании они легко могут быть там реализованы, следуя следующему «паттерну проектирования»:
Вообще, assert’ы обычно реализованы в различных фреймворках и библиотеках, предназначенных для автоматизированного тестирования. Иногда они там называются expect’ами. Между автоматизированным тестированием и применением assert’ов есть много общего — обе техники предназначены для быстрого выявления и исправления багов в программах. Но, несмотря на общие черты, автоматизированное тестирование и assert’ы являются не взаимоисключающими, а, скорее всего, взаимодополняющими друг друга. Грамотно расставленные assert’ы упрощают автоматизированное тестирование кода, т.к. тестирующая программа может опустить проверки, дублирующие assert’ы в коде программы. Такие проверки обычно составляют существенную долю всех проверок в тестирующей программе.
Pch configuration pch compatibility rid [disabled, Smbus controller [enabled, Slp_s4 assertion stretch enable [enabled – Asus RS700-E7/RS4 User Manual
Page 83: Port 3a link speed [gen2, Port 3c link speed [gen2, Ioh1 pcie port bifurcation control
Support for PCH Compatibility
SB Chipset Configuration
PCH Compatibility RID
SLP_S4 Assertion Stretch Enable
SLP_S4 Assertion Stretch Enable [4-5 Seconds]
Onboard SATA RAID Oprom
High Precision Event Timer Configuration
High Precision Timer
F2: Previous Values
F5: Optimized Defaults
PCH Compatibility RID [Disabled]
Support for PCH compatibility.
Configuration options: [Disabled] [Enabled]
SMBus Controller [Enabled]
Allows to enabled/disabled SMBus controller.
Configuration options: [Disabled] [Enabled]
SLP_S4 Assertion Stretch Enable [Enabled]
Allows to enabled/disabled SLP_S4# assertion stretch.
Configuration options: [Disabled] [Enabled]
SLP_S4 Assertion Stretch Enable [4-5 Seconds]
Select a minimum assertion width of the SLP_S4# signal.
Configuration options: [1-2 Seconds] [2-3 Seconds] [3-4 Seconds] [4-5 Seconds]
Version 2.14.1219. Copyright (C) 2011 American Megatrends, Inc.
PORT 3A Link Speed [Gen2]
Select target link speed Gen1, Gen2 or Gen3.
Configuration options: [Gen1] [Gen2] [Gen3]
PORT 3C Link Speed [Gen2]
Select target link speed Gen1, Gen2 or Gen3.
Configuration options: [Gen1] [Gen2] [Gen3]
IOH1 PCIe port Bifurcation Control
This item appears only when you installed CPU2 on the motherboard.