-
- Проверка корректности доступа, очевидно, занимает такты и ресурсы. - LightElf(06.01.2018 01:09)
- Ну дык в параллель же. Это сколько ж лишних доступов к памяти идёт потому, что ветвилка решила, что «программа может захотеть»? Каждый if(), которым вы проверяете, не пора ли честь знать, оказывается, выдирает из драма неположенный кусок памяти. Николай Коровин(275 знак., 06.01.2018 01:19)
- Я не настолько хорошо представляю внутреннюю кухню современных процов, чтобы придти к определенному выводу. Возможно кэш TLB не обладает достаточным количеством портов на чтение или шину имеет не той разрядности или еще какая причина не позволяет LightElf(62 знак., 06.01.2018 01:29)
- Видимо, дело в застсарелой привычке к разделению труда. Модуль доступа к памяти не знает что делает АЛУ. Потому видит чтение и прется за данными без стеснения если время позволяет. Типа вдруг понадобится. - ASDFS(06.01.2018 01:28)
- Да просто разные люди делали разные части проца. Разделение труда, узкая специализация. К пуговицам претензии есть? - LightElf(06.01.2018 21:52 - 22:00)
- Там проблема в другом. Кэшь плюс механизмы предсказания ветвлений и спекулятивное выполнение кода. - mse homjak(06.01.2018 22:52)
- Именно это я и говорю.
Пуговицы пришиты крепкоКэшь работает?Не оторвешьРаботает. Ветвления предсказываются? Предсказываются. Код спекулятивно выполняется? Выполняется. Исключения защиты происходят? Происходят. А что все вместе LightElf(46 знак., 07.01.2018 14:57)- Ну, проблема-то, как раз явная. Косячит ММУ. Исключение генерится не в момент доступа к "запрещённой" памяти, а только в момент доступа к ветке по ветвлению, когда уже всё. - mse homjak(07.01.2018 15:00)
- MMU как раз работает абсолютно правильно - исключение происходит именно в момент, когда юзерский код "лезет куды нельзя". А когда "куды нельзя" лезет не юзерский код, а "спекулятивный исполнитель на пару с предсказателем", то с чего исключение-то? - LightElf(07.01.2018 15:14)
- Ну как... Юзерский код полез "нитуда". Какая разница, спекулятивно или нет? Физический доступ кода юзера к защищённой памяти состоялся. А мы об этом узнаём только когда нас выкинет на предсказанную ветку. - mse homjak(07.01.2018 16:30)
- Юзерский код никуда не полез. Это проц ошибся, взяв не те значения что определяет код а те что ему померещились. Потому исключения на спекулятивном исполнении быть не может. - ASDFS(07.01.2018 16:42)
- Ибо предсказатель может ошибиться, а если исключения будут по факту выполнения ошибочно предсказанного кода -- это никуда не годится. - fk0(07.01.2018 15:58)
- Почему? Если юзверев код лезет куда не надо(даже спекулятивно, какая разница?), значит этот код надо блокировать, именно, при физическом контакте с защищённой памятью. Или останавливать спекулятивное выполнение ветки, ожидая прямого попадания. mse homjak(33 знак., 07.01.2018 16:34)
- "Или останавливать спекулятивное выполнение ветки, ожидая прямого попадания." Вот. AMD-шники утверждают что у них именно так и потому Meltdown на AMD не проходит. - LightElf(07.01.2018 17:09)
Хеее :) Славься, хитрая АМДшья жопа :)Обманули!!! Так где, в итоге, более-менее честный список подверженных AMD? - Николай Коровин(09.01.2018 20:01 - 28.01.2018 20:30)- Имана! - mse homjak(08.01.2018 10:11)
- Код абсолютно корректен. Но если в коде есть указатель, то он физически может адресовать любую память. А при спекулятивном исполнении проц фактически может волюнтаристски присвоить указателю любое значение. С твоей точки зрения это означает ASDFS(53 знак., 07.01.2018 16:44)
- "Или останавливать спекулятивное выполнение ветки, ожидая прямого попадания." Вот. AMD-шники утверждают что у них именно так и потому Meltdown на AMD не проходит. - LightElf(07.01.2018 17:09)
- Почему? Если юзверев код лезет куда не надо(даже спекулятивно, какая разница?), значит этот код надо блокировать, именно, при физическом контакте с защищённой памятью. Или останавливать спекулятивное выполнение ветки, ожидая прямого попадания. mse homjak(33 знак., 07.01.2018 16:34)
- Ну как... Юзерский код полез "нитуда". Какая разница, спекулятивно или нет? Физический доступ кода юзера к защищённой памяти состоялся. А мы об этом узнаём только когда нас выкинет на предсказанную ветку. - mse homjak(07.01.2018 16:30)
- MMU как раз работает абсолютно правильно - исключение происходит именно в момент, когда юзерский код "лезет куды нельзя". А когда "куды нельзя" лезет не юзерский код, а "спекулятивный исполнитель на пару с предсказателем", то с чего исключение-то? - LightElf(07.01.2018 15:14)
- Ну, проблема-то, как раз явная. Косячит ММУ. Исключение генерится не в момент доступа к "запрещённой" памяти, а только в момент доступа к ветке по ветвлению, когда уже всё. - mse homjak(07.01.2018 15:00)
- Именно это я и говорю.
- Там проблема в другом. Кэшь плюс механизмы предсказания ветвлений и спекулятивное выполнение кода. - mse homjak(06.01.2018 22:52)
- Да просто разные люди делали разные части проца. Разделение труда, узкая специализация. К пуговицам претензии есть? - LightElf(06.01.2018 21:52 - 22:00)
- Что наводит на мысль. Если секьюрити отъедает мипсы, то можно сделать два режима работы или даже две разные модели проца: быстрый-быстрый и безопасный-безопасный. Отдел маркетинга будет в восторге. Конечно, если скорость можно измерить, то про SciFi(72 знак., 06.01.2018 01:14)
- Что наводит на еще более глубокую мысль. Кто сказал, что процессоры, поставляемые госструктурам США и то, что мы покуппаем - это одни и те же x86? Всего-то кучку битиков поменять в OTP - зато сколько кайфа! - Evgeny_CD(06.01.2018 01:19)
- Просто загрузить разный микрокод - и вуаля. - LightElf(06.01.2018 01:24)
- Это грубо, и обнаружить несложно - BIOS можно ведь выпаять и бинарно сравнить. А такой изящный баг сколько прятался-то.... - Evgeny_CD(06.01.2018 01:26)
- Современный писюк - это такое нагромождение чего-то с чем-то, что там есть приблизительно 100500 возможностей сделать вот это вот. В общем, эти спекуляции малоинтересны. - SciFi(06.01.2018 01:31)
- Выпаять БИОС на компе "специально для Пентагона"? - LightElf(06.01.2018 01:30)
- Это грубо, и обнаружить несложно - BIOS можно ведь выпаять и бинарно сравнить. А такой изящный баг сколько прятался-то.... - Evgeny_CD(06.01.2018 01:26)
- Просто загрузить разный микрокод - и вуаля. - LightElf(06.01.2018 01:24)
- Что наводит на еще более глубокую мысль. Кто сказал, что процессоры, поставляемые госструктурам США и то, что мы покуппаем - это одни и те же x86? Всего-то кучку битиков поменять в OTP - зато сколько кайфа! - Evgeny_CD(06.01.2018 01:19)
- Ну дык в параллель же. Это сколько ж лишних доступов к памяти идёт потому, что ветвилка решила, что «программа может захотеть»? Каждый if(), которым вы проверяете, не пора ли честь знать, оказывается, выдирает из драма неположенный кусок памяти. Николай Коровин(275 знак., 06.01.2018 01:19)
- может если была цель сделать неочевидный способ доступа. А идентичность траблы во всех основных платформах намекает что сделано это централизованно. Интель с амд, мипс с армом имели общих разработчиков, сделавших всем один блок? Ну ну. - ASDFS(06.01.2018 01:05)
- Не, Meltdown вроде исключительно интеловская бага. А вот Spectre весьма универсален, потому как ничего криминального прога не делает. - LightElf(06.01.2018 01:32)
- Да какой это, на хрен, способ доступа… в зависимости от забитости шины и вообще конкретики оптимизации, он может не сработать на ценном клиенте, но зато может быть найден случайно. Обычное типовое раззвиздяйство шаблонно мыслящих дятлов. - Николай Коровин(06.01.2018 01:11)
- Еще красивее. Вероятностная дырка безопасности - о, дюжина диссеров, не меньше. - ASDFS(06.01.2018 01:29)
- Кагбэ очевидно, что надо подозревать Тех, Кому Больше Всех Надо™. Также интересно, где ещё они порылись. О, сколько нам открытий чудных готовит просвещенья дух... - SciFi(06.01.2018 01:10)
- Проверка корректности доступа, очевидно, занимает такты и ресурсы. - LightElf(06.01.2018 01:09)