Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: supervas в Jan 10, 2006, 11:41



Титла: Въпрос за работата на CPU-то
Публикувано от: supervas в Jan 10, 2006, 11:41
Имам няколко въпроса относно изпълнението на инструкциите за събиране и умножение в процесоа. По-точно за това има ли значение големината на двете числа за времето (броя тактове) за извършване на съответната операция?
Най-добре ще е ако някой опише последователността на действията при двете операции.


Титла: Въпрос за работата на CPU-то
Публикувано от: kennedy в Jan 10, 2006, 13:02
хех,
ха сега да видим за кой процесор става въпрос .... 6502 ? 8086? 2,3,4,5х86 , нещо 64 битово ???? всичко е много според зависи. вземи прочети нещо за асемблер, там точно са описани коя операция колко такта отнема за съответния процесор ....


Титла: Въпрос за работата на CPU-то
Публикувано от: supervas в Jan 10, 2006, 13:26
Знам, че в книжките за асемблер ги пише тези неща, но в момента нямам такава под ръка, а искам отговор сега {:->)
Процесора не е от значение. Предполагам за Intel Pentium ххх знаят най-много хора.


Титла: Въпрос за работата на CPU-то
Публикувано от: CTEHATA в Jan 10, 2006, 13:31
Цитат (supervas @ Ян. 10 2006,14:26)
Знам, че в книжките за асемблер ги пише тези неща, но в момента нямам такава под ръка, а искам отговор сега {:->)
Процесора не е от значение. Предполагам за Intel Pentium ххх знаят най-много хора.

Ако двата операнда се събират в регистър с разрядност като тази на процесора, то няма значение какви са те. Предполагам това отговаря на въпроса ти, но ако не си го задал вярно, можеш да се окажеш заблуден


Титла: Въпрос за работата на CPU-то
Публикувано от: supervas в Jan 10, 2006, 13:55
За събирането и аз така предполагах. А как е при операцията умножение на числа от 2 регистъра и на регистър и зададена константа?


Титла: Въпрос за работата на CPU-то
Публикувано от: в Jan 10, 2006, 15:38
Ако константата за умножение е 2 става на всички процесори за един такт ;) (и с деленето на 2 е така ;)))))


Титла: Въпрос за работата на CPU-то
Публикувано от: supervas в Jan 10, 2006, 20:42
Да това с шифтването наляво и на дясно го знам.
Въпроса ми е ако се делят/умножават две числа в общия случай, има ли значение какви са числата ако с е регистри и какъв е случая ако са в паметта?


Титла: Въпрос за работата на CPU-то
Публикувано от: kennedy в Jan 10, 2006, 21:19
естествено че има значение , няма как на един такт да вкараш по-голямо число от разряда на регистъра/акумулатора ...


Титла: Въпрос за работата на CPU-то
Публикувано от: Dean79 в Jan 13, 2006, 05:27
Не съм много на ти с компютрите, ама в процесорите май всъщност няма умножение и деление...


Титла: Въпрос за работата на CPU-то
Публикувано от: v_badev в Jan 13, 2006, 10:11
Всъщност всички съвременни процесори си имат инструкции за умножение и делене. А това е нещото което те интересува на практика.


Титла: Въпрос за работата на CPU-то
Публикувано от: ochinko в Jan 13, 2006, 10:45
Отговарям по спомени, тъй че по-добре се разрови и прочети.

Времето зависи от разрядността на числата, тъй че да - от големината в известен смисъл. За операции с цели числа времето е константно, докато при плаваща запетая броят тактове зависи от операндите.


Титла: Въпрос за работата на CPU-то
Публикувано от: iive в Jan 13, 2006, 11:16
Почети тази статия . В нея има сравнение на първия Pentium4 с останалите нормални процесори както и няколко вида трикове за бързо умножение при известна константа.
Дадени са и линкове (дано работят) къд документациите на AMD и Intel. Препоръчвам да намериш документацията към класа процесори които ще ползваш и да погледнеш нещата там.

Накратко, за днешните процесори цикъл на инструкция не е толкова точно понятие.  Големите конвейри, скаларните и супер скаларните архитектури усложняват простите сметки. По-важни са зависимостите между данните (когато резултатът от една иструкция е необходим на следващата) и разбира се достъпът до паметта (RAM-а е 10 пъти по-бавен от CPU-то и правилното използване на кеша е много важно).


Титла: Въпрос за работата на CPU-то
Публикувано от: semionov в Jan 13, 2006, 13:53
Няма значение. Две 32-битови числа винаги се умножават за едно и също време, каквито и да са стойностите им. Ако са 64-битови (или 16) може времето да е различно, но пак не зависи от самите стойности, а от броя битове, с които са представени.


Титла: Въпрос за работата на CPU-то
Публикувано от: Dean79 в Jan 13, 2006, 14:17
Не съм казвал, че няма инструкции за умножаване и деление... просто процесора обработва тези операции със събиране и изваждане...