Почему операция «Сравнить и поменять местами» ограничена законом Амдала?

Мартин Томпсон утверждает, , что STM, который опирается на рефери, который опирается на CAS, в конечном итоге будет ограничен законом Амдала. закон Амдала состоит в том, что максимальная производительность параллельной программы ограничена параллель) часть программы. Говорит ли Мартин Томпсон, что CAS по своей природе непараллелен?




Ответы (1)


Я думаю, это именно его точка зрения. Обмен должен произойти после того, как станут известны результаты сравнения, поэтому в конечном итоге вы не сможете работать быстрее, чем "сравнить, затем поменять местами, затем следующее сравнение, затем следующий обмен, следующее сравнение...".

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

person David Schwartz    schedule 22.12.2013
comment
Не могли бы вы уточнить, о какой ситуации вы говорите (что такое CAS и в каком контексте)? Ясно, что два CAS в одном месте нельзя распараллелить, но это тривиальный результат, а два CAS в двух разных местах независимы, не так ли? Или вы говорите, что понимание Томпсона в основном заключается в том, что транзакции, борющиеся за одну и ту же ссылку, не будут произвольно хорошо масштабироваться? - person ; 22.12.2013
comment
Последний, борясь за одного и того же рефери, масштабироваться не будет. - person David Schwartz; 22.12.2013
comment
@DavidSchwartz Отличный ответ :). - person ipavlu; 18.07.2017