EDIT / REWRITE:
Если вам нужны книги, Майкл Абраш хорошо поработал в этой области, языке Zen of Assembly, ряде журнальных статей, большой черной книге графического программирования и т. Д. Многое из того, что он настраивал, больше не является проблема, проблемы изменились. Из этого вы получите идеи о вещах, которые могут вызвать проблемы с горлышком, и о способах их решения. Самое важное - это рассчитать время и понять, как работают ваши временные измерения, чтобы вы не обманывали себя неправильными измерениями. Придумайте разные решения и попробуйте сумасшедшие, странные решения, вы можете найти оптимизацию, о которой вы не знали и не осознавали, пока не раскрыли ее.
Я только начал читать, но пока MIPS Run (ранняя / первая редакция) выглядит неплохо (обратите внимание, что ARM занял MIPS в качестве лидера на рынке процессоров, поэтому реклама MIPS и RISC немного устарела). Существует множество старых и новых учебников о MIPS. Mips предназначены для повышения производительности (в некотором смысле за счет разработчика программного обеспечения).
Узкие места сегодня попадают в категории самого процессора и входов / выходов вокруг него и того, что связано с этим вводом / выводом. Внутренности самих процессорных микросхем (для систем более высокого уровня) работают намного быстрее, чем может справиться с вводом / выводом, так что вы можете настроить только до тех пор, пока вам не придется выходить из чипа и ждать вечно. Сойти с поезда, от поезда до пункта назначения на полминуты быстрее, когда поездка на поезде была 3 часа, не обязательно стоит оптимизировать.
Все дело в изучении аппаратного обеспечения, вы, вероятно, можете оставаться в мире единиц и нулей и не должны разбираться в реальной электронике. Но, не зная интерфейсов и внутренних компонентов, вы не сможете настроить производительность. Вы можете изменить порядок или изменить несколько инструкций и получить небольшой импульс, но чтобы сделать что-то в несколько сотен раз быстрее, вам нужно нечто большее. Изучение множества различных наборов команд (языков ассемблера) помогает войти в процессоры. Я бы порекомендовал имитировать HDL, например, процессоры на opencores, чтобы понять, как некоторые люди делают свои проекты, и получить четкое представление о том, как действительно выжать часы из задачи. Знание процессоров велико, интерфейсы памяти огромны и требуют изучения, носителей (флэш-памяти, жестких дисков и т. Д.), А также дисплеев и графики, сетей и всех типов интерфейсов между всеми этими вещами. А понимание на уровне часов или как можно ближе к нему - вот что требуется.