Очень интересная статья про Replay в Pentium 4

Тема в разделе "WASM.ZEN", создана пользователем CeBepyc, 28 фев 2005.

  1. CeBepyc

    CeBepyc New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2004
    Сообщения:
    2
    Адрес:
    Питербург
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Да, побольше бы таких статей, подробно раскрывающих внутренности, у Фога тоже есть немного:



    15.9 Memory intermediates in dependencies

    The P4 has an unfortunate proclivity for trying to read a memory operand before it is ready. If you write
    Код (Text):
    1. IMUL EAX,5
    2. MOV [MEM1],EAX
    3. MOV EBX,[MEM1]
    Then the microprocessor may try to read the value of [MEM1] into EBX before the IMUL and the memory write have finished. It soon discovers that the value it has read is invalid, so it will discard EBX and try again. It will keep replaying the read instruction until the data in [MEM1] are ready. There seems to be no limit to how many times it can replay a memory read, and this process steals resources from other processes. In a long dependence chain, this may typically cost 10 - 20 clock cycles!
     
  3. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Хорошая статья, но непонятно, зачем они тестированли такой код:
    Код (Text):
    1. IMUL EAX
    2. MOV [ESI], EAX
    3. MOV EBX, [ESI]
    4. 14*{ AND EBX, EBX } // and ebx, ebx, повторённое 14 раз


    Нормальный компилер (а человек тем более) поставит MOV EBX, EAX :).



    Случай с call тоже не достаточно прозрачен. Сам call довольно тормозная инструкция, у amd это vector path, может и у intel что-то вроде этого и все остальные инструкции "стопорятся" на время её выполнения
     
  4. MoonShiner

    MoonShiner New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    44


    А вдруг нормальному человеку потребуется сохранить результат в [esi]? =)
     
  5. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    S_T_A_S_ имел ввиду MOV EBX, [ESI] заменить Ж)
     
  6. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    Вообще-то фцентр давно рекламирует AMD и опускает интел (не реклама ли?) - даные этой статьи необходимо проверить, тем более в технической части они умолчали, как именно они добилить по их словам 1000 тактов реплея (может все это время процессор ждал например ввод вывод? извините на фоне наких задержек реплей будет попросту незаметен). А сам случай реплея по моим тестам вовсе не част и им вообще можно пренибречь, а MSRы реплея, по их словам недокументированые и отсутствующие в VTune очень даже документированы и в VTune присутствуют - сами померяйте кол-во реплеев. А их "невообразимые" эффекты, которые якобы никогда и никем не были замечены, тоже давно извесны и связаны с "Split Load Replays" и "Split Store Replays". Не знаю, что они там наразбирались с доками и патентами, но они явно не спецы по архитектуре, и хотя в статье есть правда (якобы вскрытая и в основном в вынесеной, второй части) но преподносится в таком виде что все указывает на то что статья рекламная. Вот тока вопрос, люди прочитавшие статью будут что-либо выяснять?
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Гы, тоже обратил внимание на сайт ? :)

    Зря на авторов наездаешь - один явно спектрумист (пишет LD вместо MOV) поэтому его отношение к intel вполне предсказуемо %))
     
  8. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
  9. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    ФАК супер :)))))))) хорошо, что я это всё давно понял. только вот, если бы понял ещё "давнее", то было бы гораздо лучше :))



    А что до пристрастий Ф-центра, дык понятно - that'$ life, intel почему не сделали симуляцию pipeline в VTune? могли бы за такие деньги, и сколько бы вопростов исчезло. amd же бесплатно предлагает.
     
  10. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    S_T_A_S_, как ты себе это представляешь? Эдакая махина. Не знаю по каким соображением не сделана полная програмная эмуляция - по сложности или маркетинг, но то что она ГОРАЗДО сложнее АМД это точно. Кстати и у АМД она не совсем точна, особенно по части Vector Path, а MSRы у АМД скуднее наскока я помню - и процессоры то от степпинга к степпингу меняются, так что походу это им нафиг не надо - по желанию код ведь можно "прощупать" MSRами и это будут реальные данные, а не модель...

    Естественно иметь точное представление как что происходит приятно и я сам не раз пользовался АМД код аналистом, но это хорошо, пока модель еще не достаточно сложна - а модель с 40 псевдоступенями прескотта имхо при оптимизации будет практически бесполезна, тоесть конечно полезна, и даже очень интересна(я бы не отказался :), но изучать ее голову сломаешь..

    Нет, я конечно сам бы очень хотел иметь модель П4, но интел помойму пошел по более простому для себя пути вот и все - типа вот вам MSRы, вот рекомендации, а дальше сами крутитесь, а то нам еще кучу степпингов делать, некогда все поддерживать, да и слишком сложно...
     
  11. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Ну я так думаю, что у intel'а есть какая-то "математическая модель", ктоторую они и "компилируют" в кремний.

    Откомпилировать её в dll - это вопрос лишь некоторых трудозатрат.



    Да, моделей у них сверхмного, но выбрали бы пару основных - немного усреднённый результат, для 99% случаев этого было бы сверхдостаточно :).



    А то, что CodeAnalyst показывает время выполнение для vector path меньше чем в 22007.pdf, я знаю. но это если параллельно замерять даже тем же rdtsc - всё сходится с хорошей точностью. Видимо, на каких-то стадиях vector path инструкции могут выполняться параллельно с direct path. В результате на практике скорость кода получается выше, чем в теории :).



    Вот это как раз и наваоит на мысль, что intel бы только выиграл от этого.
     
  12. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    S_T_A_S_



    Ну прям уж так все просто. Мы тут в россии тока каденсом и синопсисим научились пользоваться, интел конечно наверняка что-то свое юзает, но аналогию провести можно. Ну есть у тебя дизайн процессора, который далее топологам передается, дальше что? Тот кто этот дизайн сделал не сможет диалог на MFC сделать не то что "скомпилиповать" в длл. Тут цепочка гораздо сложнее. Короче самим дизайном в бинарном виде воспользоваться неудастся - в этом я уверен на 100%, тут нужны люди просто знающие архитектуру - они могут некую модель внести в VTune, но модель сложна и ее сделать и поддерживать очень сложно.
     
  13. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Про MFC верно подметил - первые версии CodeAnalyst ужасно глючили :) но свою главную функцию выполняли сразу.

    Я всё же думаешь, что у intel полноценные симуляторы есть - это просто удешевляет цикл разработки.
     
  14. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    S_T_A_S_, А я думаю есть только си модель процессора а не всей микроархитектуры. По крайней мере у нас в НИИСИ РАН именно так. Никто даже не думает микроархитектуру эмулировать, потому что идет процесс разработки, а ходить и втолковывать программистам, что сегодня намутили разработчики в дизайне никто не будет.