LINUX.ORG.RU

производительность?


0

0

Знающие люди подскажите какие выводи можно сделать из того что следующие три фрагмента кода работают одинаковое время:
1
.L13
addq $1, %rax
subsd %xmm0, %xmm2
cmpq %rdx, %rax
subsd %xmm0, %xmm3
jne .L13

2
.L13
addq $1, %rax
subsd %xmm0, %xmm2
cmpq %rdx, %rax
jne .L13

3
.L13
addq $1, %rax
subpd %xmm0, %xmm2
cmpq %rdx, %rax
jne .L13

Из 2 и 3 => вычитание двух упакованных чисел с плавоющей точкой двойной точности по скорости равно вычитанию одного не упакованного числа
Из 1 и 3 => вычитание двух упакованных чисел с плавоющей точкой двойной точности по скорости равно вычитанию двух неупакованных чисел

Что-то не вяжется или фича в параллельном исполнении инструкций cmp и subsd хотя и в этом случае не вяжется

Может кто знает как отличается скорость операций с упакованными числами от операций с неупакованными числами?

ЗЫ: или фича в том что в обоих вариантах операций < 4(5) а за раз конвеер может выполнять до 4 операций в том числе и SSE (на коре 2 ) и по факту операции все равно выполняются параллельно...

anonymous

> Может кто знает как отличается скорость операций с упакованными числами от операций с неупакованными числами?

Юров знает, поищи его книги.

phasma ★☆
()
Ответ на: комментарий от phasma

Какой имеено? немного по конкретнее моно?

anonymous
()

Может, это всё так мало, что не заметно на фоне твоего циклического сброса конвейера? Тогда бы цикл развернуть раз 10, да проверить снова.

Вообще, сложение/вычитание - операция очень простая. Я FPU ни разу не программировал - в те далёкие времена FPU у меня не было, но целочисленное вычитание уже тогда занимало столько же, сколько и NOP.

alexsaa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.