я вижу следующее, когда я запускаю Intel VTune на моей рабочей нагрузки:Устный Intel VTune выход
Memory Bound 50.8%
Я прочитал документ Intel, который говорит (Intel doc):
памяти Bound меры фракции слотами где трубопровод может быть остановлен из-за требований нагрузки или сохранения инструкций. Это объясняется главным образом неполными нагрузками на память в полете, которые совпадают с голоданием исполнения в дополнение к менее распространенным случаям, когда магазины могут подразумевать обратное давление на трубопровод.
Означает ли это, что примерно половина инструкций в моем приложении задерживается в ожидании памяти, или это более тонко, чем это?
Можете ли вы связать документ, чтобы мы могли видеть, что они подразумевают под слотом? Конвейерные процессоры вне очереди не просто запускают одну инструкцию за раз, поэтому ваша интерпретация не имеет смысла. Это не проблема пропускной способности, если одна команда должна ждать, но есть независимая работа, чтобы поддерживать работу процессора. Скорее всего, это мера циклов, в которых не выполнялись никакие удары или не удалялись. (Это почти наверняка не измерение интерфейса, если только оно не может отслеживать, почему ROB является полным или по какой-либо другой причине, препятствует выпуску uops.) –
Сделай это прямо сейчас в исходном сообщении. Благодарю. – Frank
Вкратце: не думайте, с какими инструкциями влияет что-то медленное; подумайте о том, позволяет ли ваш код процессору подавать свои голодные исполнительные блоки с работой, независимо от того, в каком порядке он происходит. –