Хорошая презентация на сайте Infoq.com о том, как понимание микроархитектуры процессора помогает нам писать оптимальный код, работающий с минимальными задержками.
В презентации говорится:
- об устройстве современных многопроцессорных систем
- об устройстве современных многоядерных процессоров
- об устройстве и назначении регистров и кэшей трех уровней
- о назначении буфера ассоциативной трансляции (Translation Lookaside Buffer)
- о работе процессора с памятью
- о работе страниц виртуальной памяти
- о false sharing
- о привязке процессов к процессору и конкретному ядру процессора (pinning и affinity)
- о предсказателе ветвлений (branch prediction)
- о внутренних счетчиках производительности процессора
- о командах векторизации
- и проч…
и, наконец, о том, как это всё вышеперечисленное влияет на скорость работы вашей программы. Этакий краткий ликбез по основам связи «железа» с производительностью.