Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Pentium P54C тестовые регистры TR12 |
<<Назад Вперед>> | Страницы: 1 2 3 4 | Печать |
doctord
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 596 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 сен. 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 13 сентября 2016 13:55 Сообщение отредактировано: 13 сентября 2016 13:56
Замечательная программа SetMul (http://www.vogons.org/viewtopic.php?t=38613) помимо всего прочего имеет такие ключи: То есть на Pentium P54C можно выключить предсказание ветвлений, V Pipeline, и отдельно отключать кэш L1 для кода и кэш L1 для данных. -Pentium P54C test register "TR12" options. Parameters: Вот тут (https://www.vogons.org/viewtopic.php?t=47590&p=490976) товарищ пробует это дело на Pentium Overdrive 200. Ниже там пишут, что на обычных MMX Intel уже убрала эти регистры TR12, и они уже не работают. Так же пробуют эти ключи на Pentium 120 - опять неудача. А вот на P90 - работают. Пробовал ли кто-нибудь играть с этими регистрами? Как отражается на производительности? На каких процессорах они есть, на каких уже нету? |
BreakPoint |
NEW! Сообщение отправлено: 13 сентября 2016 14:38
doctord написал: Производительность упадет. Как отражается на производительности? А какой практический смысл? Вот проц выдает 100 попугаев, а вот мы ему все отключили и стало 50 попугаев. Да и результаты какие то странные у комрада. У него пень 200 - предсказание ветвлений - л1 кэш - пайплайн = 386-25Мгц ??? Это я не очень представляю. |
Сейчас на форуме |
Fasterpast
Advanced Member
Всего сообщений: 582 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 20 окт. 2013 |
Наверное на OD как раз и были эти регистры для снижения производительности, типа турбы, для совместимости. А пень так устроен, что без первого кэша будет еле дышать, что мы и видим. |
BreakPoint |
NEW! Сообщение отправлено: 13 сентября 2016 15:12 Сообщение отредактировано: 13 сентября 2016 15:31
В данном случае он не то что еле дышит, он скорее мертв чем жив. возможно при выключении L1 префетчер впадает в глубокую кому. Интересно, вот если кэш в пеньке это маст хев, то может и префетчер может только из кэша данные читать. если в кэше данных нет, то собственно и очередь префетчера все время пустая. А у 386 как ни как 16 байт имеется. UPD: Посмотрел на диаграмму пенька. У него же все чере кэш идет - получется что каждое обращение к памяти вызывает "промах кэша" со всеми вытекающими. |
Сейчас на форуме |
doctord
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 596 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 сен. 2014 |
Как всегда - спортивный интерес А какой практический смысл? Интересно, обгонит Pentium 486-ую машину без этих своих branch prediction и V Pipeline на одной частоте ) FSB допустим сделать 50MHz и на четверке можно, и на Pentium... И посмотеть, кто кого |
BreakPoint |
NEW! Сообщение отправлено: 13 сентября 2016 16:12
Как показала практика из пенька этими переключалками можно инвалида сделать )))) |
Сейчас на форуме |
doctord
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 596 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 сен. 2014 |
Всмысле? Насовсем? Как показала практика из пенька этими переключалками можно инвалида сделать )))) Глядите-ка без L1-кэша кода он медленнее, чем без L1-кэша данных )) Код важнее ) |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Это MSRки, они по определению различны на разных процессорах (даже имеющих одинаковое название). На каких процессорах они есть, на каких уже нету? А документация утверждает, что они там есть, но изменены. А именно: Ниже там пишут, что на обычных MMX Intel уже убрала эти регистры TR12, и они уже не работают. должно работать только на MMXах. CCD - Disable L1 code cache Что на вогонсах и подтверждают. Ключи, отключающие по отдельности кэши инструкций и данных, не работают на P120, но работают на POD200. Так же пробуют эти ключи на Pentium 120 - опять неудача. А вот на P90 - работают. 1) Овердрайвы и мобильные процы - это совсем не тоже самое, что десктопные. Надо смотреть документацию конкретно для них. Наверное на OD как раз и были эти регистры для снижения производительности 2) Они именно для снижения производительности. Для тестирования на стадии разработки и производства чипов и разработки плат под них. Для тестирования самого кэша тоже. Абсолютно нормальные. Отключишь кэши - и поймёшь, что со временём 386го мало что изменилось. Да и результаты какие то странные у комрада. И на ваш вопрос с вогонса: Нет. Собственно биты "отключения кэша" в TR12 запрещают именно cache line fill но не очищают кэш от уже имеющихся данных. PS. I wonder if P1 initiates cache line fill for each IO with disabled L1 cache Пока питание не дернёте. Или обратно в регистр нули не пропишите. Всмысле? Насовсем? В целочисленке - вряд ли. Интересно, обгонит Pentium 486-ую машину без этих своих branch prediction и V Pipeline на одной частоте ) |
doctord
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 596 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 сен. 2014 |
pahan, |
BreakPoint |
NEW! Сообщение отправлено: 13 сентября 2016 16:47
Важна интерпретация результатов, а не сами результаты. Может кэш данных более критичен потому что его долбят 2 очереди префетчера? А у данных префетчера нет.Так что для чистоты эесперимента еще и префетчер отключать надо. Эти результаты говорят о том, что отключение кэша это далеко не то же самое что отсутсвие кэша. |
Сейчас на форуме |
BreakPoint |
NEW! Сообщение отправлено: 13 сентября 2016 16:49 Сообщение отредактировано: 13 сентября 2016 16:52
pahan написал: Ну частота ядра и шины уж точно изменилась что со временём 386го мало что изменилось. По такой логике получатся что если разогнать 386 25МГц до 66МГц то произовдительность все равно будет как у 25МГц |
Сейчас на форуме |
doctord
Advanced Member
Откуда: Санкт-Петербург Всего сообщений: 596 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 сен. 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 13 сентября 2016 17:10 Сообщение отредактировано: 13 сентября 2016 17:21
Я так понимаю, дело тут в том, что x86-процессоры начиная с 486 (и Pentium, в том числе), очень сильно зависят от кэша L1, из-за своей конвеерной архитектуры. Вот нашел список всех MSR, если вдруг кому надо: https://github.com/cirosantill...1c/MSR.LST Действительно раздельное выключение L1 кода и данных есть только у P-MMX: MSR 0000000Eh - Pentium, K6, C6 - (TR12) NEW FEATURE CONTROL |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Если источник данных (память) будет работать на частоте 25 МГц, не столь важно, на сколь огромных частотах будет обрабатывать их ядро процессора. Что все давно видели на примере коппермайнов и нортвудов (особенно целеронов), когда рост только частоты ядра давал уменьшающийся почти до нуля рост производительности. Вот именно что важнее интерпретация результатов. Имхо, всё зависит от конкретной задачи (теста). В 3D тестах вычислений много - важнее кэш кода. В speedsys - важнее кэш данных (скорее всего, там какие-то СУБДподобные задачи - типа выбрать определённые строки из большого однотипного массива). Глядите-ка без L1-кэша кода он медленнее, чем без L1-кэша данных )) Код важнее ) |
BreakPoint |
NEW! Сообщение отправлено: 13 сентября 2016 20:16
pahan написал: Теоретически правильно. Но в данном конкретному случае Если источник данных (память) будет работать на частоте 25 МГц... во первых, и память у пенька пошустрее во вторых, шина поширее в третьих, очередь префетчера подлинее так что деградация до уровня 386-25МГц, как по мне, может быть вызвана только какими-то дополнительными расходами, вызванными отключением кэша. Мне кажется, даже при отключенном кэше, любой доступ к памяти начинается с cache lookup который естесвенно ничего не дает. И только после этого проц начинает операцию ввода вывода к памяти. |
Сейчас на форуме |
Fasterpast
Advanced Member
Всего сообщений: 582 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 20 окт. 2013 |
Грубо говоря, скорость кэша в 10 раз выше скорости памяти (особенно по задержкам), вот и производительность падает в 10 раз ) |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Скорее всего, вы правы. Изначально (при старте процессора) кэш отключен. Но дальше он включается, кэширует какие-то данные, и к тому моменту, когда мы отключаем кэш из тестовой проги, в нём уже что-то есть. А вот дальше самое интересное - даже при отключенном кэше, в случае если нужные данные находятся в нём, они будут взяты из кэша, но в случае промаха кэш обновлён не будет. В случае записи - они могут быть обновлены только в кэше, но не в памяти. Мне кажется, даже при отключенном кэше, любой доступ к памяти начинается с cache lookup который естесвенно ничего не дает. см. Pentium® Processor Family Developer’s Manual 24142805.pdf таблица 2.1 Не так уж и сильно - в 2-2,5 раза. во первых, и память у пенька пошустрее А это вообще мало влияет. Ну протаскивает он за такт в 2 раза больше данных. Только программе (особенно досовской) из 32/64 бит при этом скорее всего надо было только 8 или 16. Остальные будут проигнорированы. Широкая шина как раз актуальна в основном чтобы загонять данные в кэш. во вторых, шина поширее |
BreakPoint |
NEW! Сообщение отправлено: 14 сентября 2016 16:32
pahan написал: Вот именно, то есть при прочих равных у нас получатеся какой то условный 386ДХ-66. А получился 25. Не так уж и сильно - в 2-2,5 раза. pahan написал: Это по сути потдверждает мою теорию. Т.е. не смотя на "отключенный кэш" проц все равно не имеет обходных путей для общения в внешним миром в обход кэша. в случае если нужные данные находятся в нём, они будут взяты из кэша, но в случае промаха кэш обновлён не будет Т.е. при любой ИО операции к памяти проц сначала проверяет есть ли эти данные/код в кэше, и (кто бы мог подумать) их там не находит. Естественно на лукап уходит как минимум 4 цикла (а то и больше). Т.е. кэш становится тормозом системы, а не ускорителем. Поэтому я и говорю, что проц без кэша и проц с отключенным кэшом это не одно и тоже. pahan написал: Тут тоже не все так просто, во первых от широкой шины выиграет префетчер (по крайней мере в теории). Во вторых FPU. А это вообще мало влияет. Ну протаскивает он за такт в 2 раза больше данных. |
Сейчас на форуме |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Откуда цифра 4? Минимум 4 цикла - это как раз обращение к памяти уже после кэша. Естественно на лукап уходит как минимум 4 цикла (а то и больше). Да, в теории в 2 раза. В лучшем случае. Префетчер у классического пня - 2 буфера по 256 бит (т.е. в р-р строки опять же кэша). Одновременно работает только один, но он хотя бы будет качать вдвое быстрее. У MMX - 4 по 128 бит, что этот теоретический выигрыш убирает (качать 256 бит по 64 битной шине - тоже самое, что и 128 бит по 32битной). во первых от широкой шины выиграет префетчер (по крайней мере в теории) Тоже теория. FPU 1) не так уж часто и используется, а только там где он действительно нужен и 2) работает с 32, 64 или 80битными данными. Выигрыш дадут только два последних варианта. Во вторых FPU. |
BreakPoint |
NEW! Сообщение отправлено: 24 января 2017 15:14 Сообщение отредактировано: 24 января 2017 19:52
дошли руки немного поиграться с отключением кэша. получилась полная ерунда. под руками оказался Пень2 266 на 440LX. для начала написал на паскале простенький код, который заполняет память определенными значениями, а затем их читает. доступ к памяти осуществлялся двумя способами - последовательно. т.е. идеальный для кэша режим - и с чередованием в 128 байт. т.е. каждый последующий доступ должен с высокой долей вероятности вызвать промах кэша. естественно в первом случае программа работала в 4 раза быстрее, чем во втором. Затем отлючил оба кэша. И тут началось самое интересное. Во первых программа стала тупить не по детски. работать стало медленне раз в 50. Такое впечаление, что прерывание таймера не всегда отрабатывается. Хотя может у паскаля какие то свои тараканы по поводу таймера, но с другой стороны с кэшем же все нормально работает. UPD. С таймером это я тупанул |
Сейчас на форуме |
BreakPoint |
NEW! Сообщение отправлено: 24 января 2017 20:00 Сообщение отредактировано: 24 января 2017 20:38
Поставил конвингтон, чтоб Л2 кэш под ногами не путался. Получилось Включенный кэш: Последовательная запись: 0.17с Последовательное чтение: 0.16с Запись с форисрованным промахом кэша: 0.77с Чтение с форисрованным промахом кэша: 0.39с Выключенный кэш: Последовательная запись: 14.6с Последовательное чтение: 18.0с Запись с форисрованным промахом кэша: 15.2с Чтение с форисрованным промахом кэша: 17.9с Короче говоря, процу проще сделать кэш лукап+лайн филл чем с отключенным кэшем к памяти обращатся. Вот собственно и вопрос, откуда такой оверхед на отключенный кэш. |
Сейчас на форуме |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Думаю, с этим всё просто - к моменту разработки этих процессоров никто и не предполагал возможность их эксплуатации без кэша. Собственно, ковингтон - короткоживущий маркетинговый ублюдок, выросший из стремления максимально удешевить процессор и быстро провалившийся. Да и вообще, почти все нововведения в P6 (как и в P54) просто бессмысленны без кэша. Вот собственно и вопрос, откуда такой оверхед на отключенный кэш. Но изначальный-то спор у нас был вообще-то про P54(С). Вот на нём бы посмотреть замеры. Интересней как раз было провести этот тест на 286-586х - посмотреть, насколько отстутствие кэша будет влиять на производительность в разных поколениях. |
BreakPoint |
NEW! Сообщение отправлено: 24 января 2017 21:07
"ублюдочность" конвингтона тут ни при чем. П2 тоже самое показывает. а вот для чистоты эксперимента самый лучший экземпляр благодаря отсутсвию л2 кэша. тут ключевой вопрос деградация производительности при отключении л1 кэша. возможно тут проблема с тем, как отключаение кэша реализовано. есть у меня идея что проц после каждой ИО инвилидейтит и флашит кэш. попробую вручную такое сделать. думаю, для любого проца отключение кэша является нештатным режимом. кстати, у меня где то мамка сокет3 есть, так в ней в биосе отключение л1 кэша отнесено к режиму "детурбо". |
Сейчас на форуме |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Ага, он так обычно и реализовывался. кстати, у меня где то мамка сокет3 есть, так в ней в биосе отключение л1 кэша отнесено к режиму "детурбо". Э нет. думаю, для любого проца отключение кэша является нештатным режимом. Тут как раз интересно смотреть на самые древние и самые дешёвые. 286 и 386SX, когда на платах его просто могло не быть. 486 - особенно интересны поделия от Cyrix, когда для включения встроенного в процессор в кэша должна быть поддержка в биосе. 486-P5 - наши "любимые" платы с фейковым кэшем. Как вариант - платы без набортного L2 кэша и только с (пустым) разъёмом под COAST. |
Fasterpast
Advanced Member
Всего сообщений: 582 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 20 окт. 2013 |
Ну так это давно пошло, когда снижать частоту для эмуляции ХТ уже стало нереально, стали кнопкой турбо на 486 отключать кэш, которые без него работали как раз соответствующие (крайне тормознуто). |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Fasterpast написал: Есть вполне себе брендовые 486-е с опциональным L2 кэшем "хрен найдешь". 486-P5 - наши "любимые" платы с фейковым кэшем. И не скажу, что производительность без кэша падает катастрофически. |
Fasterpast
Advanced Member
Всего сообщений: 582 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 20 окт. 2013 |
Насколько я помню, там L1 отключается |
BreakPoint |
NEW! Сообщение отправлено: 24 января 2017 22:02
дело в том, что с внешним кэшем я таких тормозов не наблюдаю. как вы правильно заметили, внеший кэш может как присутсвовать, так и отсутсвовать - оба режима штатные. поэтому его наличие/отсутсвие дает более менее прогнозируемые результаты. а вот отключение Л1 кэша дает жесткий тупняк. Проверил на 166ММХ без л2 кэша Получилось Включенный кэш: Последовательная запись: 0.38с Последовательное чтение: 0.28с Запись с форисрованным промахом кэша: 0.33с Чтение с форисрованным промахом кэша: 0.77с Выключенный кэш: Последовательная запись: 6.3с Последовательное чтение: 6.6с Запись с форисрованным промахом кэша: 6.2с Чтение с форисрованным промахом кэша: 6.6с |
Сейчас на форуме |
BreakPoint |
NEW! Сообщение отправлено: 24 января 2017 22:04 Сообщение отредактировано: 24 января 2017 22:05
Rio444 написал: подтверждаю, через переходник апгрейдил безкэшевый сокет1 до am5x85-133 произодительность на уровне. И не скажу, что производительность без кэша падает катастрофически. |
Сейчас на форуме |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Внешний кеш поддерживается чипсетом, и даже в описании чипсетов (от Intel, да и других) указано что "cacheless configurations also supported". Те это вполне штатный режим, тогда как в P6 уже dual independed bus. Добавлю, что эффективность внешнего кеша на плате намного ниже (и не только из-за частоты!), поэтому и выигрыш от него (и проигрыш при отключении) не такой большой. |
BreakPoint |
NEW! Сообщение отправлено: 25 января 2017 0:23 Сообщение отредактировано: 25 января 2017 0:25
Интересно что на скорость влияет и то, как кэш отлючать, через CR0 или TR12 CR0 = 6сек TR12 (Data Cache Disabled) или TR12 (Data+Code Cache Disabled) = 4сек TR12 (Code Cache Disabled) = 2.5сек А в мане Интела сказано When TR12.CI is set to 1, all cache line fills are inhibited and all bus cycles due to cache misses are run as single transfer cycles (CACHE# is not asserted). Unlike CR0.CD, TR12.CI does not affect the state of the PCD output pin. This allows the first level cache to be disabled while the second level cache is still active and can be tested. Если эти тупняки из за PCD вывода, то возможно это не проц тупит, а внешняя логика. Правда куда этот вывод уходит осталось загадкой. В мане к 430 чипсету ничего похожего нет. |
Сейчас на форуме |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
А ещё можно (раз уж затронули P6) использовать MTRR и поставить всю память в режим uncacheable. и посмотреть, что будет Интересно что на скорость влияет и то, как кэш отлючать, через CR0 или TR12 Цитируйте уж полностью (я ещё в прошлый раз на этот момент обращал внимание): А в мане Интела сказано Note that the contents of the instruction and data caches are not affected by the state of TR12.CI, e.g., they are not flushed. The second level cache test sequence should be: set TR12.CI to 1, flush the internal caches, run the second level cache tests Т.е. на момент отключения кэша уровня 1 часть вашего кода (скорее всего большая) и данных всё равно в нём остаётся и замедление из-за доступа к памяти коснётся только тех данных и инструкций, которых в нём нет. CR0 также требует после себя явного сброса кэша, ибо: To completely disable the cache, the following two steps must be performed: |
BreakPoint |
NEW! Сообщение отправлено: 25 января 2017 19:00
это я учел. сетмул все по феншую делает - проверил. если ресетить после каждого запуска, результаты те же получаются. другое дело что до меня только сейчас дошло, что я сетмул неправильно запускал я думал что если запустить с ключем ссд, а потом с ключем дсд - то оба кэша отключатся. оказалось второй вызов включает код кэш. так что если оба кэша отключить, получается тоже что и с CR0. |
Сейчас на форуме |
BreakPoint |
NEW! Сообщение отправлено: 25 января 2017 21:31 Сообщение отредактировано: 25 января 2017 21:50
дальше интереснее. переписал процедуры чтения на ассемблере, что бы более четко разграничить код от данных. сам цикл чтения буквально несколько комманд, он вообще должен в префетчер помещаться. Так вот, когда код чтения маленький, то при отключении кэша данных время чтения из памяти становится таким же, как и при форсированных промахах кэша. что логично. теперь возникает вопрос, а почему прога на паскале давала совершенно другие результаты? Единственное отличие, длинна кода. Закопипаситив инструкцию mov al, [di] пол сотни раз сделал специально жирную процедуру и запустил прогу с отключенным кэшем данных. так вот разница выполнения "жирной процедуры"с кэшем данных и без около 30 раз. Вобщем результаты: Все включено: Чтение одного байта в цикле: 0.5сек Чтение с форсированным промахом: 2.2сек Чтение одного байта "жирной процедурой": 3 сек Выключен дата кэш: Чтение одного байта в цикле: 2.7сек Чтение с форсированным промахом: 2.7сек Чтение одного байта "жирной процедурой": 100 сек (!!!) получается, что при отключеннии кэша данных замедление работы зависит не только от скорости доступа к данным, но и от размера кода. Это надо обдумать Ну и вишенка на торте: при чтении из области данных БИОС (400h:0) пофигу, включет дата кэш или нет. |
Сейчас на форуме |
BreakPoint |
NEW! Сообщение отправлено: 27 января 2017 15:38 Сообщение отредактировано: 27 января 2017 15:39
немного начало проясняться. Сделел более детальные замеры Ссылка на результаты Мое первоначальное предположение подтердилось с точность до наоборот. Это не без кэша проц бешено тупит, это с кэшем он сверхзвуковой. Короче говоря, получилось что если "mov al, [di]" закопипастить 32 раза, то проц может читать 1.4 ГИГАБАЙТ/СЕК !!! Понятно что на частоте 166МГц сие просто невозможно. Сначала подумал, что компилятор просто код оптимизировал, и лишние операции чтения убрал. (Хотя компилеры в те времена особым интеллектом по части оптимизации не отличались). Запустил под отладчиком - нифига - все инструкции на месте! Получается, что код оптимизирует процессор. Проц видит 32 инструкции"mov al, [di]" без изменения адреса, и вместо того, чтобы честно выполнить чтение 32 раза, инициирует 1 ИО в память мимо кэша, а 31 операцацию тупо пропускает. Далее интересно, что чтение с форсированным промахом все равно быстрее чем прямое чтение из памяти когда кэш данных отключен. |
Сейчас на форуме |
pahan
Advanced Member
Откуда: Химки, М.О. Всего сообщений: 1070 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 13 мар. 2015 |
Не только адреса, но и содержащихся по нему данных. Проц видит 32 инструкции"mov al, [di]" без изменения адреса, и вместо того, чтобы честно выполнить чтение 32 раза, инициирует 1 ИО в память мимо кэша, а 31 операцацию тупо пропускает. Всё верно - MESI-протокол. При чтении обращение к памяти будет только в том случае, если соотв. строка кэша помечена как Invalid (т.е. данных в кэше нет или они были изменены в памяти кем-то другим). Иначе - данные всегда берутся только из кэша. В вашем случае состояние Exclusive, и после первой операции никаких обращений к внешней шине в принципе не будет. |
BreakPoint |
NEW! Сообщение отправлено: 27 января 2017 19:25 Сообщение отредактировано: 27 января 2017 19:26
процессор на частоте 166 миллионов герц впринципе может произвести 1.4 миллиарда операций чтения, тут даже кеш не поможет. т.к это 9 операций за такт. |
Сейчас на форуме |
BreakPoint |
NEW! Сообщение отправлено: 27 января 2017 21:55 Сообщение отредактировано: 27 января 2017 21:56
от я валенок, на 0 ошибся. цикл 100 раз проганял, а в таблице посчитал как 1000. теперь никаких чудес. Еще один интересны момент по отключению кэша кода (колонка Е) Цикл с одним "mov, al, [ds]" и с четырьмя выполнятеся прибилзительно одно и тоже время. Хотя во втором случае надо перегнать в 4 раза больше данных. При дальнейшем увеличении тела цикла время исполнения постепенно растет. Очень похоже, что когда тело цикла кототкое (от 1 до 4 операций mov) то код в префетчер доставляетя за 1 такт (т.к. шина 64 бита, а операция mov 2х байтная, соответсвенно в 64 бита влазит 4 mov'а) |
Сейчас на форуме |
<<Назад Вперед>> | Страницы: 1 2 3 4 | Печать |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Pentium P54C тестовые регистры TR12 |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |