Автор Тема: Въпрос за работата на CPU-то  (Прочетена 2655 пъти)

supervas

  • Гост
Имам няколко въпроса относно изпълнението на инструкциите за събиране и умножение в процесоа. По-точно за това има ли значение големината на двете числа за времето (броя тактове) за извършване на съответната операция?
Най-добре ще е ако някой опише последователността на действията при двете операции.
Активен

kennedy

  • Напреднали
  • *****
  • Публикации: 2151
  • Николай Колев
    • Профил
Въпрос за работата на CPU-то
« Отговор #1 -: Jan 10, 2006, 13:02 »
хех,
ха сега да видим за кой процесор става въпрос .... 6502 ? 8086? 2,3,4,5х86 , нещо 64 битово '<img'>? всичко е много според зависи. вземи прочети нещо за асемблер, там точно са описани коя операция колко такта отнема за съответния процесор ....
Активен

"за всичко иде час" Еклесиаст 3:1
всеки пост - отговор на въпрос
-----------------
24.12.2003 "MS Free"

supervas

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

CTEHATA

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

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

supervas

  • Гост
Въпрос за работата на CPU-то
« Отговор #4 -: Jan 10, 2006, 13:55 »
За събирането и аз така предполагах. А как е при операцията умножение на числа от 2 регистъра и на регистър и зададена константа?
Активен

  • Гост
Въпрос за работата на CPU-то
« Отговор #5 -: Jan 10, 2006, 15:38 »
Ако константата за умножение е 2 става на всички процесори за един такт '<img'> (и с деленето на 2 е така '<img'>))))
Активен

supervas

  • Гост
Въпрос за работата на CPU-то
« Отговор #6 -: Jan 10, 2006, 20:42 »
Да това с шифтването наляво и на дясно го знам.
Въпроса ми е ако се делят/умножават две числа в общия случай, има ли значение какви са числата ако с е регистри и какъв е случая ако са в паметта?
Активен

kennedy

  • Напреднали
  • *****
  • Публикации: 2151
  • Николай Колев
    • Профил
Въпрос за работата на CPU-то
« Отговор #7 -: Jan 10, 2006, 21:19 »
естествено че има значение , няма как на един такт да вкараш по-голямо число от разряда на регистъра/акумулатора ...
Активен

"за всичко иде час" Еклесиаст 3:1
всеки пост - отговор на въпрос
-----------------
24.12.2003 "MS Free"

Dean79

  • Напреднали
  • *****
  • Публикации: 151
    • Профил
Въпрос за работата на CPU-то
« Отговор #8 -: Jan 13, 2006, 05:27 »
Не съм много на ти с компютрите, ама в процесорите май всъщност няма умножение и деление...
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Въпрос за работата на CPU-то
« Отговор #9 -: Jan 13, 2006, 10:11 »
Всъщност всички съвременни процесори си имат инструкции за умножение и делене. А това е нещото което те интересува на практика.
Активен

ochinko

  • Напреднали
  • *****
  • Публикации: 125
    • Профил
Въпрос за работата на CPU-то
« Отговор #10 -: Jan 13, 2006, 10:45 »
Отговарям по спомени, тъй че по-добре се разрови и прочети.

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

iive

  • Напреднали
  • *****
  • Публикации: 18
    • Профил
Въпрос за работата на CPU-то
« Отговор #11 -: Jan 13, 2006, 11:16 »
Почети тази статия . В нея има сравнение на първия Pentium4 с останалите нормални процесори както и няколко вида трикове за бързо умножение при известна константа.
Дадени са и линкове (дано работят) къд документациите на AMD и Intel. Препоръчвам да намериш документацията към класа процесори които ще ползваш и да погледнеш нещата там.

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

semionov

  • Напреднали
  • *****
  • Публикации: 110
    • Профил
Въпрос за работата на CPU-то
« Отговор #12 -: Jan 13, 2006, 13:53 »
Няма значение. Две 32-битови числа винаги се умножават за едно и също време, каквито и да са стойностите им. Ако са 64-битови (или 16) може времето да е различно, но пак не зависи от самите стойности, а от броя битове, с които са представени.
Активен

Dean79

  • Напреднали
  • *****
  • Публикации: 151
    • Профил
Въпрос за работата на CPU-то
« Отговор #13 -: Jan 13, 2006, 14:17 »
Не съм казвал, че няма инструкции за умножаване и деление... просто процесора обработва тези операции със събиране и изваждане...
Активен