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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Для начала следует заметить, что регистры - это логические... 03.07.05 12:55  Число просмотров: 3417
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 03.07.05 12:59  Количество правок: 2
<"чистая" ссылка>
Для начала следует заметить, что регистры - это логические устройства. Самое элементрарное из них - регистр хранения, он по сути похож на одну ячейку памяти. Чуть более сложные регистры - счетчики, сумматоры, регистры сдвига... Они, кроме того как могут просто хранить данные как оперативка, еще могут выполнять определенные действия. Нельзя же реализовать процессор без регистров.
Эта мысль могла прийти в голову не после пива, а после того как программист пересел программировать на 80386 процессор после 80286. Там (на 386) можно писать "cmp var1, var2", в отличии от 286, где это действие должно быть представлено двумя инструкциями "mov ax, var1" и "cmp ax, var2". Хуже дело будет обстоять с "add var1, var2". Здесь потребуется три инструкции "mov ax, var1", "add ax, var2" и "mov var1, ax". Причем на еще более старых процессорах кроме как ax (аккумулятором) никаким другим регистором и пользоваться нельзя было.
Вся беда в том, что современный процессор, выполняя инструкцию "add var1, var2" все равно загрузит в свой сумматор первый операнд, в другой регистр загрузит второй операнд, сложит и запишет результат в первый операнд. Этого не произойдет, если операндами будут регистры. Даже предположив, что на инкрементирование счетчика инструкций, извлечение и вычисление адресов операндов времени не тратится, регистровая операция может выполнится за один такт, что не произойдет при работе с памятью, поскольку хоть по одному такту на выборку из кэша и запись в кэш потратить придется.
"Оптимизировать под размер кэша" какого процессора? Программа должна прекрасно работать на любом процессоре, и на П-4 и на Целероне. Да и у П4 тоже разные объемы кэша могут встречаться. Это чтож получится - написали программу под П-4ЕЕ и работать она будет только у счастливых олигархов - обладателей соотв. процессора.
Если кэша 1 Мег - адресацию использовать 20 разрядную или округлить до 32? А если 2 мега - 21 разряд?
А как быть с переключением процессов на многозадачных ОС? Много раз в секунду кэш туда-сюда трансферить? И как это делать?
<theory> Поиск 








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


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