/ Proc / cpuinfo में झंडे का क्या मतलब है?


212

मैं कैसे बता सकता हूं कि मेरे प्रोसेसर में कोई विशेष सुविधा है? (64-बिट इंस्ट्रक्शन सेट, हार्डवेयर-असिस्टेड वर्चुअलाइजेशन, क्रिप्टोग्राफिक एक्सेलेरेटर, आदि) मुझे पता है कि फाइल /proc/cpuinfoमें यह जानकारी है, flagsलाइन में है, लेकिन इन सभी क्रिप्टोकरेंसी का क्या मतलब है?

उदाहरण के लिए, निम्नलिखित अर्क को देखते हुए /proc/cpuinfo, क्या मेरे पास 64-बिट सीपीयू है? क्या मेरे पास हार्डवेयर वर्चुअलाइजेशन है?

model name      : Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.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 nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm tpr_shadow vnmi flexpriority

जवाबों:


275

86

(32-बिट aka i386-i686 और 64-बिट aka amd64। दूसरे शब्दों में, आपका वर्कस्टेशन, लैपटॉप या सर्वर।)

पूछे जाने वाले प्रश्न: मैं है ...

  • 64-बिट (x86_64 / AMD64 / Intel64)? lm
  • हार्डवेयर वर्चुअलाइजेशन (VMX / AMD-V)? vmx(इंटेल), svm(एएमडी)
  • त्वरित एईएस (एईएस-एनआई)? aes
  • TXT (TPM)? smx
  • एक हाइपरविजर (जैसे घोषित) hypervisor

अन्य विशेषताओं में से अधिकांश केवल संकलक या कर्नेल लेखकों के लिए रुचि रखते हैं।

सभी झंडे

पूरी सूची फ़ाइल में कर्नेल स्रोत में है arch/x86/include/asm/cpufeatures.h

इंटेल-परिभाषित CPU सुविधाएँ, CPUID स्तर 0x00000001 (edx)

इंटेल उन्नत वेक्टर एक्सटेंशन प्रोग्रामिंग संदर्भ में विकिपीडिया और तालिका 2-27 भी देखें

एएमडी-परिभाषित सीपीयू विशेषताएं, सीपीयूआईडी स्तर 0x80000001

इंटेल एडवांस्ड वेक्टर एक्सटेंशन प्रोग्रामिंग संदर्भ में विकिपीडिया और तालिका 2-23 भी देखें

ट्रांसमेटा-परिभाषित सीपीयू विशेषताएं, सीपीयूआईडी स्तर 0x80860001

  • recovery: सीपीयू रिकवरी मोड में
  • longrun: लॉन्ग्रुन पावर कंट्रोल
  • lrti: LongRun टेबल इंटरफ़ेस

अन्य विशेषताएं, लिनक्स परिभाषित मानचित्रण

  • cxmmx: Cyrix MMX एक्सटेंशन
  • k6_mtrr: AMD K6 गैरमानक MTRRs
  • cyrix_arr: साइरिक ARRs (= MTRRs)
  • centaur_mcr: सेंटूर MCRs (= MTRRs)
  • constant_tsc: TSC एक स्थिर दर पर टिक करता है
  • up: यूपी पर चल रहा एसएमपी कर्नेल
  • art: हमेशा चलने वाला टाइमर
  • arch_perfmon: इंटेल आर्किटेक्चरल परफॉमेंस
  • pebs: सटीक-घटना आधारित नमूनाकरण
  • bts: शाखा ट्रेस स्टोर
  • rep_good: प्रतिनिधि माइक्रोकोड अच्छी तरह से काम करता है
  • acc_power: AMD संचित शक्ति तंत्र
  • nopl: NOPL (0F 1F) निर्देश
  • xtopology: सीपीयू टोपोलॉजी एनम एक्सटेंशन
  • tsc_reliable: TSC को विश्वसनीय माना जाता है
  • nonstop_tsc: टीएससी सी राज्यों में नहीं रुकती है
  • cpuid: सीपीयू में सीपीयूआईडी इंस्ट्रक्शन है
  • extd_apicid: APICID को बढ़ाया है (8 बिट्स)
  • amd_dcm: मल्टी-नोड प्रोसेसर
  • aperfmperf: APERFMPERF
  • eagerfpu: गैर आलसी FPU बहाल
  • nonstop_tsc_s3: TSC S3 राज्य में नहीं रुकता है
  • tsc_known_freq: TSC ज्ञात आवृत्ति है
  • mce_recovery: CPU में पुनर्प्राप्त करने योग्य मशीन की जाँच है

इंटेल-परिभाषित CPU सुविधाएँ, CPUID स्तर 0x00000001 (ecx)

इंटेल उन्नत वेक्टर एक्सटेंशन प्रोग्रामिंग संदर्भ में विकिपीडिया और तालिका 2-26 भी देखें

VIA / Cyrix / Centaur- परिभाषित CPU सुविधाएँ, CPUID स्तर 0xC0000001

  • rng: रैंडम नंबर जेनरेटर मौजूद (xstore)
  • rng_en: रैंडम नंबर जेनरेटर सक्षम
  • ace: सीपीयू क्रिप्टो (xcrypt)
  • ace_en: सीपीयू क्रिप्टो सक्षम
  • ace2: उन्नत क्रिप्टोग्राफी इंजन v2
  • ace2_en: ACE v2 सक्षम
  • phe: पैडलॉक हैश इंजन
  • phe_en: PHE सक्षम
  • pmm: पैडॉक मोंटगोमरी गुणक
  • pmm_en: पीएमएम सक्षम

अधिक विस्तारित एएमडी झंडे: सीपीयूआईडी स्तर 0x80000001, ईएक्सएक्स

  • lahf_lm: एएच को फ्लैग्स (LAHF) से लोड करें और लॉन्ग मोड में AH को फ्लैग्स (SAHF) में स्टोर करें
  • cmp_legacy: यदि हाँ हाइपरथ्रेडिंग वैध नहीं है
  • svm: "सुरक्षित वर्चुअल मशीन": एएमडी-वी
  • extapic: विस्तारित APIC स्थान
  • cr8_legacy: 32-बिट मोड में CR8
  • abm: उन्नत बिट हेरफेर
  • sse4a: एसएसई -4 ए
  • misalignsse: इंगित करता है कि सामान्य-सुरक्षा अपवाद (#GP) उत्पन्न होता है जब कुछ लीगेसी SSE निर्देश बिना डेटा के संचालित होते हैं। इसके अलावा CR0 और संरेखण जाँच बिट पर निर्भर करता है
  • 3dnowprefetch: 3DNow निर्देश देखें
  • osvw: OS दृश्यमान वर्कअराउंड को इंगित करता है , जो ओएस को प्रोसेसर इरेटा के आसपास काम करने की अनुमति देता है।
  • ibs: नमूनाकरण के आधार पर निर्देश
  • xop: विस्तारित AVX निर्देश
  • skinit: स्किनिट / एसटीजीआई निर्देश
  • wdt: वॉचडॉग टाइमर
  • lwp: लाइट वेट प्रोफाइलिंग
  • fma4: 4 ऑपरेंड मैक निर्देश
  • tce: अनुवाद कैश एक्सटेंशन
  • nodeid_msr: NodeId MSR
  • tbm: ट्रेलिंग बिट मैनिपुलेशन
  • topoext: टोपोलॉजी एक्सटेंशन्स CPUID लीफ्स
  • perfctr_core: कोर प्रदर्शन काउंटर एक्सटेंशन
  • perfctr_nb: एनबी प्रदर्शन काउंटर एक्सटेंशन
  • bpext: डेटा ब्रेकप्वाइंट एक्सटेंशन
  • ptsc: प्रदर्शन समय-टिकट काउंटर
  • perfctr_l2: L2 प्रदर्शन काउंटर एक्सटेंशन
  • mwaitx: MWAITएक्सटेंशन ( MONITORX/ MWAITX)

सहायक झंडे: लिनक्स परिभाषित - विभिन्न CPUID स्तरों में बिखरे हुए सुविधाओं के लिए

  • ring3mwait: अंगूठी 3 MONITOR / MWAIT
  • cpuid_fault: इंटेल CPUID फॉल्टिंग
  • cpb: एएमडी कोर परफॉर्मेंस बूस्ट
  • epb: IA32_ENERGY_PERF_BIAS समर्थन
  • cat_l3: कैश अलोकेशन टेक्नोलॉजी L3
  • cat_l2: कैश अलोकेशन टेक्नोलॉजी L2
  • cdp_l3: कोड और डेटा प्राथमिकता L3
  • invpcid_single: प्रभावी ढंग से invpcidऔरCR4.PCIDE=1
  • hw_pstate: AMD HW-PState
  • proc_feedback: AMD ProcFeedbackInterface
  • sme: AMD सिक्योर मेमोरी एनक्रिप्शन
  • pti: कर्नेल पेज टेबल अलगाव (कैसर)
  • retpoline: Retpoline के लिए शमन स्पेक्टर संस्करण 2 (अप्रत्यक्ष शाखाओं)
  • retpoline_amd: एएमडी रेटपॉलिन शमन
  • intel_ppin: इंटेल प्रोसेसर इन्वेंटरी नंबर
  • avx512_4vnniw: AVX-512 तंत्रिका नेटवर्क निर्देश
  • avx512_4fmaps: AVX-512 गुणा संचित एकल परिशुद्धता
  • mba: मेमोरी बैंडविड्थ आवंटन
  • rsb_ctxsw: संदर्भ स्विच पर RSB भरें

वर्चुअलाइजेशन झंडे: लिनक्स परिभाषित

  • tpr_shadow: इंटेल टीपीआर शैडो
  • vnmi: इंटेल वर्चुअल एनएमआई
  • flexpriority: इंटेल फ्लेक्सपैरिटी
  • ept: इंटेल विस्तारित पेज टेबल
  • vpid: इंटेल वर्चुअल प्रोसेसर आईडी
  • vmmcall: के लिए पसंद करते VMMCALLहैंVMCALL

इंटेल-परिभाषित CPU सुविधाएँ, CPUID स्तर 0x00000007: 0 (ebx)

विस्तारित राज्य सुविधाएँ, CPUID स्तर 0x0000000d: 1 (eax)

  • xsaveopt: अनुकूलित XSAVE
  • xsavec: XSAVEC
  • xgetbv1: XGETBVECX = 1 के साथ
  • xsaves: XSAVES/XRSTORS

इंटेल-परिभाषित CPU QoS उप-पत्ता, CPUID स्तर 0x0000000F: 0 (edx)

  • cqm_llc: एलएलसी क्यूओएस

इंटेल-परिभाषित CPU QoS उप-पत्ता, CPUID स्तर 0x0000000F: 1 (edx)

  • cqm_occup_llc: एलएलसी अधिभोग निगरानी
  • cqm_mbm_total: एलएलसी कुल एमबीएम निगरानी
  • cqm_mbm_local: एलएलसी स्थानीय एमबीएम निगरानी

AMD- परिभाषित CPU सुविधाएँ, CPUID स्तर 0x80000008 (ebx)

  • clzero: CLZEROनिर्देश
  • irperf: निर्देश सेवानिवृत्त प्रदर्शन काउंटर
  • xsaveerptr: एफपी एरर पॉइंटर्स को हमेशा सेव / रिस्टोर करें

थर्मल और पावर मैनेजमेंट लीफ, CPUID लेवल 0x00000006 (eax)

  • dtherm(पूर्व में dts): डिजिटल थर्मल सेंसर
  • ida: इंटेल डायनेमिक एक्सेलेरेशन
  • arat: हमेशा रनिंग एपीआईसी टाइमर
  • pln: इंटेल पावर लिमिट नोटिफिकेशन
  • pts: इंटेल पैकेज थर्मल स्थिति
  • hwp: इंटेल हार्डवेयर पी-स्टेट्स
  • hwp_notify: HWP अधिसूचना
  • hwp_act_window: HWP गतिविधि विंडो
  • hwp_epp: HWP ऊर्जा प्रदर्शन वरीयताएँ
  • hwp_pkg_req: HWP पैकेज-स्तरीय अनुरोध

AMD SVM फ़ीचर आइडेंटिफिकेशन, CPUID लेवल 0x8000000a (edx)

  • npt: एएमडी नेस्टेड पेज टेबल सपोर्ट
  • lbrv: AMD LBR वर्चुअलाइजेशन सपोर्ट
  • svm_lock: एएमडी एसवीएम लॉकिंग एमएसआर
  • nrip_save: एएमडी एसवीएम नेक्स्ट_रिप सेव
  • tsc_scale: एएमडी टीएससी स्केलिंग सपोर्ट
  • vmcb_clean: AMD VMCB क्लीन बिट्स सपोर्ट करता है
  • flushbyasid: एएमडी फ्लश-बाय-एएसआईडी सपोर्ट
  • decodeassists: एएमडी डिकोड सहायता का समर्थन करता है
  • pausefilter: एएमडी फ़िल्टर ठहराव अवरोधन
  • pfthreshold: AMD पॉज़ फिल्टर थ्रेशोल्ड
  • avic: वर्चुअल इंटरप्ट कंट्रोलर
  • vmsave_vmload: वर्चुअल VMSAVE VMLOAD
  • vgif: वर्चुअल GIF

इंटेल-परिभाषित सीपीयू सुविधाएँ, CPUID स्तर 0x00000007: 0 (ecx)

  • avx512vbmi: AVX512 वेक्टर बिट हेरफेर निर्देश
  • umip: उपयोगकर्ता मोड निर्देश सुरक्षा
  • pku: यूजरस्पेस के लिए सुरक्षा कुंजी
  • ospke: OS सुरक्षा कुंजी सक्षम करें
  • avx512_vbmi2: अतिरिक्त AVX512 वेक्टर बिट हेरफेर निर्देश
  • gfni: गैलोज फील्ड नए निर्देश
  • vaes: वेक्टर एईएस
  • vpclmulqdq: कैर्री-कम गुणा डबल क्वाडवर्ड
  • avx512_vnni: वेक्टर तंत्रिका नेटवर्क निर्देश
  • avx512_bitalg: VPOPCNT [B, W] और VPSHUF-BITQMB निर्देश
  • avx512_vpopcntdq: DW / QW के वैक्टर के लिए POPCNT
  • la57: 5-स्तरीय पेज टेबल
  • rdpid: RDPID निर्देश

AMD- परिभाषित CPU सुविधाएँ, CPUID स्तर 0x80000007 (ebx)

  • overflow_recov: एमसीए ओवरफ्लो रिकवरी सपोर्ट
  • succor: अचूक त्रुटि रोकथाम और पुनर्प्राप्ति
  • smca: स्केलेबल एमसीए

सीपीयू बग का पता लगाया

  • f00f: इंटेल F00F
  • fdiv: CPU FDIV
  • coma: सिरिक्स 6x86 कोमा
  • amd_tlb_mmatch: tlb_mmatchएएमडी इरेटम 383
  • amd_apic_c1e: apic_c1eएएमडी इरेटम 400
  • 11ap: खराब स्थानीय APIC उर्फ ​​11AP
  • fxsave_leak: FXSAVE FOP / FIP / FOP लीक करता है
  • clflush_monitor: AAI65, CLFLUSH MONITOR से पहले आवश्यक
  • sysret_ss_attrs: SYSRET एसएस अटार्स को ठीक नहीं करता है
  • espfix: "" आईआरईटी से 16-बिट एसएस ईएसपी / आरएसपी उच्च बिट्स को भ्रष्ट करता है
  • null_seg: चयनकर्ता को शून्य करना आधार को संरक्षित करता है
  • swapgs_fence: GS पर इनपुट चित्र के बिना SWAPGS
  • monitor: दूरस्थ सीपीयू को जगाने के लिए आईपीआई की आवश्यकता होती है
  • amd_e400: इरेटम 400 से प्रभावित सीपीयू है
  • cpu_meltdown: सीपीयू मेल्टडाउन हमले से प्रभावित होता है और कर्नेल पेज टेबल अलगाव की आवश्यकता होती है
  • spectre_v1: सीपीयू सशर्त शाखाओं के साथ स्पेक्टर वेरिएंट 1 के हमले से प्रभावित है
  • spectre_v2: सीपीयू अप्रत्यक्ष शाखाओं के साथ स्पेक्टर वेरिएंट 2 के हमले से प्रभावित है
  • spec_store_bypass: CPU सट्टा स्टोर बायपास भेद्यता (स्पेक्टर वेरिएंट 4) से प्रभावित है ।

पुनश्च यह सूची arch/x86/include/asm/cpufeatures.hकर्नेल स्रोत से ली गई थी । झंडे स्रोत कोड के समान क्रम में सूचीबद्ध हैं। जब वे गायब हों, तो सुविधाओं के विवरणों के लिंक को जोड़कर मदद करें, उन सुविधाओं का संक्षिप्त विवरण लिखकर जिनके पास एक अनपेक्षित नाम हैं, और नए कर्नेल संस्करणों के लिए सूची को अपडेट करके। वर्तमान सूची लिनक्स 4.15 प्लस कुछ बाद के परिवर्धन से है।


1
धन्यवाद @Gilles और संपादकों के लिए एक जानकारीपूर्ण प्रश्न और इसके सारांश और विस्तृत उत्तर। अब, जो कुछ भी सीपीयू क्षमताओं की जांच करने के लिए, मैं निक्सक्राफ्ट से लिए गए निम्न का उपयोग करता हूं, उदाहरण के लिए इंटेल सीपीयू $ egrep -wo ^flags|vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo --color | sort -u:। और सीएलआई / जीयूआई उत्कृष्ट आई-नेक्स भी है
tuk0z

स्पष्टीकरण और लिंक का उत्कृष्ट संग्रह; सभी का धन्यवाद जिन्होंने योगदान दिया।
पॉल गियर

बग डेटा कहां से आया? यह cpufeatures.h फ़ाइल में सूचीबद्ध होना प्रतीत नहीं होता है।
डे्रजिसिल

@Drazisil जहाँ तक मुझे याद है सभी प्रविष्टियाँ संकेतित संस्करण से हैं cpufeatures.h। विवरणों को उन्हें अधिक व्यापक और अधिक जानकारीपूर्ण बनाने के लिए संपादित किया जाता है जहां किसी ने ऐसा करने का प्रयास किया।
गाइल्स

@Gilles जो सभी कीड़े के लिए मामला लगता है। यह निर्धारित करना कि वे नहीं हैं featuresमैं उन्हें उस फ़ाइल में नहीं देखता।
डे्रजिसिल

71

एआरएम

एआरएम प्रोसेसर पर, features:लाइन में कुछ विशेषताओं का उल्लेख किया गया है । केवल एआरएम आर्किटेक्चर से सीधे संबंधित सुविधाओं का उल्लेख किया गया है, न कि एक सिलिकॉन निर्माता या सिस्टम-ऑन-चिप के लिए विशिष्ट।

सीपीयू आईडी को देखने के लिए read_cpuid()और इसे प्रोसेसर प्रकार परिभाषाओं में देखने के लिए सुविधाओं को संकलन समय पर जाना जाता है जहां सुविधाओं को HWCAP_xxxझंडे के मुखौटे के रूप में व्यक्त किया जाता है । संगत तार hwcap_strआदि में हैंsetup.c

नीचे दी गई सूची में, ARMv6 ने SIMD निर्देश और डेटाटिप्स पेश किए। ARMv7 ने उन्नत SIMD निर्देश और डेटाटिप्स प्रदान किए। 32-बिट एआरएम मशीनों पर, neonउन्नत SIMD सिग्नल; जबकि asimd64-बिट आर्म मशीनों पर उन्नत SIMD के संकेत।

इसके अलावा, Hardware:लाइन प्रोसेसर मॉडल को इंगित करता है। मॉडल के आधार पर, अन्य फ़ाइलों में /procया /sysबूट-टाइम कर्नेल लॉग संदेशों में अन्य जानकारी हो सकती है । दुर्भाग्य से प्रत्येक एआरएम सीपीयू निर्माता के पास प्रोसेसर सुविधाओं की रिपोर्टिंग के लिए अपनी विधि है, यदि कोई हो।



11

86

इसे अपने आप को 4.1.3 x86 और इंटेल मैनुअल में खोजें

arch/x86/include/asm/cpufeature.h पूरी सूची शामिल है।

परिभाषित मूल्य प्रकार के होते हैं:

X*32 + Y

उदाहरण के लिए:

#define X86_FEATURE_FPU     ( 0*32+ 0) /* Onboard FPU */

सीपीयूआईडी से निकाले गए फीचर झंडे, अंदर संग्रहीत हैं:

  • __u32 x86_capability[NCAPINTS + NBUGINTS]; मैदान
  • का struct cpuinfo_x86 boot_cpu_data
  • पर परिभाषित किया गया x86/kernel/setup.c

जो __initकार्यों के माध्यम से आरंभ किया जाता है।

प्रत्येक x86_capabilityसरणी तत्व कहां से आता है:

| index | eax      | ecx | output | file        |
|-------|----------|-----|--------|-------------|
|     0 |        1 |   0 | edx    | common.c    |
|     1 | 80000001 |     | edx    | common.c    |
|     2 | 80860001 |     | edx    | transmeta.c |
|     3 |          |     |        |             |
|     4 |        1 |   0 | ecx    | common.c    |
|     5 | C0000001 |     | edx    | centaur.c   |
|     6 | 80000001 |     | ecx    | common.c    |
|     7 |          |     |        | scattered.c |
|     8 |          |     |        |             |
|     9 |        7 |   0 | ebx    | common.c    |
|    10 |        D |   1 | eax    | common.c    |
|    11 |        F |   0 | edx    | common.c    |
|    12 |        F |   1 | edx    | common.c    |

टिप्पणियाँ:

  • रिक्त प्रविष्टियों का अर्थ है: "विभिन्न स्थानों से" या "उपलब्ध नहीं"
  • index: का सूचकांक है x86_capability, जैसेx86_capability[0]
  • eaxऔर exc: हेक्स में CPUID के लिए इनपुट मान हैं। इनपुट जो उपयोग करते हैं exc, जो कम हैं, इसे सबलेफ़ कहते हैं ( eaxजड़ के साथ 2 स्तर के पेड़ का )।
  • output: वह रजिस्टर है जिसमें से CPUID आउटपुट लिया जाता है
  • file: वह फ़ाइल है जहाँ उन फ़ील्ड्स को परिभाषित किया गया है। पथ सापेक्ष हैं arch/x86/kernel/cpu/
  • transmeta: एक CPU विक्रेता का नाम था https://en.wikipedia.org/wiki/Transmeta जिसे नोवाफ़ोरा द्वारा अधिग्रहित किया गया था https://www.crunchbase.com/organization/novafora
  • centaur: एक CPU विक्रेता का नाम था https://en.wikipedia.org/wiki/Centaur_Technology जिसे VIA https://en.wikipedia.org/wiki/VIA_Technologies द्वारा अधिगृहीत किया गया था । Cyrix एक और एक है।

निष्कर्ष:

  • अधिकांश प्रविष्टियाँ सीधे CPUID आउटपुट रजिस्टर से आती हैं और common.cकुछ इस तरह से सेट की जाती हैं:

    c->x86_capability[0] = edx;
    

    सीपीयूआईडी के लिए इंटेल मैनुअल पर बैच में खोजना आसान है।

  • अन्य स्रोत भर में बिखरे हुए हैं, और बिट के साथ बिट सेट हैं set_cpu_cap

    उन्हें खोजने के लिए, git grep X86_FEATURE_XXXअंदर का उपयोग करें arch/x86

    आप आमतौर पर सीपीयूआईडी को घटा सकते हैं जो वे आसपास के कोड से मेल खाते हैं।

अन्य मजेदार तथ्य

  • झंडे वास्तव arch/x86/kernel/cpu/proc.cमें कोड के साथ मुद्रित होते हैं :

    seq_puts(m, "flags\t\t:");
    for (i = 0; i < 32*NCAPINTS; i++)
        if (cpu_has(c, i) && x86_cap_flags[i] != NULL)
            seq_printf(m, " %s", x86_cap_flags[i]);
    

    कहाँ पे:

    • cpu_has सुविधा के लिए मुख्य जाँच करता है।
    • x86_cap_flags[i] प्रत्येक झंडे के अनुरूप तार होते हैं।

    यह procसिस्टम सेटअप में कॉलबैक के रूप में पास हो जाता है । प्रवेश बिंदु पर है fs/proc/cpuinfo.c

  • x86_cap_flagsतार arch/x86/kernel/cpu/mkcapflags.hसीधे arch/x86/include/asm/cpufeature.h"पार्सिंग" से उत्पन्न होते हैं sed...

    आउटपुट arch/x86/kernel/cpu/capflags.cबिल्ड डायरेक्टरी में जाता है, और परिणामस्वरूप व्यूह दिखता है:

    const char * const x86_cap_flags[NCAPINTS*32] = {
        [X86_FEATURE_FPU]        = "fpu",
        [X86_FEATURE_VME]        = "vme",
    

    उदाहरण X86_FEATURE_FPUके लिए स्ट्रिंग "fpu"और इतने पर मेल खाती है ।

  • cpu_has कोड के साथ दो मामलों में टूट जाता है:

    #define cpu_has(c, bit)                         \
        (__builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit) ? 1 :  \
        test_cpu_cap(c, bit))
    

    वो हैं:

    • __builtin_constant_p(bit) && REQUIRED_MASK_BIT_SET(bit): कर्नेल को चलाने के लिए ध्वज की आवश्यकता होती है।

      यह अंदर डेटा द्वारा निर्धारित किया जाता है required-features.h, जो टिप्पणी करता है:

      Define minimum CPUID feature set for kernel These bits are checked
      really early to actually display a visible error message before the
      kernel dies.  Make sure to assign features to the proper mask!
      

      चूंकि वे संकलन समय (कर्नेल आवश्यकताओं) पर जाने जाते हैं, पहले से ही स्टार्टअप पर जाँच की जा चुकी है, अगर bitसंकलन समय पर जाना जाता है तो चेक को संकलन समय पर हल किया जा सकता है।

      इस प्रकार __builtin_constant_p(bit)जो जाँच करता है कि bitक्या संकलन समय स्थिर है।

    • test_cpu_cap: यह वैश्विक CPUIDसे डेटा का उपयोग करता हैstruct cpuinfo_x86 boot_cpu_data


3
आपने बताया कि संक्षिप्त नाम से लंबे नाम तक कैसे जाना है, लेकिन अक्सर यह कि नाम अब अधिक समझ में नहीं आता है, और cpuidयह अधिक सुविधाजनक तरीके से करता है। मैंने उस प्रश्न को एक जगह रखने के लिए कहा जहां नामों का दस्तावेजीकरण किया गया है।
गिल्स

@ यह ज्यादातर उन लोगों के लिए है जो टेबल बनाना चाहते हैं / टेबल में अपनी सुविधा नहीं पा सकते हैं, जैसे मुझे :-) लेकिन फिर भी, ज्यादातर मामलों के लिए, एक बार जब आप स्रोत के सही बिंदु को देखते हैं, तो सीपीयूआईडी का नक्शा है तत्काल।
सिरो सेंटिल्ली :07 改造 iro 六四 事件 '

10

या वैकल्पिक रूप से आप cpuidप्रोग्राम का उपयोग कर सकते हैं , यह डेबियन रिपॉजिटरी में होना चाहिए। यह कुछ स्पष्टीकरण के साथ आपके सीपीयू के बारे में हर संभव जानकारी को डंप करता है, इसलिए आपको उन अस्पष्ट झंडे नहीं मिलते हैं।


cpuidसंक्षिप्तियों का विस्तार करता है। मैं वास्तव में इसके आउटपुट स्पष्टीकरण नहीं कहूंगा । यह जानने का htमतलब है कि "हाइपर थ्रेडिंग" यह कुछ हद तक समझाता है, लेकिन यह जानने का mmxमतलब है कि "MMX निर्देश सेट", इतना नहीं है, और mcaइसका मतलब है कि "मशीन चेक आर्किटेक्चर", शायद ही।
गिल्स

6
@ गिल्स ... और फिर भी, "मशीन चेक आर्किटेक्चर" निश्चित रूप से "mca" से बेहतर Google क्वेरी है;)
एलोइस महदाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.