Флаги /proc/cpuinfo для архитектуры x86


Предыдущая | Следующая

Все мы хоть раз в жизни использовали команду cat /proc/cpuinfo. Многие — лишь для того, чтобы узнать количество процессоров и ядер в системе, некоторые — узнать о поддержке конкретной технологии, например, аппаратной виртуализации.
Однако очень мало линуксоидов воспринимают всерьез самую длинную строку вывода — так называемые flags, а еще меньше знают, как расшифровывается тот или иной параметр, поскольку зачастую флаги имеют дикие и непонятные имена. Я постараюсь описать большинство распознаваемых флагов, специфичных для архитектуры x86.
 

Немного ликбеза


Псевдофайловая система /proc является виртуальной и специфична лишь для ядер Linux. Она не содержит реальных каталогов и файлов, не занимает места на вашем накопителе. Работа с файловой системой /proc — наиболее удобный способ получения информации о вашей системе, включая аппаратное обеспечение. Также имеется в наличии подкаталог /proc/sys, отвечающий за текущие параметры ядра, которые доступны как для чтения, так и для записи. Большинство файлов читабельно и вполне понятно для человека.
Многие программы, выводящие информацию о системе, используют дерево /proc.
 

Въезд


Займемся непосредственно псевдофайлом /proc/cpuinfo.
Предлагаю взглянуть на типичное его содержание, из которого мы сейчас выкинем строки, не интересующие нас в контексте данной статьи:
 

root@system:~# cat /proc/cpuinfo | egrep "(model name|flags)"model name      : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lmmodel name      : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx tm2 ssse3 cx16 xtpr dca lahf_lm


Как можно видеть, здесь представлен серверный процессор Intel Xeon 5130, обладающий двумя ядрами. Много непонятных флагов, не так ли?
 

TOP5: какими флагами интересуются больше всего


1. HT — Hyper-Threading support
Реализация технологии одновременной мультипоточности. Технология увеличивает производительность процессора при определённых рабочих нагрузках. Если включена, то система определяет два логических процессора на один физический процессор (ядро). Присутствует исключительно в сериях процессоров Intel Xeon, Pentium 4, Atom, Core i3, Core i5, Core i7.
2. LM — Long Mode (x86-64 support)
Грубо говоря, если указана, процессор выполнен по 64-битной технологии (также имеет названия: x86-64, x64, AMD64, Intel64, EM64T). Это расширение архитектуры x86 с полной обратной совместимостью. В процессорах Intel поддержка появилась с поздних Pentium 4, у AMD — c Athlon64.
3. VMX (Intel), SVM (AMD)-- Hardware virtualization support
Поддержка процессором технологий Intel VT-x или AMD-V означает наличие дополнительных инструкций для предоставления прямого доступа к ресурсам процессора из гостевых систем. Позволяет приблизить производительность гостевых систем к реальным и сократить затраты производительности на поддержание хостовой платформы. В настоящий момент Virtual Machine Extensions поддерживается во многих процессорах Intel & AMD, хотя подобные расширения имеют и другие процессорные архитектуры, например, Cell.
4. SSE*, SSSE*, XMM*, 3DNow!, MMX и пр.
Различные наборы инструкций для процессоров. Широко используются компиляторами в целях оптимизации кода под конкретную архитектуру.
5. AES — Intel Advanced Encryption Standard
Этот довольно спорный набор инструкций увеличивает производительность при кодировании/декодировании AES, присутствующий только у серии Intel Xeon. Часто используется фанатами Intel для подкрепления крутизны серверной линейки CPU, хотя довольно известен тот факт, что процессоры AMD более сильны в криптовании данных, например, в алгоритме SHA.
 

Разгон: полный перечень флагов с расшифровкой









 

Где посмотреть самому?


Флаги процессоров неплохо задокументированы в include-файлах ядра Linux. Текущие флаги были взяты из ядра версии 2.6.36.1 в файле ./arch/x86/include/asm/cpufeature.h. Расположение может иногда меняться или отличаться, пользуйтесь командой find.