Performance и още нещо!
4 отговора
0 прегледа
Performance и още нещо!
Някой по-надолу се беше поинтересувал за колко цикъла се изпълняват инструкциите в процесора, така че реших да хвърля малко светлина по въпроса. За пример ще дам четирите най-използвани FPU
операции за някои x86 процесори - FADD, FMUL, FDIV и FSQRT:
Процесор - PII/III Athlon K6-x
Параметър* - A B A B A B
==========================================
FADD................1 3 1 4 2 2
FMUL................2 5 1 4 2 2
FDIV
(единична
точност)..........17 17 13 16 ? ?
FDIV
(двойна
точност)..........32 32 17 20 ? ?
FSQRT
(единична
точност)..........28 28 16 19 ? ?
FSQRT
(двойна
точност)..........57 57 24 27 ? ?
==========================================
* A - брой цикли, необходими за започване на нова инструкция
B - брой цикли, необходими за изпълнение на инструкцията
Performance и още нещо!
Sorry за таблицата. Лошо форматиране, надявам се да я разберете.
Performance и още нещо!
Neobhodimi sa i njakoi drugi dopulnenija . Za da ne izleze spored tablicata 4e K6 -X imat po dobro FPU ot PII/PIII .
PII/PIII imat dva konweira za 4isla s plawashta zapetaja a
ATHLON 3 takiwa - dokato K6 -X samo edin .
Performance и още нещо!
Имай предвид, че операциите FADD i FSUB (изваждане) са доста по-често използвани от повечето програми (игри най-вече) отколкото FDIV и FMUL, именно затова Intel е конверизирала
само тях. И друго, независимо, че PII има 2 FPU конвейра, той може да
извлича само 1 инструкция от буферите на всеки цикъл, така че паралелизъм се получава само по време на изпълнението на инструкциите и то частичен (ограничен от типа инструкции и тяхното
подреждане).