![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.145.8] |
![]() |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата leo @ 06h - это мобильные процессоры. Для них декларируется "one cycle in Pentium 4 processor is NOT equal to one cycle in Pentium M processor" Примечание к таблице говорит, что вариант со сдвигом на 1 разряд является оптимизированным, сдвиг на другое значение является более тормозным. "248966-009 IA-32 Intel® Architecture Optimization" дает для RCR/RCL reg,1 значение 4/1RCR reg,1 для семейства P6, поскольку в офиц. оптим-мануалах ... а для 06h только Throughput = 4 и то для общего случая (без указания второго операнда) Документ от Intel "248966-009 IA-32 Intel® Architecture Optimization" дает для ADC/SBB в лучшем случае 6/2. Документ наверное устарел, но видимо хотя бы для части процессоров эти данные правильные. |
Сообщ.
#17
,
|
|
|
Цитата trainer @ 06h - это мобильные процессоры Нет, 06h это "классическая" архитектура P6 начиная с Pentium II\III, которая была без лишнего шума развита в Pentium M (во времена господства тупиковой ветки NetBurst), и затем стала основой современных Core. Достаточно в винде глянуть в "Сведения о системе" Processor -> Family или переменную окружения PROCESSOR_IDENTIFIER - для вариаций P4 это значение равно 15=0Fh, а для Core = 6 Ну и потом можно глянуть труды А.Фога (microarchitecture.pdf и instruction_tables.pdf), который наверняка свои супер-подробные сведения не из пальца высосал ![]() |
![]() |
Сообщ.
#18
,
|
|
Цитата AndNot @ Давай отделять мух от котлет и не пытаться сравнить железо (SSE) с языком программирования (асмом) Отчего бы не сравнить? Тем более, что я не говорил о ручном набивании инструкций x86, пусть этим занимаются компиляторы с настройками максимальной оптимизации Цитата AndNot @ В общем, если есть желание, то я непрочь провести тесты заново, создавай тему, а я поищу в загашниках те тесты, да напишем новые. Будет даже интересно узнать, насколько с тех пор улучшилась аппаратная реализация SSE (а в этом сомнений нет) и оптимизаторы компиляторов. Заодно и целочисленную арифметику протестируем, насколько я знаю CPU vs SSE еще никто не проводил. Желание есть, а вот знаний по SSE нет. То есть, если я и смогу предложить какие-то тесты, то только на высоком уровне с настройками для компилятора, принуждающими использовать тот или иной набор инструкций Такой вариант подходит? |
Сообщ.
#19
,
|
|
|
B.V., создавай тему, предлагай конкретные тесты. Все желающие смогут выложить скомпилированный сишный код, из которого я выдеру нужную функцию и выложу готовый файл, с сорсами на асме, для замеров всеми желающими, на любых камнях. Эта мудреная схема нужна с той целью, что сишные компиляторы любят "шульмовать" и умело делают не только все возможные предвычисления, но и порой умело разносят вычисления по всему коду екзешника, из-за чего часть вычислений не попадает в замеры времени исполнения. С этим я уже сталкивался, после чего зауважал VC++ и IntelC
![]() Ну и по мере возможности буду предлагать свой код, под FPU и CPU (fixed point). |
Сообщ.
#20
,
|
|
|
Цитата leo @ На счет второго пня не уверен, но пень про точно выдавал на CPUID шестерку, как и последующий пень три Нет, 06h это "классическая" архитектура P6 начиная с Pentium II\III ![]() |
Сообщ.
#21
,
|
|
|
В доке Intel® Processor Identification and the CPUID Instruction приведена кодировка Family & Model для всех процев от Intel486™ до "наших дней"
![]() PS: Кстати и в упомянутом trainer'ом мануале по оптимизации (по кр.мере в "свежем" 248966-020) перед таблицами латентностей приведена краткая справочка по кодировке Family_Model, в которой представлены все Core и Enhanced Core без различия по мобильности, и соотв-но цифирьки по ADC\SBB нужно смотреть в таблице C-13a, а не в C-13 ![]() |
![]() |
Сообщ.
#22
,
|
|
Преждевременная оптимизация – зло в том случае, если она снижает читабельность, или замедляет сочинение исходника. То есть когда увеличивает трудоёмкость создания и/или поддержки. Потому что усилия приложены, когда не известно, будет ли от них толк. Потому что когда окажется, что оптимизация нужна в другом месте, так как именно в другом месте она эффективней, окажется также, что сделанная оптимизация сделана вместо нужной. Может лучше будет вместо этого оптимизировать что-то другое? Ели же оптимизация прозрачна и дополнительного труда не требует, то не имеет значения, на каком этапе она сделана. Более значимой оптимизации она не мешает. Если ты точно знаешь, что быстрей присвоить литерал, чем гонять цикл, а вспомнить двенадцатую степень двойки можешь меньше, чем за секунду, то не имеет значения, сразу ты напишешь
![]() ![]() a=4096; ![]() ![]() for (a=1, i=12; i>0; a*=2, --i); |