информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
 Рекордное число уязвимостей в 2021 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / dnet
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Если с полной ответственностью подойти к этому вопросу, то... 16.11.07 16:19  Число просмотров: 2809
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 16.11.07 16:26  Количество правок: 4
<"чистая" ссылка>
> > Может что-то другое имеется в виду под фразой "однако у
> > Pentium 4 нет аппаратной реализации циклического сдвига"?
> Он хочет узнать, есть аппаратная реализация этой
> инструкции, или нет...

Если с полной ответственностью подойти к этому вопросу, то он окажется более сложным, чем покажется на первый взгляд.
В связи с тем, что такие операции как сложение, инкрементирование (увеличение на 1) и похожие реализовывались даже в самых первых процессорах на базе соответствующих логических элементах (регистр параллельного сложения и регистр-счетчик), то сдвиг не является исключением. Сдвиговые логические устройства (регистры) стары, как мир, и реализация их более, чем просто аппаратная. Примером тому может послужить последовательный порт, который построен на базе микросхемы "регистр сдвига" плюс "регистр счетчик".
В принципе если аппаратной реализацией считать наличие соответствующей инструкции, то все документированные инструкции являются аппаратными так как не требуют программной реализации, но если вдаваться в подробности, то некоторые инструкции выполняются не совсем аппаратно, хотя и без программной реализации с точки зрения программиста/компилятора. Например такая инструкция как умножение (или деление), несмотря на то, что у процессора она выделена отдельной инструкцией, сложнореализуема в виде логического устройства АЛУ и реализуется на микрокоде. То есть процессор, встретив ее, выполняет несколько специально прописанных в нем инструкций для этого случая, представляющих последовательность простых инструкций сдвигов, сложений и сравнений с нулем. Таким же образом реализованы инструкции математического сопроцессора типа вычисление тригонометрических функций и логарифмов. Поэтому эти инструкции являются долговыполняемыми, например у 386 процессора умножение 32 разрядных чисел занимает более 32 тактов, а деление чуть больше, чем умножение. 486 же процессор может складывать два 32 битных числа за один такт, даже если они располагаются не в регистрах а в кеше первого уровня.
Если же рассмотреть многократный сдвиг (количество прописано в регистре CL), то более вероятно, что такая инструкция выполняется на микрокоде и максимальное время ее выполнения может растянуться на 32 такта.
В принципе можно построить регистр сдвига, который будет выполнять эту операцию (сдвиг на N или N раз) за 1-2 такта, как, впрочем, можно реализовать и умножатель 32 битных чисел за 5 тактов, но идут ли разработчики процессоров на это - вопрос открыт. Я полагаю, что АМДшники копают в этом направлении, поскольку при тех же тактовых частотах арифметика у их процов всегда была быстрее, а в последних процах и сопроцессор не отстает от интеловского. Следует учесть, что все не так просто. В часности, чтоб убыстрить умножение в несколько раз нужно в АЛУ закатать хитрое устройство-умножатель, который потянет на много милионов транзисторов, а что самое сложное, так это соединить их так, чтоб выравнить время прохождения сигнала. Ну очень хочется любому производителю, чтоб его процессор был очень быстр, по сравнению с конкурентским, но убить четырех зайцев не так просто, чтоб и меньше тактов на инструкцию, и выше частота, и меньше затрат на разработку и производство, и чтоб дешевый был, и чтоб меньше энергии потреблял.
Интересно, используются ли в "клиентах" инструкции сдвига на N бит или только на 1?
Много я написал, но считайте, что если процессор интеловый или АМДшный не из очень старых, то сдвиг реазован аппаратно.
<dnet> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach