Как стать автором
Обновить

Комментарии 4

НЛО прилетело и опубликовало эту надпись здесь
Зачем в 2009 году были сделаны новые способы узнать размеры кэшей (вызовы cpuid c параметрами 04h и с 80000006h)? Причем вроде до сих пор для некоторых процессоров используется старый способ получения данных о размере кэша, а для некоторых — новые.
Я могу лишь попробовать предположить, почему это так.

Изначально конфигурацию кэшей в IA-32 описывал CPUID лист 2. Спроектировали его не очень дальновидно. Формат кодирования информации в нём был выбран не самый гибкий, он не смог в будущем поддержать постоянные изменения в объёме и конфигурации нескольких уровней кэшей. В настоящее время использование информации из листа 2 не рекомендуется, там могут стоять 0xFF-ки.

Лист 0x80000006, судя по его «высокому» номеру (хотя я не уверен, документальных доказательств не нашёл), был добавлен не Intel. В нём попытались информацию листа 2 дополнить данными, которые требовались разработчикам софта. При этом опять же не было намерения предоставить пространство для роста.

Лист 4 — последнее и пока что наиболее гибкое представление данных о кэшах. Цена этому — добавление концепции подлистов, кодируемых в ECX. Каждый подлист описывает один кэш: данных, кода, общий, определяет уроень, ёмкость и т.д. Хватит ли этого формата надолго — поживём, увидим.

Дополню свою собственную статью сам.
В спецификациях относительно молодой архитектуры OpenRISC [1] идентификации расширений посвящена целая глава 15. Видно, что сначала архитекторы попытались отмахнуться от проблемы и завели единственный регистр VER для хранения пары версия/ревизия. Но впоследствии одумались и расширили семейство идентификационных регистров до адекватного набора. Появился Unit Present Register, позволяющий проверить наличие таких возможностей, как модуль трансляции адресов (MMU), кэши данных, счётчики производительности, модуль отладки и т.д. Регистр CPUCFGR кодирует наличие наборов инструкций для 64-битных операндов, FPU-модулей для 32- и 64-битных чисел с плавающей запятой, использование delay slot и др. О конфигурации TLB и его свойствах сообщает регистр DMMUCFGR. Аналогичные регистры есть для описания кэшей, Debug Unit, подсистемы, отвечающей за логику обработки исключений и т.д.
То есть, к счастью, разумный задел для гибкого развития семейства в эту архитектуру был заложен.

[1] OpenRISC 1000 Architecture Manual. Architecture Version 1.0 Document Revision 0 — December 5, 2012 opencores.org/websvn,filedetails?repname=openrisc&path=%2Fopenrisc%2Ftrunk%2Fdocs%2Fopenrisc-arch-1.0-rev0.pdf
Зарегистрируйтесь на Хабре, чтобы оставить комментарий