Очень интересная статья про Replay в Pentium 4 Находится на сайте: http://www.fcenter.ru/online.shtml?articles/hardware/processors/12033 а также на: http://www.fcenter.ru/online.shtml?articles/hardware/processors/12032
Да, побольше бы таких статей, подробно раскрывающих внутренности, у Фога тоже есть немного: 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): IMUL EAX,5 MOV [MEM1],EAX 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!
Хорошая статья, но непонятно, зачем они тестированли такой код: Код (Text): IMUL EAX MOV [ESI], EAX MOV EBX, [ESI] 14*{ AND EBX, EBX } // and ebx, ebx, повторённое 14 раз Нормальный компилер (а человек тем более) поставит MOV EBX, EAX . Случай с call тоже не достаточно прозрачен. Сам call довольно тормозная инструкция, у amd это vector path, может и у intel что-то вроде этого и все остальные инструкции "стопорятся" на время её выполнения
Вообще-то фцентр давно рекламирует AMD и опускает интел (не реклама ли?) - даные этой статьи необходимо проверить, тем более в технической части они умолчали, как именно они добилить по их словам 1000 тактов реплея (может все это время процессор ждал например ввод вывод? извините на фоне наких задержек реплей будет попросту незаметен). А сам случай реплея по моим тестам вовсе не част и им вообще можно пренибречь, а MSRы реплея, по их словам недокументированые и отсутствующие в VTune очень даже документированы и в VTune присутствуют - сами померяйте кол-во реплеев. А их "невообразимые" эффекты, которые якобы никогда и никем не были замечены, тоже давно извесны и связаны с "Split Load Replays" и "Split Store Replays". Не знаю, что они там наразбирались с доками и патентами, но они явно не спецы по архитектуре, и хотя в статье есть правда (якобы вскрытая и в основном в вынесеной, второй части) но преподносится в таком виде что все указывает на то что статья рекламная. Вот тока вопрос, люди прочитавшие статью будут что-либо выяснять?
Гы, тоже обратил внимание на сайт ? Зря на авторов наездаешь - один явно спектрумист (пишет LD вместо MOV) поэтому его отношение к intel вполне предсказуемо %))
S_T_A_S_ ) амига рулит http://amitrans.narod.ru/content/Scene/alternate_faq.html и не надо грязи, у друга как рутор пашет с 200 гиговым винтом ))
ФАК супер ))))))) хорошо, что я это всё давно понял. только вот, если бы понял ещё "давнее", то было бы гораздо лучше ) А что до пристрастий Ф-центра, дык понятно - that'$ life, intel почему не сделали симуляцию pipeline в VTune? могли бы за такие деньги, и сколько бы вопростов исчезло. amd же бесплатно предлагает.
S_T_A_S_, как ты себе это представляешь? Эдакая махина. Не знаю по каким соображением не сделана полная програмная эмуляция - по сложности или маркетинг, но то что она ГОРАЗДО сложнее АМД это точно. Кстати и у АМД она не совсем точна, особенно по части Vector Path, а MSRы у АМД скуднее наскока я помню - и процессоры то от степпинга к степпингу меняются, так что походу это им нафиг не надо - по желанию код ведь можно "прощупать" MSRами и это будут реальные данные, а не модель... Естественно иметь точное представление как что происходит приятно и я сам не раз пользовался АМД код аналистом, но это хорошо, пока модель еще не достаточно сложна - а модель с 40 псевдоступенями прескотта имхо при оптимизации будет практически бесполезна, тоесть конечно полезна, и даже очень интересна(я бы не отказался , но изучать ее голову сломаешь.. Нет, я конечно сам бы очень хотел иметь модель П4, но интел помойму пошел по более простому для себя пути вот и все - типа вот вам MSRы, вот рекомендации, а дальше сами крутитесь, а то нам еще кучу степпингов делать, некогда все поддерживать, да и слишком сложно...
Ну я так думаю, что у intel'а есть какая-то "математическая модель", ктоторую они и "компилируют" в кремний. Откомпилировать её в dll - это вопрос лишь некоторых трудозатрат. Да, моделей у них сверхмного, но выбрали бы пару основных - немного усреднённый результат, для 99% случаев этого было бы сверхдостаточно . А то, что CodeAnalyst показывает время выполнение для vector path меньше чем в 22007.pdf, я знаю. но это если параллельно замерять даже тем же rdtsc - всё сходится с хорошей точностью. Видимо, на каких-то стадиях vector path инструкции могут выполняться параллельно с direct path. В результате на практике скорость кода получается выше, чем в теории . Вот это как раз и наваоит на мысль, что intel бы только выиграл от этого.
S_T_A_S_ Ну прям уж так все просто. Мы тут в россии тока каденсом и синопсисим научились пользоваться, интел конечно наверняка что-то свое юзает, но аналогию провести можно. Ну есть у тебя дизайн процессора, который далее топологам передается, дальше что? Тот кто этот дизайн сделал не сможет диалог на MFC сделать не то что "скомпилиповать" в длл. Тут цепочка гораздо сложнее. Короче самим дизайном в бинарном виде воспользоваться неудастся - в этом я уверен на 100%, тут нужны люди просто знающие архитектуру - они могут некую модель внести в VTune, но модель сложна и ее сделать и поддерживать очень сложно.
Про MFC верно подметил - первые версии CodeAnalyst ужасно глючили но свою главную функцию выполняли сразу. Я всё же думаешь, что у intel полноценные симуляторы есть - это просто удешевляет цикл разработки.
S_T_A_S_, А я думаю есть только си модель процессора а не всей микроархитектуры. По крайней мере у нас в НИИСИ РАН именно так. Никто даже не думает микроархитектуру эмулировать, потому что идет процесс разработки, а ходить и втолковывать программистам, что сегодня намутили разработчики в дизайне никто не будет.