История изменений
Исправление hateyoufeel, (текущая версия) :
Всё наоборот. Были 80-битные регистры, из них по 64 бита выделили под MMX.
Да, ты прав. Мой косяк.
Не знаю, я не пробовал. Можешь попробовать и возможно войдёшь в историю как автор этой технологии. Я про это только из-за нашей беседы подумал в первый раз.
Про это очень много кто думал. Вот что я нашёл:
For example with a line like this - MOVQ XMM0, RAX - we are storing the value of RAX in the lower half of XMM0 register. The problems are that it’s 5 bytes long, 0.5-clock throughput and a 2-clock latency compared to MOV RBX, RAX which is 3 bytes long, 0.33-clock throughput and only 1-clock latency. We will win in situations where otherwise PUSH/POP instructions or other memory-related moves are needed. Moving back to RAX is faster having 0.33-clock throughput.
Тыц: http://x86asm.net/articles/using-xmm-for-general-purpose-simd-with-gpr/index.html
То есть, доступ в xmmX медленнее и в целом сравним с L1 кешем, плюс приводит к увеличению размера кода, а значит нагрузка на память растёт в любом случае. Кеш использовать проще. Такие дела.
Исправление hateyoufeel, :
Всё наоборот. Были 80-битные регистры, из них по 64 бита выделили под MMX.
Да, ты прав. Мой косяк.
Не знаю, я не пробовал. Можешь попробовать и возможно войдёшь в историю как автор этой технологии. Я про это только из-за нашей беседы подумал в первый раз.
Про это очень много кто думал. Вот что я нашёл:
For example with a line like this - MOVQ XMM0, RAX - we are storing the value of RAX in the lower half of XMM0 register. The problems are that it’s 5 bytes long, 0.5-clock throughput and a 2-clock latency compared to MOV RBX, RAX which is 3 bytes long, 0.33-clock throughput and only 1-clock latency. We will win in situations where otherwise PUSH/POP instructions or other memory-related moves are needed. Moving back to RAX is faster having 0.33-clock throughput.
Тыц: http://x86asm.net/articles/using-xmm-for-general-purpose-simd-with-gpr/index.html
То есть, доступ в xmmX медленнее и в целом сравним с L1 кэшем, плюс приводит к увеличению размера кода, а значит нагрузка на память растёт в любом случае. Такие дела.
Исходная версия hateyoufeel, :
Всё наоборот. Были 80-битные регистры, из них по 64 бита выделили под MMX.
Да, ты прав. Мой косяк.
Не знаю, я не пробовал. Можешь попробовать и возможно войдёшь в историю как автор этой технологии. Я про это только из-за нашей беседы подумал в первый раз.
Про это очень много кто думал. Вот что я нашёл:
For example with a line like this - MOVQ XMM0, RAX - we are storing the value of RAX in the lower half of XMM0 register. The problems are that it’s 5 bytes long, 0.5-clock throughput and a 2-clock latency compared to MOV RBX, RAX which is 3 bytes long, 0.33-clock throughput and only 1-clock latency. We will win in situations where otherwise PUSH/POP instructions or other memory-related moves are needed. Moving back to RAX is faster having 0.33-clock throughput.
Тыц: http://x86asm.net/articles/using-xmm-for-general-purpose-simd-with-gpr/index.html
То есть, доступ в xmmX медленнее и в целом сравним с L1 кэшем. Такие дела.