Как использовать MMX параллельно с операциями SSE
В Википедии написано:
Добавление поддержки целочисленных значений в SSE2 сделало MMX в значительной степени избыточным, хотя в некоторых ситуациях можно добиться дальнейшего повышения производительности, если использовать MMX параллельно с операциями SSE.
Означает ли это, что процессор может выполнять другую инструкцию MMX/SSE, когда он одновременно выполняет инструкцию SSE/MMX, потому что эти инструкции выполняются в отдельных модулях?
Или это просто означает, что, поскольку они используют разные регистры, вы можете использовать их вместе, не переключая режим (режим MMX и режим FPU не могут работать "водно и то же время", вам приходится переключаться в другой режим вручную)?
1 ответ
Современные процессоры не имеют отдельных исполнительных блоков для MMX и SSE, вместо этого они имеют 128-битные исполнительные блоки, которые могут выполнять микрооперации SSE или MMX. В последнем случае будет использоваться только половина вычислительной мощности процессора.
Единственное преимущество объединения инструкций SSE и MMX - дополнительные 8 регистров MMX. Если производительность ограничена давлением регистра, иногда это можно улучшить, используя регистры MMX в дополнение к SSE. Почти во всех случаях вы должны написать в ассемблере, чтобы сделать такие оптимизации.