[an error occurred while processing this directive]
|
мне довелось принять участие в разработке кэш контроллера - поэтому я потратил достаточно много времени на моделирование всяческих кэшей и LRU алгоритмов (пожалуюсь - весьма зря - так как 4way c упрощенным LRU алгоритмом (типа как в каких-то из 386х) дает хорошую эффективность (при предельной простоте реализации), а реализовали полностью ассоциативный алгоритм с полной матрицей перебора, при синтезе которого пришлось понапрягаться)
поэтому меня и напряг термин direct maped (имхо неправильно использованный ТИ), который насамом деле оказался 1-вэй (ну если есть таг память - то это уже ассоциативный кэш)
по выбору конфигурации программная память/кэш - я думаю время покажет, но даже на 2-вэй кэше можно получить 100% кэш промахов, а для 1-взй требуется лишь разместить подпрограмму (вызываемую из цикла) по адресу со смещением в размер кэша - чтобы получить 100% промахов
но я так понимаю, что переходы/вызовы вообще снижают производительность такой машинки и их надо избегать - либо inline (я доку по компилеру еще не читал), либо писать трудночитаемый линейный код.
по поводу конвеера (хотя это вобщем-то праздный вопрос, но в доке ответа я пока не увидел, хотя прочитал уже много) я понял, что двойной остановки не будет - то есть пока исполняется (вернее диспатчится - так как получается, что из-за отсутствия команд с latency больше 1 в 62хх время исполнения пакета из-за конвеера равно 1 такту независимо от delayed slots) один fetch пакет, другой выбирается из памяти. при этом пример с чтением/записью по той же шине не дает ответа на мой вопрос - так как в этом примере в любом случае организации конвеера - задержка будет суммироваться
прошу прощения за некую бредовость изложения, но чтения документации (тем более от ТИ) не способствует ясности разума ;)
E-mail: info@telesys.ru