Intel и AMD (и VIA и ...) - это разные компании;и (к сожалению) в этом не участвуют независимые органы стандартизации, ничто не заставляет вендоров сотрудничать между ними, и ничто не мешает поставщикам устраивать большие беспорядки, пытаясь заставить друг друга выглядеть плохо.
Когда AMD создала "CPUID,leaf 0x80000006 ", они сделали простую вещь - предположили, что размер строки кэша одинаков для всех кэшей, и поместили это в поле.
Однако (по крайней мере, в теории) каждый отдельный кэш может иметь разные«размер строки»;поэтому, когда Intel создала «CPUID, лист 0x00000004», они сделали это так, чтобы (теоретически) каждый отдельный кеш мог сообщать разный «размер строки».
Правильный способ - создать беспорядок, который решит проблему поставщика.беспорядок.В частности,для процессоров AMD вы можете использовать «CPUID, лист 0x80000006», если можете;а для процессоров Intel (и, думаю, для процессоров VIA) вы, возможно, захотите использовать «CPUID, leaf 0x00000004»;и во всех случаях, когда вы не можете (например, из-за того, что процессор слишком стар, чтобы поддерживать метод вендора), вы в конечном итоге сталкиваетесь с еще одним большим беспорядком (например, с использованием эвристики и / или использованием «vendor: family: model: stepping» для поискаинформация в статической базе данных).
Конечно, помимо этого, вы должны учитывать ошибки;это означает, что нужно просмотреть около сотни «обновлений спецификаций» и «Руководств для разработчиков BIOS и ядра», чтобы выяснить, нужны ли / где «обходные пути для особых случаев».
Примечание 1: Всевыше не слишком сложно, если единственное, что вас волнует, это размер строки кэша;но чем больше информации вы хотите, тем хуже она становится (например, если вы заботитесь о размере каждого кэша, то вам следует ожидать примерно в 10 раз больше хлопот и в 10 раз больше нагрузки на обслуживание).
Примечание 2. В идеале ОС должна предоставлять «предварительно очищенную информацию о процессоре»;чтобы его нужно было обновлять только в одном месте, и чтобы обычному программному обеспечению не приходилось иметь дело с бессмысленными «различиями поставщиков», ошибками, отсутствующей или противоречивой информацией;и прямое использование инструкции CPUID
будет запрещено (по соображениям удобства, корректности и безопасности).К сожалению, ни одна из существующих ОС не обеспечивает этого.