Temur
Знаток
(270)
13 лет назад
Для современных компьютерных процов с полным набором команд, количество тактов на операцию не является постоянной величиной - если команды/данные в кэш 2 то время одно, если во внешней памяти - то другое. Может так получиться, что ваша команда придется на момент какого-нибудь прерывания и будет отложена. Кроме того современные процы имеют встроенную многопоточность - те разные задачи выполняются различными участками проца. Я думаю, в идеале команды типа Имул, Адд, Суб будут выполнены за 3 или более такта.
rus lan
Знаток
(318)
13 лет назад
В силу высокой производительности современных компьютеров, такие простые операции как сложение, вычитание, умножение, деление проводятся за один такт.
К.Знаток (270)
5 лет назад
Деление выполняется существенно медленнее остальных операций из-за невозможности внутреннего распараллеливания алгоритма.
Костя Кузнецов
Мудрец
(17143)
13 лет назад
ТС, у тебя каша в голове.
сложения, вычетания
эти может и за один (точно не помню, надо разбираться) , вот только перед выполнением операции один из операндов например должен быть в регистре, куда его нужно предварительно поместить командой MOV - т. е. явно побольше одного такта получается (за ассемблерной командой MOV скрывается несколько разных (в зависимости от операндов и адресации) команд реального процессора)
умножения, деления
за один или за несколько, см. также предыдущий текст
возведения в степень
нет такой операции
От чего вообще зависит этот параметр? Зависит ли он от мощности процессора, его разрядности, или эта величина постоянная?
От архитектуры процессора, программы в которой вызывается операция и т. д. Даже на асме не напишешь программы, где за одну команду (не такт процессора (!!)) будут умножаться два произвольных числа.
или вещественная?
лолшто?
Более-менее точно могу сказать, что быстро работают только операции сдвига, инкремент\декремент, xor быстрее обычного обнуления и т. д. Да и то - надо смотреть по конкретному процессору и компилятору.
Если есть, дайте ссылку на книгу или статью, только современную. Можно на английском.
Весь гугл пред тобой. Копай в сторону ассемблера, дизассемблирования, машинных команд процессора, архитектур и т. д. А мне сейчас лень это искать.
ВРЕМЯВОДА
Гуру
(2617)
13 лет назад
вся цифровая хрень построена на логике и оптимизации- чтобы сложить два числа компьютеру нужно" взять в руки " одно число затем другое только потом сложить- сколько тактов? - правильно- три
Damir Aliev
Ученик
(105)
13 лет назад
>>Зависит ли он от мощности процессора, его разрядности
Нед, 1 такт это 1 такт. 3 Ггц это 3 миллиарда тактов. Зависит еще и от архитектуры проца, для х86 это одно, для АРМ эта цифра будет другая. Атлон тоже может выполнять некоторые операции иначе.
Некоторые операции могут выполняться параллельно, т. е. обе операции за 1 (или сколько там они) такт
DEXTER!.
Гуру
(2604)
13 лет назад
Насколько я помню из курса программирования такие данные:
сложение - 4 такта
вычитание 5 тактов
умножение 8 тактов
деление 11 тактов
деление на 2 (обрабатывается препроцессором) - 1 такт, также умножение;
Эти данные для чисел <=32 бита (для x86) размера
Виктор КадышевОракул (60799)
2 года назад
И как за такой бред кто-то мог поставить лайк?
Сложение и вычитание - это одинаковая команда.
Сложение 1 такт
Умножение 2 такта
Деление 140 тактов
От чего вообще зависит этот параметр? Зависит ли он от мощности процессора, его разрядности, или эта величина постоянная?
А если величина большая или маленькая есть разница? Целая или вещественная?
Если есть, дайте ссылку на книгу или статью, только современную. Можно на английском.