Pull to refresh

Comments 14

так удивительно: точное время нужно для всех программ, но для этого до сих пор нет ничего простого.

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

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

В игру вступает множество факторов: поддержка legacy-кода, который знать не знает про новый девайс, стоимость и размеры (встроить батарейку в процессор ещё не додумались, а убертаймер должен быть поближе к нему), передача сигнала во много мест сразу не так проста — он же не мгновенно по проводам бежит.

С другой стороны моя гипотеза сломалась бы на виртуализации.

Об этом я постараюсь написать в ближайшее время. Если кратко, то время при виртуализации — это веселье в квадрате.
Не только RaspberryPi не имеет RTC, практически все интернет-радиоприёмники, имея программную реализацию встроенных часов, синхронизируют их через Сеть. Оно конечно понятно, поскольку без Сети эти железки малофункциональны…
Ну а для истории техники можно вспомнить К512ВИ1, MM58167 и многих других, потихоньку ушедших со сцены…
Любые обещания по точности таймеров ломаются на SMM. Приходит SMI — и всё, п-ц точности. И ОС ничего с ним сделать не может.

Хочу комментария Intel зачем такую штуку делали (SMM).

Для любопытствующих:

ru.wikipedia.org/wiki/System_Management_Mode
www.rom.by/files/SMI_handler_overlay_QNX.pdf
Любые обещания по точности таймеров ломаются на SMM.

Для измерения периодов времени, действительно, SMM создаёт неконтролируемую задержку. Но SMM само по себе не мешает измерять точно время — исполнение кода внутри этого режима не останавливает таймеры.
Нужно понимать, что на длительность исполнения программы в современных IA-32 может непредсказуемым образом повлиять много других факторов, иногда меньшего, а иногда и большего порядка. Так, промахи кэша не позволят гарантировано измерять периоды короче сотни тактов, ошибки предсказателя переходов — десятки тактов, а варьирующаяся частота процессора так и вообще может изменить время работы блока кода в разы. Другими словами, если нужен жёсткий реалтайм, то следует выбирать подходящую архитектуру или хотя бы конфигурацию аппаратуры (т.е. проц без SMM, с выключенными кэшами, in-order выполнением и прочим).

SMM по сути — это просто ещё один режим супервизора. Кстати, интересные эффекты возникают, когда надо подружить SMM с VMX root режимом — вроде бы два главных супервизора, а вот кто из них главнее? Даже специальный dual-monitor mode для виртуализации VT-x ввели, в котором эти друзья более-менее договариваются о зонах влияния.

Хочу комментария Intel зачем такую штуку делали (SMM).

Ниже будет мой личный комментарий того, как я понимаю историю сего явления.
Мой краткий пересказ описания истории SMM отсюда: blogs.msdn.com/b/carmencr/archive/2005/08/31/458609.aspx и www.rcollins.org/ddj/Jan97/Jan97.html,

В 80386 был недокументированный режим ICE для отладки, в который можно было попасть в том числе дёргая недокументированный пин. По тому, как он работал, он очень напоминал System Management Mode, каким мы видим его сейчас. Очевидно, кому-то пришла идея переиспользовать отладочный ICE-режим в форме SMM для других нужд.

Изначально SMM использовался в мобильных процессорах 386 для того, чтобы управлять энергопотреблением процессора ОС-агностичным образом. В то время представлялось, что легче сделать так, чем пытаться обучить однозадачную DOS во всех её вариантах управлению питанием.
В принципе это работало неплохо, но кому-то из вендоров BIOS пришла идея переиспользовать SMM для других нужд. В обработчик SMI стали добавлять всё подряд — от эмуляции PS/2 до живительных руткитов.

P.S. Я вспомнил, что об этом я уже писал!
Я к тому, что любой запрос «дай время» может выглядеть так:

команда «дай время»
начинает исполняться следующая инструкция
прилетает SMM
(30с пока NSA не скачает очередного котика с компьютера пользователя через фиговый wifi)
завершение SMM
повторное исполнение «следующей» инструкции
Программа видит, что сейчас XX:XX:05 секунд, и понимает, надо заскедулить время работы помпы в баке второй ступени ракеты ещё на 1 секунду, а потом срочно выключать, иначе всё взорвётся к чертям.

Результат? Недовольный Маск постит в твиттер, что ничерта не понятно, что с ракетой случилось.

Вопрос в другом: почему этот режим не выпилили к чертям в момент смены требований к чипсетам?
UFO just landed and posted this here
Я здесь, как и Вы, могу только гадать.

Не выпилили, наверное, потому что основная ниша для десктопных и серверных процессоров IA-32 — это десктопы/ноутбуки и сервера, а на них апериодические задержки подобной природы большого вреда не приносят. Пользователи и не заметят: для джиттера при проигрывании музыки/видео и без SMM причин вагон и маленькая тележка.

Убедить вендоров BIOS переписывать их кровью и потом отлаженный код на какой-то новый механизм не решились — они ведь и на системы конкурентов могут перебежать при случае.

В случае же пользователей, которым нужны процессоры во встраиваемых системах, так они вполне должны быть в состоянии и выключить SMM — просто не припаивать соответствующий пин, и прошивку попросить/сделать доработанную. У меня нет данных, но я уверен, что некоторая доля выпускаемых Атомов для совсем маленьких устройств идут в SoC без SMM. Или же Intel® Galileo/Edison — не уверен, что на этих платах этот режим активен или вообще возможен. Но это мои догадки; если у кого-нибудь есть подкреплённые документацией данные, буду благодарен.

Пропустил статью, пока был в отпуске, наверстываю. Есть SMM и на Atom, и на Quark, ибо кое-где он реально нужен. Используется SMM для эмуляции legacy USB, поддержки USB-клавиатур и мышей в DOS, обновления компонентов прошивки (доступ к SPI flash возможен только из SMM при правильной реализации защиты прошивки от переписывания вредоносным кодом), эмуляции отсутствующих и исправления неверно реализованных IO-портов (т.н. IO Trap), иногда используется для независимого от ОС управления сложной периферией вроде EC. Если это все не нужно, зато нужен риалтайм — SMM можно отключить полностью, для этого достаточно посадить линию SMI# процессора на землю, снять все биты регистра SMI_EN (отключив таким образом все источники программных SMI) и поставить бит SMI_LOCK, чтобы злоумышленник не смог включить все обратно. У нас есть разработанные по заказу Bosch варианты наших плат с уменьшенными задержками, отключенным энергосбережением и управлением питанием, полностью отключенным SMM и другими мелкими изменениями, помогающими использовать RTOS на x86.
Спасибо! Как я и думал — кому надо, те сами отключат SMM.
Intel® Pentium™

Вас покусали маркетологи из 3M?
Я на этот вопрос уже отвечал некоторое время назад.
автокопипаст
Любая торговая марка после её регистрации принадлежит компании только при условии, что эта компания отстаивает своё право на эксклюзивное использование вот именно этой комбинации слов. Если же слово/фраза становится нарицательным, или им начинают обозначать нечто большее, чем было изначально задумано, и не ассоциируют с правообладателем, то в суде исключительное право на использование как торговой марки после этого уже не отстоять.
Такое случалось в истории. Такие слова, как «капрон», «героин» и т.д. Я был очень удивлён, узнав совсем недавно, что «термос» — это тоже торговая марка! Обратный пример: компания Google отказала Оксфордскому словарю во включении глагола «to google» в словарь по тем же самым причинам.
По этой причине сотрудников любой компании обязуют в публичных коммуникациях обозначать торговые марки вот этими дурацкими символами. Потому что если уж даже члены компании не защищают торговую марку, и есть документальные подтверждения в виде постов на форумах, то в суде при случае отстоять ничего не получится.



Кстати, забавно смотрелся текст диплома одного студента нашей кафедры. Вроде бы документ для внутреннего использования, а всё равно пролезли всякие ® (tm). Я даже попросил вроде поубавить немного их число.
Беру я в руки банку кока-колы, произведенную в США — стране адвокатов, — и внимательно ее рассматриваю. Знак ® встречается на ней ровно три раза: один раз — в логотипе «Coca-Cola», второй раз — в логотипе «Coke», третий раз — в логотипе «please recycle» с кокаколовской бутылкой внутри. Знак © встречается там один раз под Nutritional Information и непонятно к чему относится. Знака ™ на банке обнаружено не было. При этом, в тексте на банке слово «Coca-Cola» вне логотипов встречается трижды и ничем особым не помечено, логотип «Coke» встречается дважды и второе (более заметное, как часть предложения) его использование никакими знаками не помечено. Если уж Кока-кола может ограничивать количество этого добра в США, то Интел в России может тем более.
Sign up to leave a comment.