Я искал разницу между привязанными к ЦП и программами, привязанными к IO. Именно тогда я столкнулся с answers, объяснив, что существуют другие варианты, такие как привязка к памяти, привязка к кешу и т. Д.Цементирование связано с привязкой к кешу - могут ли выполняться инструкции без доступа к кеш-памяти? Может ли доступ к памяти быть таким же быстрым, как выполнение команды?
Я понимаю, как привязка памяти (умножение двух больших матриц в основной памяти) и IO Bound (grep) отличаются от друг с другом и с привязкой к границам CPU/Cache.
Однако разница между программами с привязкой к ЦП и программами IO Bound выглядит нечетко. Вот что я собрал:
Кэш-привязка - скорость доступа к кешу является важным фактором в определении скорости, с которой программа запускается. Например, если наиболее посещаемая часть программы представляет собой небольшой фрагмент кода внутри цикла, достаточно мала, чтобы содержаться в кеше, тогда программа может быть связана с кешем.
CPU bound - скорость, с которой процессор выполняет инструкции, является важным фактором при определении скорости выполнения программы.
Но как процессы могут быть связаны с ЦП? Я имею в виду, что инструкции нужно извлекать перед выполнением (из кеша/основной памяти) каждый раз, поэтому, независимо от того, насколько быстро процессор, ему придется подождать, пока кеш закончит передачу данных и, таким образом, будет, по крайней мере, привязан к кэшу или Memory, поскольку доступ к памяти медленнее, чем выполнение команды.
Так что же ЦП связано с кешем?
* инструкции должны быть выбраны до исполнения (из кэша/основной памяти) *. Почти все процессоры используют разбитый L1-кеш, поэтому команда-выборка не конкурирует с загрузкой/хранением данных (среди других причин). Когда код горячий в кеше L1, сам кеш не является узким местом. Узкие места для извлечения/декодирования называются узкими местами «переднего плана». –
Кроме того, даже не верно, что инструкции должны извлекаться из I-кеша L1 при каждом запуске: процессоры Intel SnB-семейства имеют кэш декодированного -уопа, а также буфер цикла, поэтому они могут запускать от средних до небольших циклов без повторное декодирование инструкций. –
Я не слышал о терминах, связанных с кешем, но я предполагаю, что это означает, что рабочий набор подходит для кеша L2 или L3, но не для кеша L1. Таким образом, узкие места кода в полосе пропускания и/или латентности для большего и более медленного кеша, чем L1D. Узкие места в кеш-керах, вероятно, будут конкретно упомянуты, потому что это относительно необычно. –