На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела FAQ в группе разделов С++.
1. Раздел FAQ предназначен для публикации готовых статей.
2. Здесь нельзя задавать вопросы, для этого существуют соответствующие разделы:
Чистый С++
Visual C++ / MFC / WTL / WinApi
Borland C++ Builder
COM / DCOM / ActiveX / ATL
Сопутствующие вопросы
3. Внимание, все темы и сообщения в разделе премодерируются. Любое сообщение или тема будут видны остальным участникам только после одобрения модератора.
Модераторы: B.V., Qraizer
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Преждевременная оптимизация, анализ и выводы.
    Цитата leo @
    RCR reg,1 для семейства P6, поскольку в офиц. оптим-мануалах ... а для 06h только Throughput = 4 и то для общего случая (без указания второго операнда)
    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/1
    Цитата leo @
    с учетом корреляции с adc\sbb
    Документ от Intel "248966-009 IA-32 Intel® Architecture Optimization" дает для ADC/SBB в лучшем случае 6/2. Документ наверное устарел, но видимо хотя бы для части процессоров эти данные правильные.
    Во имя Ctrl, Alt и святаго Del, Enter!

    Основам программирования не обучаю. Не интересно.
      Цитата 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), который наверняка свои супер-подробные сведения не из пальца высосал ;)
        Цитата AndNot @
        Давай отделять мух от котлет и не пытаться сравнить железо (SSE) с языком программирования (асмом)

        Отчего бы не сравнить? Тем более, что я не говорил о ручном набивании инструкций x86, пусть этим занимаются компиляторы с настройками максимальной оптимизации

        Цитата AndNot @
        В общем, если есть желание, то я непрочь провести тесты заново, создавай тему, а я поищу в загашниках те тесты, да напишем новые. Будет даже интересно узнать, насколько с тех пор улучшилась аппаратная реализация SSE (а в этом сомнений нет) и оптимизаторы компиляторов. Заодно и целочисленную арифметику протестируем, насколько я знаю CPU vs SSE еще никто не проводил.

        Желание есть, а вот знаний по SSE нет. То есть, если я и смогу предложить какие-то тесты, то только на высоком уровне с настройками для компилятора, принуждающими использовать тот или иной набор инструкций
        Такой вариант подходит?
        char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
        for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


        user posted image Чат Исходников в СкайпеНе тормози, форум теперь здесь!Чат Исходников в Дискорде
          B.V., создавай тему, предлагай конкретные тесты. Все желающие смогут выложить скомпилированный сишный код, из которого я выдеру нужную функцию и выложу готовый файл, с сорсами на асме, для замеров всеми желающими, на любых камнях. Эта мудреная схема нужна с той целью, что сишные компиляторы любят "шульмовать" и умело делают не только все возможные предвычисления, но и порой умело разносят вычисления по всему коду екзешника, из-за чего часть вычислений не попадает в замеры времени исполнения. С этим я уже сталкивался, после чего зауважал VC++ и IntelC :)
          Ну и по мере возможности буду предлагать свой код, под FPU и CPU (fixed point).
            Цитата leo @
            Нет, 06h это "классическая" архитектура P6 начиная с Pentium II\III
            На счет второго пня не уверен, но пень про точно выдавал на CPUID шестерку, как и последующий пень три :yes:
              В доке 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 ;)
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script Execution time: 0,0859 ]   [ 14 queries used ]   [ Generated: 18.11.19, 10:02 GMT ]