📜 ⬆️ ⬇️

Flags / proc / cpuinfo for x86 architecture

All of us at least once in our lives have used the cat / proc / cpuinfo command. Many are just to find out the number of processors and cores in the system, some are about the support of a particular technology, for example, hardware virtualization.
However, very few linuksoids take the longest line of output seriously - the so-called flags , and even less know how one or another parameter is deciphered, since often the flags have wild and incomprehensible names. I will try to describe the majority of recognizable flags specific to the x86 architecture.

Bit of education


The / proc pseudo-file system is virtual and specific only to Linux kernels. It does not contain real directories and files, does not occupy space on your drive. Using the / proc file system is the most convenient way to get information about your system, including hardware. The / proc / sys subdirectory is also available, which is responsible for the current kernel parameters, which are both readable and writable. Most files are readable and understandable to humans.
Many programs that print system information use the / proc tree.

Entry


Let's do the pseudo file directly / proc / cpuinfo .
I propose to look at its typical content, from which we now throw out lines that are not interesting to us in the context of this article:

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_lm 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_lm 

As you can see, here is the server processor Intel Xeon 5130, which has two cores. Lots of obscure flags, right?
')

TOP5: what flags are most interested in


1. HT - Hyper-Threading support
Implementation of simultaneous multi-threading technology. The technology increases processor performance under certain workloads. If enabled, the system determines two logical processors per physical processor (core). Present exclusively in the series of processors Intel Xeon, Pentium 4, Atom, Core i3, Core i5, Core i7.
2. LM - Long Mode (x86-64 support)
Roughly speaking, if specified, the processor is made using 64-bit technology (also has the names: x86-64, x64, AMD64, Intel64, EM64T). This is an extension of the x86 architecture with full backward compatibility. In Intel processors, support has appeared since the late Pentium 4, for AMD - with the Athlon64.
3. VMX (Intel), SVM (AMD) - Hardware virtualization support
CPU support for Intel VT-x or AMD-V technologies means there are additional instructions for providing direct access to processor resources from guest systems. Allows you to bring the performance of guest systems to real and reduce the cost of performance in maintaining the host platform. Currently, Virtual Machine Extensions are supported in many Intel & AMD processors, although other processor architectures, for example, Cell, have similar extensions.
4. SSE *, SSSE *, XMM *, 3DNow !, MMX, etc.
Different instruction sets for processors. Widely used by compilers in order to optimize the code for a specific architecture.
5. AES - Intel Advanced Encryption Standard
This rather controversial set of instructions increases the performance when encoding / decoding AES, which is only present in the Intel Xeon series. Often used by fans of Intel to reinforce the steepness of the server line CPU, although it is quite well known that AMD processors are stronger in data encryption, for example, in the SHA algorithm.

Overclocking: full list of flags with decoding










Where to see for yourself?


Processor flags are well documented in the Linux kernel include files. The current flags were taken from kernel 2.6.36.1 in the ./arch/x86/include/asm/cpufeature.h file. The location may sometimes change or be different, use the find command .

Source: https://habr.com/ru/post/109394/


All Articles