Есть ли способ программно / универсально определить максимальную скорость ОЗУ, которую поддерживает компьютер?
Скажем, у меня есть компьютер, стандартная 32- или 64-разрядная архитектура. Я могу поставить любую ОС (*nix, Windows и т. Д.). Есть ли какой-нибудь способ для компьютера опросить аппаратное обеспечение относительно максимальной поддерживаемой скорости ОЗУ, которая работает универсально?
Под "универсальным" я подразумеваю, что это решение должно работать даже на устройствах, которые ему не известны / во внутреннем словаре частей / чипсетов / процессоров / чего угодно. Прямо сейчас я могу бежать dmidecode
на случайном MB и 9/10 раз это даст мне правильные текущие спецификации системы. Но это не говорит мне о максимальной поддерживаемой скорости ОЗУ, и это также неверно больше, чем хотелось бы: особенно на новых материнских платах, работающих под управлением старых ОС, и в странных средах совместимости с UEFI/BIOS.
Это возможно? Если нет, то почему?
1 ответ
Я бы сказал, легко показать, что это невозможно.
В современной системе контроллер памяти находится на процессоре. Максимальная поддерживаемая частота памяти является меньшей из того, что поддерживает процессор и что поддерживает материнская плата. Без базы данных ЦП единственный способ определить максимальную частоту, которую поддерживает ЦП, - это сообщить BIOS. В то время как BIOS должны сообщать фактическую тактовую частоту в таблице DMI, нет стандартной записи для максимальной поддерживаемой частоты.
Другая проблема заключается в том, что таблица DMI имеет фактическую тактовую частоту. Если вы ищете эффективную частоту (как обычно сообщается скорость ОЗУ), это также потребует от программы понимания соотношения эффективности и фактической производительности ОЗУ. Что если QDR RAM станет популярным? Можете ли вы написать программу, которая может точно определять QDR SDRAM, которая еще даже не существует в качестве спецификации?