जीएनयू / लिनक्स पर, मैं अपना सीपीयू मॉडल नाम कैसे निर्धारित कर सकता हूं?


2

मैं अपने सीपीयू के बारे में जीएनयू / लिनक्स वातावरण में जानकारी प्राप्त करने के कई तरीकों से जानता हूं, cat /proc/cpuidविभिन्न उपयोगिताओं से, उदाहरण के लिए यहां देखें

हालांकि, उनमें से कोई भी मुझे यह नहीं बताता है कि मेरा सीपीयू मॉडल नाम क्या है। मेरा मतलब है, मेरे पास (चर्चा के लिए) एक इंटेल पेंटियम 4 530 जे है । लेकिन इसके बारे में मुझे जिस तरह की जानकारी मिल सकती है वह मूल रूप से है: निर्माता / विक्रेता, परिवार-मॉडल-स्टेपिंग, घड़ी की गति (अच्छी तरह से, कुछ और फ़ील्ड लेकिन यह मुझे लगता है कि ब्रांड की विशिष्ट पहचान करने के लिए पर्याप्त होना चाहिए)।

विंडोज पर हमारे पास निशुल्क (बीयर के रूप में) उपयोगिताओं जैसे HWInfo है जो हमें ब्रांड नाम (मेरे मामले में - संख्या 530 कहीं दिखाई देना है) बताती हैं । क्या लिनक्स के लिए भी कुछ ऐसा ही नहीं है?

टिप्पणियाँ:

  • कृपया ग्राफिकल वातावरण की आवश्यकता नहीं है। सख्ती से आदेश-पंक्ति ...
  • HWInfo CPU को "Intel Pentium 4 530J (Prescott, E0)" के रूप में पहचानता है। वह मूल रूप से वही है जो मैं देखना चाहता हूं।

जवाबों:


4

सबसे सरल, मूल निवासी होगा cat /proc/cpuinfo|grep vendor_id

[geek@phoebe ~]$ cat /proc/cpuinfo | grep vendor_id
vendor_id       : GenuineIntel
vendor_id       : GenuineIntel

(इसका दो बार मुद्रित कारण यह दोहरी कोर प्रणाली है)

दिलचस्प बात यह है इस dosen't मेरी raspi है, जो एक बहुत ही अलग प्रारूप है के साथ काम

मुझे नहीं लगता कि कई विकृतियों पर इसकी स्थापना की गई है, लेकिन lshw चाल भी करेगा। -class cpuसंबंधित जानकारी को केवल बाहर निकालने के लिए ध्वज का उपयोग करें

 सुडो लशव -क्लास सीपीयू
  *-सी पी यू
       विवरण: सीपीयू
       उत्पाद: Celeron (OEM द्वारा भरें)
       विक्रेता: इंटेल कॉर्प
       भौतिक आईडी: 34
       बस की जानकारी: cpu @ 0
       संस्करण: Intel (R) सेलेरॉन (R) CPU N2807 @ 1.58GHz
       स्लॉट: सॉकेट 0
       आकार: 1960 मेगाहर्ट्ज
       क्षमता: 2400MHz
       चौड़ाई: 64 बिट्स
       घड़ी: 83MHz

इसी तरह, यह मेरी रास्पबेरी पी पर काफी उसी तरह से काम नहीं करता है। हालांकि यह x86 बॉक्सन के अनुरूप होना चाहिए

Lshw के समतुल्य AMD विक्रेता का नाम उन्नत माइक्रो डिवाइसेस (AMD) है और विक्रेता के लिए / proc / cpuinfo रीडआउट है AuthenticAMD

(आप विक्रेता की एक पूरी सूची यहां देख सकते हैं )

संक्षेप में, विक्रेता ध्वज को 'ब्रांड' की पहचान करनी चाहिए और उत्पाद ध्वज की पहचान होनी चाहिए कि इसकी बिक्री क्या है।


1
/proc/cpuinfoवर्चुअल फ़ाइल का कार्यान्वयन लिनक्स कर्नेल के वास्तुकला-विशिष्ट भागों में निहित है। इसलिए यह ARM और MIPS और whatnot पर अलग दिखता है।
डैनियल बी

यह मेरी समस्या का समाधान नहीं है। दोनों ही मामलों में, आउटपुट में ब्रांड नाम शामिल नहीं है। GenuineIntelमुझे बहुत कुछ नहीं बताता है, और sudo lshw -class cpu | grep version:पैदावार 15.4.1(जो कि फैमिली है। मोडल.पार्टिंग)।
ईनपोकलम

संस्करण नहीं, विक्रेता। GenuineIntel इंटेल के लिए विक्रेता ID है
जर्नीमैन गीक

2
मुझे लगता है कि वह मॉडल का नाम चाहता है, ब्रांड का नाम नहीं।
डैनियल बी

@ डैनियलबी: कौन सा lshw भी आउटपुट करता है - यह अजीब है कि उसका सिस्टम कम नहीं है, लेकिन मुझे लगता है कि मुझे एक बड़ा नमूना आकार चाहिए।
जर्नीमैन गीक

0

खैर, विकिपीडिया पर , इस उद्देश्य के लिए एक उदाहरण ( केवल x86_64 ) विधानसभा सूची है:

.section .data

s0 : .asciz "Processor Brand String: %.48s\n"
err : .asciz "Feature unsupported.\n"

.section .text

.global main
.type main,@function
.align 32
main:
    pushq   %rbp
    movq    %rsp,   %rbp
    subq    $48,    %rsp
    pushq   %rbx

    movl    $0x80000000,    %eax
    cpuid

    cmpl    $0x80000004,    %eax
    jl  error

    movl    $0x80000002,    %esi
    movq    %rsp,   %rdi

.align 16
get_brand:
    movl    %esi,   %eax
    cpuid

    movl    %eax,   (%rdi)
    movl    %ebx,   4(%rdi)
    movl    %ecx,   8(%rdi)
    movl    %edx,   12(%rdi)

    addl    $1, %esi
    addq    $16,    %rdi
    cmpl    $0x80000004,    %esi
    jle get_brand

print_brand:
    movq    $s0,    %rdi
    movq    %rsp,   %rsi
    xorb    %al,    %al
    call    printf

    jmp end

.align 16
error:
    movq    $err,   %rdi
    xorb    %al,    %al
    call    printf

.align 16
end:
    popq    %rbx
    movq    %rbp,   %rsp
    popq    %rbp
    xorl    %eax,   %eax
    ret

इस कोड को किसी फ़ाइल में डंप करें, कहें cpumodel.Sऔर इसे gcc / गैस के साथ संकलित करें:

gcc cpumodel.S -o cpumodel

बाद में, आप इसे चला सकते हैं:

$ ./cpumodel
Processor Brand String: Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz

यह विधि शायद आपके लिए काम नहीं करेगी , क्योंकि ऐसा लगता है कि पेंटियम 4 / डी सीपीयू में उनके मॉडल का नाम इस तरह उपलब्ध नहीं है। जैसा कि आप यहाँ देख सकते हैं , CPUID डेटा में वह नहीं है जो आप चाहते हैं।


जब मैं इसे संकलित करने की कोशिश करता हूं, तो मुझे मिलता है: cpumodel.S: Assembler messages:\n cpumodel.S:12: Error: bad register name `%rbp'\n cpumodel.S:13: Error: bad register name `%rsp'आदि
einpoklum

इसके अलावा, यह सच नहीं है कि कुछ और नहीं होगा। HWInfo ब्रांड नामों के एक डेटाबेस का उपयोग करता है और केवल सीपीयू ही रिपोर्ट करता है उस पर भरोसा नहीं करता है।
einpoklum

1
डेटाबेस स्पष्ट रूप से काम करते हैं, लेकिन केवल अगर वे होते हैं जो आप देखना चाहते हैं। आपने दूसरे उत्तर पर कहा कि यह काम नहीं करता है। जाहिर है, यह कोड केवल x86-64 के लिए है, इसके बारे में क्षमा करें। चूँकि /proc/cpuinfoइसमें समान जानकारी है, इसलिए मुझे संदेह है कि यह कुछ भी उपयोगी होगा।
डैनियल बी

ओह, इसके विपरीत - यह विंडोज पर HWInfo के साथ काम करता है ...
einpoklum

हाँ, तो क्या? आपको क्या लगता है कि लिनक्स कर्नेल में एक एकीकृत सीपीयू मॉडल डेटाबेस है? यदि आप CPU इस CPUID क्वेरी का समर्थन नहीं करते हैं (हो सकता है कि यह BIOS सेटअप में अक्षम है), तो आप बस भाग्य से बाहर हैं।
डैनियल बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.