Sisteme cu microprocesoare - users.utcluj.rousers.utcluj.ro/~apateana/02_cpuid.pdf · Identificarea...
Transcript of Sisteme cu microprocesoare - users.utcluj.rousers.utcluj.ro/~apateana/02_cpuid.pdf · Identificarea...
1. Identificarea resurselor PC
- instructiunea CPUID
- CPU-Z, AIDA64
2. Configurarea resurselor PC
- BIOS, EFI, UEFI
Identificarea si configurarea resurselor PC
Cuprins
p
A N C A A P A T E A N - U T C N
2
Pt verificare :
http://ark.intel.com/Default.aspx
Si prin soft :
Cpu-z
-> http://www.cpuid.com
“system of the week” (Febr.2015) ->
CARACTERISTICILE PROCESOARELOR DIN FAMILIA INTEL X86
MICROPROCESOARE PE 64 BITI
p
A N C A A P A T E A N - U T C N3
Sistem S0I Core i7 gen 4
Processor (CPU)
CPU Name: Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
Threading: 1 CPU - 4 Core - 8 Thread
Frequency: 4197.52 MHz (42 * 99.94 MHz)
Multiplier Current: 42 / Min: 8 / Max: 44
Architecture: Haswell / C0-Step (22 nm)
Cpuid: / Ext. .C.3 / 6.3C
IA Extensions MMX, SSE (1, 2, 3, 3S, 4.1, 4.2), EM64T, VT-x, AES, AVX, AVX2, FMA3, TSX
Caches: L1D : 32 KB / L2 : 256 KB / L3 : 8192 KB
Caches Assoc. :L1D : 8-way / L2 : 8-way / L3 : 16-way
Microcode: Rev. 0x0000019
TDP / Vcore : 88 Watts / 1.193 Volts
Type: Retail (Original Frequency : 4000 MHz)
Motherboard
Model: ASRock Z97 Extreme6
Socket: Socket 1150 LGA
North Bridge: Intel Haswell rev 06
South Bridge: Intel Z97 rev 00
BIOS : American Megatrends Inc. P1.20 (05/08/2014)
CARACTERISTICILE SISTEMULUI S0
Memory (RAM)
Total Size: 16384 MB
Type: Dual Channel (128 bit) DDR3-SDRAM
Frequency: 666.3 MHz - Ratio 1:5
Timings: 9-9-9-24 (tCAS-tRC-tRP-tRAS)
Slot #1 Module: Crucial Technology 8192 MB (DDR3-1337)
Slot #2 Module: Crucial Technology 8192 MB (DDR3-1337)
Graphic Card (GPU)
GPU #1 Type: Intel(R) HD Graphics 4600 @ 599 MHz
VRAM #1 Type: 2048 MB
GPU #2 Type: NVIDIA GeForce GTX 770 @ 1110 MHz
VRAM #2 Type: 1024 MB @ 3505 MHz
DirectX: 11.0
Storage (HDD/SSD)
Model #1: Western Digital WDC WD10EACS-22D6B0
Capacity #1: 1000 GB
Model #2: Western Digital WDC WD5000AAKS-22V1A0
Capacity #2 : 500 GB
I Core i7 gen 4
“cpu identification”
Documentatie:
[1] (Aug. 2017, Specification update)https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/7th-gen-core-family-spec-update.pdf
[2] (2016) 3-190 Vol. 2A,
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf
[3] (Mai 2012)
https://www.scss.tcd.ie/~jones/CS4021/processor-identification-cpuid-instruction-
note.pdf
[4] https://en.wikipedia.org/wiki/CPUID
[5] https://software.intel.com/en-us/node/703006
INSTRUCTIUNEA CPUID
Informatii despre CPU
dar si despre:
- Cache (in gen, tot in CPU)
- Placa de baza (mainboard)
- Memoria principala
( fila Memory si SPD)
- Placa grafica
- …
CE TIP DE INFORMATII ?Sistem S1
I Core i3 gen 5
la LAB
#include "stdio.h"
#include "stdafx.h"
int main (void)
{ int nr, neax0,nebx0,necx0,nedx0;
//printf ("Introduceti parametrul pt cpuid: \n");
//scanf ("%d ", &nr);
//switch to assembly
_asm
{ MOV EAX, 0
cpuid
mov neax0, eax
mov nebx0, ebx
mov necx0, ecx
mov nedx0, edx
}
printf ("EAX: %02d \t",0);
printf ("EAX: %08X \t",neax0);
printf ("EBX: %08X \t",nebx0);
printf ("ECX: %08X \t",necx0);
printf ("EDX: %08X \n",nedx0);
return 0;
}
CUM SE POT OBTINE ACESTE INFORMATII?
SUB VISUAL C++
Identificarea si configurarea resurselor PC
1. Identificarea resurselor PC - CPUID
p
A N C A A P A T E A N - U T C N
8
CPUID (CPU IDentification) = o instructiune x86 – Intel 1993 – inca de la unele 486↑
- codul operatiei (de la codificarea instructiunilor) = 0FA2h
- nu are operanzi, dar are PARAMETRII la INTRARE (inainte de executie): registrul EAX (uneori si ECX)- valoarea din registrul EAX – specifica informatia returnata
- este specifica arhitecturii x86 (Intel si AMD), alte arhitecturi furnizand registre “on-chip”
ce pot fi citite si interpretate pt a obtine acelasi tip de informatii
- poate determina tipul procesorului si prezenta caracteristicilor (precum FPU,MMX,SSE,PSN,…)
Prima data :
-CPUID trebuie executata cu EAX = 0
=> EAX=valoarea maxima suportata de CPUID = val max. acceptata pt functii standard
-CPUID trebuie executata cu EAX = 80000000h (b31=1)
=>EAX=valoarea maxima suportata de CPUID = val max. acceptata pt functii extinse
Sunt returnate 2 tipuri de informatie: Informatii despre functiile de baza si informatii despre functiile extinse
Ce se intampla daca executam cpuid cu o valoare mai mare in EAX decat val. max acceptata ?
Daca val. din EAX dinainte de executia instructiunii CPUID este > val maxima coresp functiilor std sau ext pt acel CPU, atunci pt acea intrarese returneaza aceeasi informatie ca si pt val maxima acceptata [2]
Exemplu: daca val din EAX e mai mare decat cea maxim admisa
Pt un CPU Intel Core i7: (CPUID.EAX=0 -> EAX=0Bh - val max pt functii std)
CPUID.EAX = 05H (* Returneaza MONITOR/MWAIT leaf. *)
CPUID.EAX = 0AH (* Returneaza Architectural Performance Monitoring leaf. *)
CPUID.EAX = 0BH (* Returneaza Extended Topology Enumeration leaf. *)
CPUID.EAX = 0CH (* INVALID: Returneaza aceeasi info ca si CPUID.EAX = 0BH. *)
(CPUID.EAX=80000000 -> EAX=80000008h - val max pt functii ext)
CPUID.EAX = 80000008H (* Returneaza linear/physical address size data. *)
CPUID.EAX = 8000000AH (* INVALID: Returneaza aceeasi info ca si CPUID.EAX = 0BH. *)
daca val din EAX e mai mica sau egala decat cea maxim admisa, dar pt acea intrare nu e suportata, se va returna 0 in toti registrii
A N C A A P Ă T E A N - U T C N
Identificarea si configurarea resurselor PC
1. Identificarea resurselor PC - CPUID
Identificarea si configurarea resurselor PC
1. Identificarea resurselor PC – CPUID (2)
p
A N C A A P A T E A N - U T C N
10
CPUID (CPU IDentification)Parametru Informatia returnata de CPUID
EAX=0 EAX val. maxima recunoscuta de CPUID pentru functiile standard
EBX:EDX:ECX sirul ASCII al producatorului: (pt Intel avem “Genu”:“ineI”:“ntel”)
EAX=1 EAX semnatura CPU= cei mai semnificativi 32 biti (bitii 95-64) din cei 96 ai nr serial al CPU (PSN)
EBX Brand ID pe bitii 7..0, dimens liniei CLFLUSH (Val ∗ 8 = cache line size in bytes) pe bitii 15…8;
Nr max. de ID-uri adresabile pt CPU logice in pachetul fizic pe bitii 23…16; ID pt APIC initial pe bitii 31…24.
ECX,EDX flaguri de caracteristici ale CPU (! Nu e PSW), apoi EAX=7 -> EBX
EAX=2
(si 4, 9)EAX:EBX:ECX:EDX informatii despre memoria cache si descriptorii TLB (Translation Lookaside Buffer)
EAX=3
EAX=5, 6
…
EDX:ECX cei mai putin semnificativi 64 biti (bitii 63…32 si 31…0) din cei 96 ai nr serial al CPU (PSN)
– doar la Pentium III, altfel – sunt rezervati
5-MWAIT, 6- Thermal & Power Management
EAX=8000_0000h EAX val. maxima recunoscuta de CPUID pentru functiile extinse
EAX=8000_0001h EAX semnatura extinsa a procesorului si
ECX,EDX flaguri de caracteristici extinse ale procesorului
EAX=8000_0002/3/4h EAX:EBX:ECX:EDX numele procesorului (Processor Brand String)
EAX=8000_0005h EAX:EBX:ECX:EDX informatii despre memoria cache L1 / TLB
EAX=8000_0006h EAX:EBX:ECX:EDX informatii despre memoria cache L2 / TLB
EAX=8000_0007h EAX:EBX:ECX:EDX flaguri de caracteristici pentru controlul avansat al puterii
EAX=8000_0008h EAX:EBX:ECX:EDX dimensiunea adresei virtuale si fizice (liniara)
Identificarea si configurarea resurselor PC
1. Identificarea resurselor PC – CPUID (3)
p
A N C A A P A T E A N - U T C N
11
"AMDisbetter!" — primele AMD K5
"AuthenticAMD" — AMD
"CentaurHauls" — Centaur
"CyrixInstead" — Cyrix
"GenuineIntel" — Intel
"TransmetaCPU" — Transmeta
"GenuineTMx86" — Transmeta
"Geode by NSC" — National Semiconductor
"NexGenDriven" — NexGen
"RiseRiseRise" — Rise
"SiS SiS SiS " — SiS
"UMC UMC UMC " — UMC
"VIA VIA VIA " — VIA
"Vortex86 SoC" — Vortex
EAX=0 -> ID-ul producatorului (vendor ID)
= un sir ASCII de 12 caractere
preluat din continutul reg EBX, EDX, ECX in aceasta ordine !
Exemple:
Identificarea si configurarea resurselor PC
1. Identificarea resurselor PC – CPUID (3)
p
A N C A A P A T E A N - U T C N
12
EAX=1
EAX: Version : Type, Family, Model, Stepping ID
EBX: Brand ID pe bitii 7..0, dimens liniei CLFLUSH (Val ∗ 8 = cache line size in bytes) pe bitii 15…8;
Nr max. de ID-uri adresabile pt CPU logice in pachetul fizic pe bitii 23…16; ID pt APIC initial pe bitii 31…24*.
*The nearest power-of-2 integer that is not smaller than EBX[23:16] is the number of unique initial APIC IDs reserved for addressing different logical
processors in a physical package. This field is only valid if CPUID.1.EDX.HTT[bit 28]= 1. [2]
ECX,EDX flaguri de caracteristici ale CPU (! Nu e PSW)
EAX=3
“Processor serial number (PSN) is not supported in the Pentium 4 processor or later.
On all models, use the PSN flag (returned using CPUID) to check for PSN support before accessing the feature. “[2]
9. Identificarea si configurarea resurselor PC
1. Identificarea resurselor PC – CPUID (4)
p
13
Caracteristicile procesorului (flaguri)
Bit EDX ECX
0 FPU Onboard x87 FPU SSE3 Prescott New Instructions (SSE3)
1 VME Virtual mode extensions (VIF) PCLMULQDQ PCLMULQDQ support
2 DE Debugging extensions (CR4 bit 3) DTES64 64-bit debug store (edx bit 21)
3 PSE Page size extensions MONITOR MONITOR and MWAIT instructions (SSE3)
4 TSC Time Stamp Counter DS_CPL CPL qualified debug store
5 MSR Model-specific registers VMX Virtual Machine eXtensions
6 PAE Physical Address Extension SMX Safer Mode Extensions (LaGrande)
7 MCE Machine Check Exception EST Enhanced SpeedStep
8 CX8 CMPXCHG8 (compare-and-swap) instruction TM2 Thermal Monitor 2
9 APIC Onboard Advanced PIC(ProgramableInterruptCtrller) SSSE3 Supplemental SSE3 instructions
10 (RESERVED) CNXT ID Context ID
11 SEP SYSENTER and SYSEXIT instructions SDBG
12 MTRR Memory Type Range Registers FMA Fused multiply-add (FMA3)
13 PGE Page Global Enable bit in CR4 CX16 CMPXCHG16B instruction
14 MCA Machine check architecture XTPR Can disable sending task priority messages
15 CMOV Conditional move and FCMOV instructions PDCM Perform & debug capability
16 PAT Page Attribute Table (RESERVED)
17 PSE36 36-bit page huge pages PCID Process context identifiers (CR4bit 17)
18 PSN Processor Serial Number DCA Direct cache access for DMA writes
19 CLFSH CLFLUSH instruction (SSE2) SSE4_1 SSE4.1 instructions
20 (RESERVED) SSE4_2 SSE4.2 instructions
21 DS Debug store: save trace of executed jumps X2APIC x2APIC support
22 ACPI Onboard thermal control MSRs for ACPI MOVBE MOVBE instr. (big-endian, Intel Atom)
23 MMX MMX instructions POPCNT POPCNT instruction
24 FXSR FXSAVE, FXRESTOR instructions,CR4 bit 9 TSCDEADLINE APIC -one-shot op. using a TSC deadline value
25 SSE SSE instr.(a.k.a. Katmai New Instructions) AESNI AESNI instruction set extension
26 SSE2 SSE2 instructions XSAVE XSAVE, XRESTOR, XSETBV, XGETBV
27 SS CPU cache supports self-snoop OSXSAVE XSAVE enabled by OS
28 HTT Hyper-threading AVX Advanced Vector Extensions
29 TM Thermal monitor autom. limits temperature F16C CVT16 instr. set (half-precision) FP support
30 IA64 IA64 processor emulating x86 RDRAND RDRAND (on-chip random no. generator)
31 PBE Pending Break Enable (PBE# pin) wakeup HYPERVISOR Running on a hypervisor (=0 on a real CPU)
EAX=1
flag
uri
de
cara
cter
isti
cial
e C
PU
Analizati si retineti:
“A processor with VT technology does not guarantee that virtualization works on your system.
The VT technology requires a computer system with a chipset, BIOS, enabling software and/or
operating system, device drivers and applications designed for that feature.
If your BIOS includes a setting to enable or disable support for Intel VT, make sure it is enabled.”
[Intel, for VT-Virtualization Technology]
http://www.intel.com/support/processors/sb/cs-030729.htm
Pentru ca o tehnologie sa functioneze pe PC ...
A N C A A P Ă T E A N - U T C N
- In Sistemele de Calcul (SC) –> COMPROMIS intre densitate si viteza:
- ideal ar fi memorie cat mai mica (dpdv al dimensiunii fizice) dar cat mai mare (dpdv al capacitatii),
- de viteza cat mai crescuta -> nu prea e posibil fara costuri ridicate
- => sistem cu performante bune la pret bun : o combinatie de memorii
Organizarea ierarhica a memoriei = nivele diferite de mem cu timp de acces si capacitate diferite
Capacitatea
mem fol in SC,
timpul de acces,
densitatea
cresc cu
distanta fata de
CPU
Nivel 0
Nivel 2
Nivel n
Capacitatea memoriei (folosita in
Sist de calcul) la fiecare nivel
CPU
Performanta,
viteza de acces,
dar si
pret per bitNivel 1
Un posibil exemplu:Nivel 0 – registrele CPU
Nivel 1 = cache nivel 1 - SRAM
(inclus in procesor)
Nivel 2 = cache nivel 2 - SRAM
(extern sau inclus)
Nivel 3 = mem. Principala- DRAM
(module pe placa de baza)
Nivel 4 = unitate disc magnetic - HDD
(in cutie, on-line)=mem. SecundaraNivel 5 = mem. optica - CD-ROM
(near-line)
Nivel 6 = caseta/banda magnetica
(off-line, pentru back-up)
Nivel 7 = biblioteci - casete/CD/DVD
(shelf=raft automatizat)
MEMORIA SI INTERFATAREA EI IN PC
IERARHIA DE MEMORII
A N C A A P A T E A N - U T C N
t accesCum se respecta
ierarhia de memorii
in sistemul vostru ?
Cache L1
Cache L2
Cache L3
RAM
Memoria si interfata ei in PC
LAB Identificarea caracteristicilor memoriei cache prin instructiunea cpuid
A N C A A P A T E A N - U T C N
Instrucţiunea CPUID returnează şi informaţii despre mărimea şi caracteristicile memoriei cache interne:
când registrul EAX este initializat cu 2, instrucţiunea CPUID încarcă regiştrii EAX, EBX, ECX şi EDX
cu descriptori ce arată caracteristicile cache-ului procesorului.
Cei 8 biţi “low” din registrul EAX (adica registrul AL) conţin o valoare care
identifică de câte ori trebuie executată instrucţiunea CPUID
pentru a obţine o imagine completă a cache-ului procesorului.
Exemplu: pentru un procesor Pentium Pro
se obtine valoarea 1 în partea AL din registrul EAX
=> instrucţ CPUID trebuie executată o singură dată (cu EAX=2) pt a obţine o imagine completă a cache-ului procesorului
Restul registrului EAX şi regiştrii EBX, ECX şi EDX conţin pe cate 8 biţi descriptori valizi (daca bitul 31=0).
Memoria si interfata ei in PC
LAB Identificarea caracteristicilor memoriei cu ajutorul aplicatiei CPU-z
A N C A A P A T E A N - U T C N
I Core 2Duo
Sistem S3
https://ark.intel.com/products/31728
Memoria si interfata ei in PC
LAB Identificarea caracteristicilor memoriei cache prin instructiunea cpuid (2)
A N C A A P A T E A N - U T C N
Restul registrului EAX şi regiştrii EBX, ECX şi EDX conţin pe cate 8 biţi descriptori valizi (daca bitul 31=0).
Exemplu:
Pentru un procesor Sistem S3, Pentium 4, dupa executia instructiunii cpuid se returneaza urmatoarele valori in registrii EAX, EBX, ECX, EDX:
EAX= 665B5001h -> b31=0 => descriptori valizi , AL=01 -> trebuie executata o sg data
EBX=00000000h
ECX=00000000h
EDX=007A7040h
Valoarea
descriptor
Descriere cache
00h Nul
01h Instrucţiune TLB, pagini de 4k, asociativ 4 căi, 32 intrări
02h Instrucţiune TLB, pagini de 4M, full asociativ, 2 intrări
03h Date TLB, pagini de 4k, asociativ 4 căi, 64 intrări
04h Date TLB, pagini de 4M, asociativ 4 căi, 8 intrări
06h Cache Instructiuni, 8k, asociativ 4 căi, linii de lungime 32 octeţi
08h Cache Instructiuni,16k, asociativ 4 căi, linii de lungime 32 octeţi
0Ah Cache date, 8k, asociativ pe 2 căi, linii de lungime 32 octeţi
0Ch Cache date, 16k, asociativ pe 4 căi, linii de lungime 32 octeţi
40h Nu are cache de nivel L2 (la familia P6 ) sau L3 (la P4)
41h Cache unificat, linii de lungime 32 octeţi, asociativ pe 4 căi, 128k
42h Cache unificat, linii de lungime 32 octeţi, asociativ pe 4 căi, 256k
43h Cache unificat, linii de lungime 32 octeţi, asociativ pe 4 căi, 512k
44h Cache unificat, linii de lungime 32 octeţi, asociativ pe 4 căi, 1M
45h Cache unificat, linii de lungime 32 octeţi, asociativ pe 4 căi, 2M
Valoarea
descriptor
Descriere cache
50h TLB Instructiuni, pagini de 4Ko/2Mo/4Mo , total asoc, 64 intrari
51h TLB Instructiuni, pagini de 4Ko/2Mo/4Mo, total asoc, 128 intrari
52h TLB Instructiuni, pagini de 4Ko/2Mo/4Mo, total asoc, 256 intrari
5bh TLB date, pagini de 4Ko/4MB, total asociativ, 64 intrari
5ch TLB date, pagini de 4Ko/4MB, total asociativ, 128 intrari
5dh TLB date, pagini de 4Ko/4MB, total asociativ, 256 intrari
66h Cache date 8ko, sectorizat, asociativ pe 4 căi, linii de lungime 64o
70h Cache Trace de instrucţiuni 12ko uOps, asociativ pe 4 căi
79h Cache L2 128k, asociativ pe 8 căi, linii de lungime 64 octeţi
7ah Cache L2 256k, asociativ pe 8 căi, linii de lungime 64 octeţi
7bh Cache L2 512k, asociativ pe 8 căi, linii de lungime 64 octeţi
7ch Cache L2 1M, asociativ pe 8 căi, linii de lungime 64 octeţi
82h Cache unificat, linii de lungime 32 octeţi, asociativ pe 8 căi, 512k
84h Cache unificat, linii de lungime 32 octeţi, asociativ pe 8 căi, 1M
85h Cache unificat, linii de lungime 32 octeţi, asociativ pe 8 căi, 2M
Evolutia procesoarelor (de la aparitia primului sistem PC in 1981) a vizat urmatoarele:
• cresterea nr de tranzistoare si densitatea lor (nr de tranzistoare pe suprafata ocupata)
• cresterea vitezei/frecventei ciclurilor de ceas
• cresterea dimensiunii registrelor interne (nr de biti)
• cresterea numarului de miezuri (nuclee) pe chip
În cele 4 decenii de la aparitia 4004:
Tehnologia de fabricare (dimensiunea) a tranzistorului a scăzut de aproape 500 ori :
22nm vs 10microm => 10*10-6/22*10-9=454
numărul de tranzistori pe un cip a crescut cu 6 ordine de marime:
cateva miliarde =1.2G vs 2.3K (K-> M->G)
iar frecvența de operare a crescut cu aproape 4 ordine de mărime:
4G vs 740k (740k -> 7,4M -> 74M -> 740M -> 7,4G)
Nici un alt domeniu al ingineriei nu a inregistrat progrese atat de uimitoare într-un timp atat de scurt !
ISTORIA MICROPROCESOARELOR DIN FAMILIA INTEL X86
CONCLUZII
p
A N C A A P A T E A N - U T C N19
CPU (sau UCP)
• Familia Core (Intel)
• 8th Gen Intel® Core™ i7Ex: Intel® Core™ i7-8700K Processor cu 12 MB Cache, 6 Cores, 12 Threads – 330$
• 8th Gen Intel® Core™ i5Ex: Intel® Core™ i5-8600K Processor cu 9 MB Cache, 6 Cores, 6 Threads – 235$
• 8th Gen Intel® Core™ i3Ex: Intel® Core™ i3-8350K Processor cu 8 MB Cache, 4 Cores, 4 Threads – 169$
• Intel® Core™ X-Series sau Core™ i9
• – “the ultimate tool for gaming and virtual reality experience”• Pana la 18 cores (nuclee) -> 36 threaduri (fire de executie)
Ex: Intel® Core™ i9-7960X cu 22 MB Cache, 16 Cores, 32 Threads – 1570$