Другие языки программирования и технологии

За сколько тактов выполняются основные арифметические операции на современных компьютерах?

Интересуют операции сложения, вычетания, умножения, деления и может быть возведения в степень. От чего вообще зависит этот параметр? Зависит ли он от мощности процессора, его разрядности, или эта величина постоянная? А если величина большая или маленькая есть разница? Целая или вещественная? Если есть, дайте ссылку на книгу или статью, только современную. Можно на английском.
Для современных компьютерных процов с полным набором команд, количество тактов на операцию не является постоянной величиной - если команды/данные в кэш 2 то время одно, если во внешней памяти - то другое. Может так получиться, что ваша команда придется на момент какого-нибудь прерывания и будет отложена. Кроме того современные процы имеют встроенную многопоточность - те разные задачи выполняются различными участками проца. Я думаю, в идеале команды типа Имул, Адд, Суб будут выполнены за 3 или более такта.
МК
Максим Котов
270
Лучший ответ
Зависит от архитектуры процессора, программы
В общем тебе уже ответили.
Все зависит от самой микросхемы.
Будет микросхема в 1 такт - в 1 и выполнит.
Будет в несколько - в несколько выполнит.
ТС, у тебя каша в голове.

сложения, вычетания
эти может и за один (точно не помню, надо разбираться) , вот только перед выполнением операции один из операндов например должен быть в регистре, куда его нужно предварительно поместить командой MOV - т. е. явно побольше одного такта получается (за ассемблерной командой MOV скрывается несколько разных (в зависимости от операндов и адресации) команд реального процессора)

умножения, деления
за один или за несколько, см. также предыдущий текст

возведения в степень
нет такой операции

От чего вообще зависит этот параметр? Зависит ли он от мощности процессора, его разрядности, или эта величина постоянная?
От архитектуры процессора, программы в которой вызывается операция и т. д. Даже на асме не напишешь программы, где за одну команду (не такт процессора (!!)) будут умножаться два произвольных числа.

или вещественная?
лолшто?

Более-менее точно могу сказать, что быстро работают только операции сдвига, инкремент\декремент, xor быстрее обычного обнуления и т. д. Да и то - надо смотреть по конкретному процессору и компилятору.

Если есть, дайте ссылку на книгу или статью, только современную. Можно на английском.
Весь гугл пред тобой. Копай в сторону ассемблера, дизассемблирования, машинных команд процессора, архитектур и т. д. А мне сейчас лень это искать.
Жуков Михаил разложил в доль и поперёк
молодец
вся цифровая хрень построена на логике и оптимизации- чтобы сложить два числа компьютеру нужно" взять в руки " одно число затем другое только потом сложить- сколько тактов? - правильно- три
Насколько я помню из курса программирования такие данные:
сложение - 4 такта
вычитание 5 тактов
умножение 8 тактов
деление 11 тактов
деление на 2 (обрабатывается препроцессором) - 1 такт, также умножение;
Эти данные для чисел <=32 бита (для x86) размера
Tatul Unanyan
Tatul Unanyan
2 601
Вячеслав Дудник И как за такой бред кто-то мог поставить лайк?
Сложение и вычитание - это одинаковая команда.
Сложение 1 такт
Умножение 2 такта
Деление 140 тактов
В силу высокой производительности современных компьютеров, такие простые операции как сложение, вычитание, умножение, деление проводятся за один такт.
Евгений Пашинин Ссылка есть?
Евгений Пашинин Ссылка есть?
Леонид Ушаков Деление выполняется существенно медленнее остальных операций из-за невозможности внутреннего распараллеливания алгоритма.
>>Зависит ли он от мощности процессора, его разрядности
Нед, 1 такт это 1 такт. 3 Ггц это 3 миллиарда тактов. Зависит еще и от архитектуры проца, для х86 это одно, для АРМ эта цифра будет другая. Атлон тоже может выполнять некоторые операции иначе.

Некоторые операции могут выполняться параллельно, т. е. обе операции за 1 (или сколько там они) такт
Павел Лямзин http://www.wasm.ru/forum/viewtopic.php?id=10734
Павел Лямзин http://develab.narod.ru/asm/v15.htm