LINUX.ORG.RU

История изменений

Исправление 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 кэшем. Такие дела.