The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Компания AMD подтвердила потенциальную подверженность CPU AMD Zen 3 атаке Spectre-STL, opennews (??), 03-Апр-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


46. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +4 +/
Сообщение от Аноним (46), 03-Апр-21, 14:04 
Spectre-компашке подвержен далеко не только х86, ведь проблема в концепции спекулятивного выполнения вообще, а не каких-то конкретных х86 приколах
Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

50. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +3 +/
Сообщение от Аноним (20), 03-Апр-21, 15:01 
Проблема спекулятива бы решилась, если бы при отмене неудачного исполнения, также и из кеша удалялись бы оставленные неудачным исполнением данные.
Ответить | Правка | Наверх | Cообщить модератору

72. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +3 +/
Сообщение от пох. (?), 03-Апр-21, 17:13 
Эх, вас бы, дорогие смузихлебы, да в зазработчики процессоров, вы бы точно показли всем как на...угробили бы цивилизацию в надежде что у любой проблемы есть простое решение, особенно, если рассматривать ее как гвоздь.

Процессор, к сожалению, не знает, какие именно данные надо удалить. Кэш прозрачен - данные подгружаются туда при чтении их из медленной памяти. Выполнять команды задом-наперед, чтобы удалить то что они прочитали, процессор тоже не умеет, и лишнего обратного пайплайна у него для этого не предусмотрено.

Ответить | Правка | Наверх | Cообщить модератору

99. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –1 +/
Сообщение от Nintendo (?), 04-Апр-21, 04:23 
о том и речь, нормальной архитектуры у интела не было с 8080 и i432, только непредусмотренные хаки, открывающие доступ ко всем ресурсам, для компетентных "товарисчей" из разведок, и вагон уникальных неиспользуемых команд, а теперь и для MachLearninG.
Ответить | Правка | Наверх | Cообщить модератору

103. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +3 +/
Сообщение от Аноним (-), 04-Апр-21, 11:09 
> Эх, вас бы, дорогие смузихлебы, да в зазработчики процессоров,

Накаркаешь! Вон chisel - вообще какая-то неведома хрень на яве, и сам яваобразный. А, да, на этом RISCV написан и выхлоп этой вундервафли таки можно на фабу отгрузить...

> Выполнять команды задом-наперед, чтобы удалить то что они прочитали, процессор тоже не умеет

Вообще-то OoO примерно это и пытается делать с переменным успехом. В этом весь пойнт. Так можно за такт более 1 команды сжевать, если прокатило. Ессно это не всегда и не везде прокатывает, но если ты обратишь внимание, про очень нагло юзают это в скоростных алгоритмах.

Ответить | Правка | К родителю #72 | Наверх | Cообщить модератору

98. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Соня Мармеладова (?), 04-Апр-21, 01:31 
А вот в Эльбрусе никакого спекулятивного выполнения не надо. Там все это решается на уровне компиляции. Вообще свойственно всем VLIW архитектурам
Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

102. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –3 +/
Сообщение от Онаним (?), 04-Апр-21, 08:07 
На уровне компиляции никакое предсказание ветвлений ты не сделаешь никогда.
Да и прочие низкоуровневые оптимизации многие так же не зайдут. Префетчи надо руками делать. И т.п.
Одна из очень весомых причин того, почему VLIW мёртв.
Ответить | Правка | Наверх | Cообщить модератору

104. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +2 +/
Сообщение от Аноним (-), 04-Апр-21, 11:12 
> На уровне компиляции никакое предсказание ветвлений ты не сделаешь никогда.

Откуда это следует? Глядя на то как GCC вообще лихо выпиливает половину функции, _доказав_ что он никогда не вызывается с этими параметрами _глобальным анализом программы_ у меня есть здоровый скепсис насчет этого тезиса, как минимум в таком его виде.

> Да и прочие низкоуровневые оптимизации многие так же не зайдут.

Откуда сие следует? И что такого может железо что не может софт? В каком месте возникает отличие?

> Префетчи надо руками делать. И т.п.

А какие принципиальные проблемы для компилера это сделать?

> Одна из очень весомых причин того, почему VLIW мёртв.

То что никто это не накодил != тому что это _невозможно_. Просто VLIW'ам как-то не повезло в этой вселенной, в том числе по линии проприетарской жабы, когда все зажимали свои "улучшения" этсамого. Ну и дозажимались.

Ответить | Правка | Наверх | Cообщить модератору

109. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +1 +/
Сообщение от Аноним (109), 04-Апр-21, 11:31 
Предсказание ветвления по определению подразумевает, что оно работает на runtime-данных. То, чего GCC никогда не наанализирует. Скажем, если у тебя одна переменная установлена в рантайме в True (например, опция) - и в цикле if по ней всегда идёт по этой ветке. В рантайме предсказатель ветвлений увидит, что бранч тут всегда идёт по одной ветке и будет это предсказывать, давая буст для каждой следующей итерации. А GCC такое никогда не соптимизирует, потому что опция по определению может быть как True, так и False. И компилятор _никогда_ не сможет доказать, что ты в рантайме программы жмякнешь (или не жмякнешь) какой-нибудь checkbox в программе и этот кейс нужно соптимизировать. Более того - если ты захочешь отключить эту опцию - предсказатель ветвлений перестроится, и начнёт предсказывать уже ветку else. Как ты такое будешь на этапе компиляции оптимизировать, гений?)))
Ответить | Правка | Наверх | Cообщить модератору

114. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Аноним (114), 04-Апр-21, 11:57 
Ну можно сгенерировать 2-3-100 разные эффективные ветки на этапе компиляции, исходя из разных предположений, и ужэ между ними переключаться в рантайме. Разницы размера особой не будет. Кроме того, можно проанализировать, что скорее всего там true, поскольку при false количество и характер связанной логики отличается, и использовать её как предпочтительную (или же использовать указание программиста о likely). AoT именно так и работает.
Ответить | Правка | Наверх | Cообщить модератору

116. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Аноним (109), 04-Апр-21, 12:17 
Не, ну, это был достаточно простой пример. В теории да, можно сгенерить два цикла и переходить в одну или другую версию цикла в зависимости от значения переменной. А если значение переменной может меняться в цикле? А если таких if'ов в цикле много? А если условие намного сложнее чем просто True/False? Генерировать по 1000 версий одного и того же цикла? Быстро закончится место на диске, да и многогигабайтные бинарники таскать неудобно.
Ответить | Правка | Наверх | Cообщить модератору

117. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Аноним (109), 04-Апр-21, 12:28 
likely/unlikely, к слову - это всего лишь хинт для оптимизации первой итерации, и программист всего лишь просит таким образом подгрузить наиболее вероятную по его мнению ветку. Тем не менее, это имеет смысл только для реально тяжёлых веток + когда точно известно, что в большинстве случаев хинт будет верным (например, если итераций много и likely будет исполняться для всех итераций, кроме последней), ведь если запрефетчить неправильную ветку и потом окажется, что мы наступили на маловероятную ветку - придётся сбрасывать то, что мы закэшировали в CPU, а это дорогая операция.

Тем не менее - likely/unlikely никак не противоречит предсказанию ветвлений, и даже наоборот - дополняет систему branch prediction процессора. Поскольку после первой итерации цикла в дело вступает уже предсказатель ветвлений процессора.

Ответить | Правка | К родителю #114 | Наверх | Cообщить модератору

147. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –1 +/
Сообщение от Аноним (147), 05-Апр-21, 00:41 
> Предсказание ветвления по определению подразумевает, что оно работает на runtime-данных.

И это компилеры нынче тоже таки умеют, PGO как раз о чем-то таком.

> предсказатель ветвлений увидит, что бранч тут всегда идёт по одной ветке
> и будет это предсказывать, давая буст для каждой следующей итерации. А
> GCC такое никогда не соптимизирует, потому что опция по определению может
> быть как True, так и False.

Ему в ряде случаев можно и захинтить likely/unlikely, равно как оптимизировать можно более популярный у юзерей code path.

> checkbox в программе и этот кейс нужно соптимизировать.

В принципе некий пойнт в этом есть. Но даже так - хинтят likely/unlikely.

> Более того - если ты захочешь отключить эту опцию - предсказатель ветвлений перестроится, и
> начнёт предсказывать уже ветку else. Как ты такое будешь на этапе
> компиляции оптимизировать, гений?)))

Два варианта code path, отптимизнутые каждый на свой вариант? Да, это может раздуть код.

Ответить | Правка | К родителю #109 | Наверх | Cообщить модератору

162. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Онаним (?), 05-Апр-21, 08:53 
Два варианта по каждому ветвлению?
Это не просто раздует код. Это раздует его в 2^N раз, где N - число последовательных ветвлений.
Короче удачи бороться с ветряными мельницами :D
Ответить | Правка | Наверх | Cообщить модератору

113. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –2 +/
Сообщение от Онаним (?), 04-Апр-21, 11:48 
> Откуда это следует?

Оттуда, что реальные данные известны только в рантайме.

> То что никто это не накодил != тому что это _невозможно_

Это невозможно потому, что у тебя нет конкретных входных данных на момент компиляции.
И не будет.

Ответить | Правка | К родителю #104 | Наверх | Cообщить модератору

119. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –1 +/
Сообщение от Lex (??), 04-Апр-21, 12:57 
И как же это процы неплохо-себе работают, а проги - исполняются, ведь заранее неизвестно, какие данные в ту прогу будут вводиться :)
Даже если никаких ветвлений предсказываться не будет, код как работал, так работать и будет, просто в рамках отдельно взятой архитектуры и ее реализации работать будет медленней.

Вы пытаетесь рассуждать об Эльбрусах аккурат как об х86_только_без_блока_предсказания_ветвлений( от которого у интела уже мозги кипят, этот блок занимает дофига места на кристалле, жрет немало энергии, притом, при каждом выполнении программы с одним и тем же набором данных ).
Да только Эльбрус - это совсем не х86. Настолько, что даже арм - и тот к х86 ближе.

И оптимизации да возможности там упираются далеко не только и не столько исключительно в управление ветвлениями( хотя и это тоже ), сколько в максимальном распараллеливании ака распределении нагрузки по всем ядрам, иначе часть ядер "забивается" НОП-ами.

Ответить | Правка | Наверх | Cообщить модератору

121. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Онаним (?), 04-Апр-21, 13:07 
Да, там наверняка есть волшебные руны, позволяющие входные данные, которые одним ногтем вобьёт секретарша, предсказать ещё на этапе компиляции.

Инфа 100%.

Ответить | Правка | Наверх | Cообщить модератору

124. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +3 +/
Сообщение от Аноним (109), 04-Апр-21, 13:22 
А кто-то говорил, что код _не будет_ работать без branch prediction?

С Эльбрусом проблема как раз в этом. Это звучит офигенно на бумажке. Сейчас выкинем блок предсказания ветвлений, жрёт много энергии, напишем дофига умный компилятор и вынесем все оптимизации из железа в софт (круто же - можно чинить в софте то, что на Интеле требует замены железа) и сделаем много простых и дешёвых ядер, которые можно будет разом нагружать работой одним VLIW-словом и хорошо параллелизовать код.

Только воз и ныне там. На практике оказывается, что нифига это нетривиально - раскидать вычисления в программе, чтобы эффективно забить VLIW-ядра. Хотя бы стабильно выше 50%. Зависимости по данным - они повсюду. А эффективно жонглировать инструкциями и оптимально нагрузить VLIW-процессор - это NP-hard задача. Вот и получается, что есть чудесная и во всех смыслах офигенная архитектура. Без больших и жрущих блоков предсказания ветвлений. Но, к сожалению, в отличие от блока предсказания ветвлений (который реально ускоряет код) - набумажечные преимущества VLIW на практике оказываются его недостатками. Ибо как задумано - это не работает.

Ответить | Правка | К родителю #119 | Наверх | Cообщить модератору

148. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от Аноним (147), 05-Апр-21, 00:46 
Как видим, кроме риально-ускорения-кода в комплекте шло еще over 9000 подстав...

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

Ответить | Правка | Наверх | Cообщить модератору

156. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +/
Сообщение от ptr128 (?), 05-Апр-21, 01:39 
Любая программа оперирует данными во время выполнения. Ничто не мешает компилятору, видя, что где-то дальше переменная будет использоваться для условного перехода, при присвоения этой переменной значения, сгенерить код предсказания ветвлений и инициировать спекулятивное чтение, в зависимости от значения полученного переменной. Достаточно, чтобы были в наличии свободные блоки CPU, которые могут этим заниматься в параллель основному потоку.
Причем у компилятора в этом случае возможностей намного больше, чем у процессора.
Разница в том, что CPU сам предсказывает ветвления и инициирует спекулятивное чтение руководствуясь одной и той же микропрограммой на все случаи жизни, тогда как компилятор VLIW формирует аналогичную микропрограмму, но уже оптимизированную для конкретного случая.

Другое дело, что из-за этого сложность VLIW компилятора возрастает существенно. И для тех же Эльбрусов существующие компиляторы используют потенциал VLIW, не намного больше, чем на половину. Там еще огромный простор для математики и разработки. С неведомыми перспективами.

Ответить | Правка | К родителю #113 | Наверх | Cообщить модератору

161. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –1 +/
Сообщение от Онаним (?), 05-Апр-21, 08:51 
Разница в том, что CPU делает это в процессе работы.
А любая попытка реализовать это программно - особенно префетч - сожрёт драгоценные такты и линейки кеша.
Более того, если мы говорим об одном проце фиксированной конфигурации - это ещё более-менее реализуемо, пусть даже и полностью неэффективно. Когда у нас появляются вариации (напомнить, сколько вариаций того же x86 за последние хотя бы 5 лет сменилось?) - хардкод оптимизаций будет промахиваться ещё и по ним. Вся прелесть рантайм-оптимизаций в том, что проц "знает" собственную структуру и "имеющиеся на руках" данные и адреса в каждый момент времени.
Ответить | Правка | Наверх | Cообщить модератору

168. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  –1 +/
Сообщение от ptr128 (?), 05-Апр-21, 10:50 
> А любая попытка реализовать это программно - особенно префетч - сожрёт драгоценные
> такты и линейки кеша.

В честь чего, если общением память-кеш в обоих случаях занимается отдельный блок CPU? Просто в одной случае он делает это по фиксированной в CPU микропрограмме, а в случае VLIW - по пользовательской.

> Более того, если мы говорим об одном проце фиксированной конфигурации

Отчасти Вы правы, дополнительные сложности появляются. Но если окончательную компиляцию в VLIW производить уже при установке программного обеспечения из того же LLVM/CLR, то эта проблема решаема.

Ответить | Правка | Наверх | Cообщить модератору

182. "Компания AMD подтвердила потенциальную подверженность CPU AM..."  +1 +/
Сообщение от Аноним (182), 05-Апр-21, 14:58 
> А вот в Эльбрусе никакого спекулятивного выполнения не надо. Там все это решается на уровне компиляции. Вообще свойственно всем VLIW архитектурам

Опыт Титаника никого ничему не учит. Ну что же, дойдите и вы до того же тупика, в который пришли Intel с HP 10 лет назад.

Ответить | Правка | К родителю #98 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру