Top.Mail.Ru
Ответы
Аватар пользователя
15лет
Изменено

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

Интересуют операции сложения, вычетания, умножения, деления и может быть возведения в степень.

От чего вообще зависит этот параметр? Зависит ли он от мощности процессора, его разрядности, или эта величина постоянная?

А если величина большая или маленькая есть разница? Целая или вещественная?

Если есть, дайте ссылку на книгу или статью, только современную. Можно на английском.

По дате
По рейтингу
Аватар пользователя
Ученик
15лет

Для современных компьютерных процов с полным набором команд, количество тактов на операцию не является постоянной величиной - если команды/данные в кэш 2 то время одно, если во внешней памяти - то другое. Может так получиться, что ваша команда придется на момент какого-нибудь прерывания и будет отложена. Кроме того современные процы имеют встроенную многопоточность - те разные задачи выполняются различными участками проца. Я думаю, в идеале команды типа Имул, Адд, Суб будут выполнены за 3 или более такта.

Аватар пользователя
Ученик
15лет

Насколько я помню из курса программирования такие данные:
сложение - 4 такта
вычитание 5 тактов
умножение 8 тактов
деление 11 тактов
деление на 2 (обрабатывается препроцессором) - 1 такт, также умножение;
Эти данные для чисел <=32 бита (для x86) размера

Аватар пользователя
Просветленный

И как за такой бред кто-то мог поставить лайк?
Сложение и вычитание - это одинаковая команда.
Сложение 1 такт
Умножение 2 такта
Деление 140 тактов

Аватар пользователя
Мастер
15лет

ТС, у тебя каша в голове.

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

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

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

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

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

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

Если есть, дайте ссылку на книгу или статью, только современную. Можно на английском.
Весь гугл пред тобой. Копай в сторону ассемблера, дизассемблирования, машинных команд процессора, архитектур и т. д. А мне сейчас лень это искать.

Аватар пользователя
Просветленный
15лет

разложил в доль и поперёк
молодец

Аватар пользователя
Знаток
15лет

вся цифровая хрень построена на логике и оптимизации- чтобы сложить два числа компьютеру нужно" взять в руки " одно число затем другое только потом сложить- сколько тактов? - правильно- три

Аватар пользователя
Ученик
15лет

В силу высокой производительности современных компьютеров, такие простые операции как сложение, вычитание, умножение, деление проводятся за один такт.

Аватар пользователя
Гуру
15лет

Ссылка есть?

Аватар пользователя
Гуру
15лет

Ссылка есть?

Аватар пользователя
Ученик
6лет

Деление выполняется существенно медленнее остальных операций из-за невозможности внутреннего распараллеливания алгоритма.

Аватар пользователя
Ученик
15лет

>>Зависит ли он от мощности процессора, его разрядности
Нед, 1 такт это 1 такт. 3 Ггц это 3 миллиарда тактов. Зависит еще и от архитектуры проца, для х86 это одно, для АРМ эта цифра будет другая. Атлон тоже может выполнять некоторые операции иначе.

Некоторые операции могут выполняться параллельно, т. е. обе операции за 1 (или сколько там они) такт

Аватар пользователя
Ученик
15лет

http://www.wasm.ru/forum/viewtopic.php?id=10734

Аватар пользователя
Ученик
15лет

http://develab.narod.ru/asm/v15.htm

Аватар пользователя
Мастер
15лет

В общем тебе уже ответили.
Все зависит от самой микросхемы.
Будет микросхема в 1 такт - в 1 и выполнит.
Будет в несколько - в несколько выполнит.

Источник: интеллект и никаких ссылок


Видео по теме