Le première étape des travaux pratiques consiste à :
Vous pouvez retrouver une vidéo de ce TP sur youtube.
richer@zentopia:\$ lsb_release -a && uname -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
Linux zentopia 5.4.0-37-generic #41-Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
La commande lsb_release (sous Linux/Ubuntu) donne des informations relatives au système d'exploitation, en l'occurrence il s'agit d'Ubuntu 20.04 (Focal Fossa), qui est de type LTS (Long Time Support)
La commande uname donne des informations sur le la version du noyau Linux ainsi que sur l'architecture qui est ici 64 bits (x86_64). Pour un système 32 bits on verra le sigle i386 apparaitre.
Pour obtenir des informations relatives au microprocesseur, une première commande à utiliser est lscpu. Elle donne un résumé des caractéristiques :
richer@zentopia:\$ lscpu
Architecture : x86_64
Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit
Boutisme : Little Endian
Address sizes: 43 bits physical, 48 bits virtual
Processeur(s) : 12
Liste de processeur(s) en ligne : 0-11
Thread(s) par cœur : 2
Cœur(s) par socket : 6
Socket(s) : 1
Nœud(s) NUMA : 1
Identifiant constructeur : AuthenticAMD
Famille de processeur : 23
Modèle : 113
Nom de modèle : AMD Ryzen 5 3600 6-Core Processor
Révision : 0
Frequency boost: enabled
Vitesse du processeur en MHz : 2199.900
Vitesse maximale du processeur en MHz : 3600,0000
Vitesse minimale du processeur en MHz : 2200,0000
BogoMIPS : 7199.86
Virtualisation : AMD-V
Cache L1d : 192 KiB
Cache L1i : 192 KiB
Cache L2 : 3 MiB
Cache L3 : 32 MiB
Nœud NUMA 0 de processeur(s) : 0-11
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
and seccomp
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer
sanitization
Vulnerability Spectre v2: Mitigation; Full AMD retpoline, IBPB conditional, STIBP
conditional, RSB filling
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Drapaux : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx
mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good
nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmul
qdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt ae
s xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic c
r8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs s
kinit wdt tce topoext perfctr_core perfctr_nb bpext perf
ctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd mba
sev ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm
rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xs
avec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total
cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt
lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasi
d decodeassists pausefilter pfthreshold avic v_vmsave_vm
load vgif umip rdpid overflow_recov succor smca
Parfois la commande lscpu ne parvient pas à donner le nom du processeur si celui-ci est assez ancien, dans ce cas on peut utiliser la commande :
richer@zentopia:\$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 113
model name : AMD Ryzen 5 3600 6-Core Processor
stepping : 0
microcode : 0x8701013
cpu MHz : 2193.204
cache size : 512 KB
physical id : 0
siblings : 12
core id : 0
cpu cores : 6
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 16
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd mba sev ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips : 7199.86
TLB size : 3072 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]
......
Grâce à la commande lstopo du paquet hwloc on peut obtenir une vision graphique de l'organisation du microprocesseur en fonction du nombre de coeurs / threads.
richer@zentopia:\$ cpu=`cat /proc/cpuinfo | grep "model name" | uniq | cut -d':' -f2 | sed -E "s/^[ ]+|[ ]+\$//g" | sed -E "s/[ ]/_/g"
ou alors
richer@zentopia:\$ cpu=`lscpu | grep "Nom de modèle" | cut -d':' -f2 | sed -E "s/^[ ]+|[ ]+$//" | sed -E "s/[ ]+/_/g"`
puis
richer@zentopia:\$ sudo apt install hwloc
richer@zentopia:\$ lstopo --no-io --of png >\$cpu.png
richer@zentopia:\$ eog \$cpu.png
Cas d'un Ryzen 5 3600
Pour obtenir des informations sur la carte mère, il faut utiliser dmidecode. Le DMI (Desktop Management Interface) est un framework logiciel standardisé qui permet de suivre les modifications de composants sur un ordinateur.
richer@zentopia:\$ sudo dmidecode --type baseboard
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: Micro-Star International Co., Ltd.
Product Name: MPG X570 GAMING EDGE WIFI (MS-7C37)
Version: 1.0
Serial Number: J816453611
Asset Tag: To be filled by O.E.M.
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: To be filled by O.E.M.
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
Handle 0x0039, DMI type 41, 11 bytes
Onboard Device
Reference Designation: RTL8111EPV
Type: Ethernet
Status: Disabled
Type Instance: 1
Bus Address: 0000:03:00.0
Il s'agit d'une carte mère (Motherboard) MSI MPG X570 GAMING EDGE WIFI.
Plusieurs possibilités vous sont offertes pour trouver la taille de la mémoire ainsi que l'espace mémoire occupé. Le problème sous Linux est que la mémoire totale affichée ne correspond pas à la taille de la mémoire physique. On le voit en utilisant le logiciel inxi :
richer@zentopia:\$ sudo apt install inxi
richer@zentopia:\$ sudo inxi -m
Memory: RAM: total: 31.31 GiB used: 3.47 GiB (11.1%)
Array-1: capacity: 128 GiB slots: 4 EC: None
Device-1: DIMM 0 size: 8 GiB speed: 2133 MT/s
Device-2: DIMM 1 size: 8 GiB speed: 2133 MT/s
Device-3: DIMM 0 size: 8 GiB speed: 2133 MT/s
Device-4: DIMM 1 size: 8 GiB speed: 2133 MT/s
Ici, on nous indique 31,31 Go de RAM alors qu'il y a $4 × 8 = 32$ Go de RAM Physique.
inxi, tout comme la commande cat /proc/meminfo reporte la RAM totale moins l'espace alloué pour le GPU.
La mémoire est composée de barrettes G.SKILL. L'utilisation de dmidecode ne permet cependant pas de trouver le constructeur (Manufacturer : Unknown) :
richer@zentopia:$ sudo dmidecode --type memory
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.
Handle 0x000F, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 128 GB
Error Information Handle: 0x000E
Number Of Devices: 4
Handle 0x0017, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x000F
Error Information Handle: 0x0016
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM 0
Bank Locator: P0 CHANNEL A
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 3200 MT/s
Manufacturer: Unknown
Serial Number: 00000000
Asset Tag: Not Specified
Part Number: F4-3200C16-8GVKB
Rank: 1
Configured Memory Speed: 3200 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V
....
Il s'agit d'un utilitaire en ligne de commande qui donne accès aux informations matérielles.
richer@zentopia:\$ sudo apt install inxi
richer@zentopia:\$ inxi -F
System: Host: zentopia Kernel: 5.4.0-42-generic x86_64 bits: 64 Desktop: Gnome 3.36.4
Distro: Ubuntu 20.04.1 LTS (Focal Fossa)
Machine: Type: Desktop Mobo: Micro-Star model: MPG X570 GAMING EDGE WIFI (MS-7C37) v: 1.0
serial: UEFI: American Megatrends v: 1.50 date: 10/29/2019
CPU: Topology: 6-Core model: AMD Ryzen 5 3600 bits: 64 type: MT MCP L2 cache: 3072 KiB
Speed: 4173 MHz min/max: N/A Core speeds (MHz): 1: 4173 2: 3956 3: 3863 4: 4071 5: 3777 6: 4198
7: 4198 8: 4196 9: 3430 10: 3832 11: 4142 12: 4141
Graphics: Device-1: NVIDIA GP104 [GeForce GTX 1070] driver: nvidia v: 440.100
Display: x11 server: X.Org 1.20.8 driver: nvidia unloaded: fbdev,modesetting,nouveau,vesa
resolution: 1920x1080~60Hz
OpenGL: renderer: GeForce GTX 1070/PCIe/SSE2 v: 4.6.0 NVIDIA 440.100
Audio: Device-1: NVIDIA GP104 High Definition Audio driver: snd_hda_intel
Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio driver: snd_hda_intel
Sound Server: ALSA v: k5.4.0-42-generic
Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169
IF: enp39s0 state: up speed: 1000 Mbps duplex: full mac: 00:d8:61:a3:bc:e4
Device-2: Intel Dual Band Wireless-AC 3168NGW [Stone Peak] driver: iwlwifi
IF: wlp41s0 state: up mac: 5c:87:9c:dd:8c:f4
IF-ID-1: br-1265e82a8241 state: up speed: N/A duplex: N/A mac: 02:42:a3:0d:2c:77
IF-ID-2: br-40ca5f7225b0 state: down mac: 02:42:d9:89:cc:d5
IF-ID-3: docker0 state: down mac: 02:42:67:28:8e:9b
IF-ID-4: veth393a5c6 state: up speed: 10000 Mbps duplex: full mac: a6:b6:53:3f:9e:ed
IF-ID-5: vethc6497ca state: up speed: 10000 Mbps duplex: full mac: ea:53:50:43:f3:a6
Drives: Local Storage: total: 931.51 GiB used: 192.89 GiB (20.7%)
ID-1: /dev/sda vendor: Western Digital model: WD10EZEX-75WN4A0 size: 931.51 GiB
Partition: ID-1: / size: 915.40 GiB used: 192.88 GiB (21.1%) fs: ext4 dev: /dev/sda2
Sensors: System Temperatures: cpu: 56.6 C mobo: N/A gpu: nvidia temp: 42 C
Fan Speeds (RPM): N/A gpu: nvidia fan: 0%
Info: Processes: 400 Uptime: 1h 08m Memory: 31.31 GiB used: 2.80 GiB (8.9%) Shell: bash inxi: 3.0.38
Etrangement on n'a aucune information concernant la mémoire, il faut lancer la commande avec :
richer@zentopia:\$ sudo inxi -m
Memory: RAM: total: 31.31 GiB used: 2.83 GiB (9.0%)
Array-1: capacity: 128 GiB slots: 4 EC: None
Device-1: DIMM 0 size: 8 GiB speed: 2133 MT/s
Device-2: DIMM 1 size: 8 GiB speed: 2133 MT/s
Device-3: DIMM 0 size: 8 GiB speed: 2133 MT/s
Device-4: DIMM 1 size: 8 GiB speed: 2133 MT/s
Le logiciel CPU-X est l'équivalent de CPU-Z un utilitaire Windows qui regroupe les informations sur le microprocesseur (fréquence, coeurs, mémoire cache), la carte mère, la mémoire et la carte graphique. Pour installer CPU-X, il suffit de télécharger l'archive correspondant à Ubuntu sur le site du logiciel, puis de lancer les commandes suivantes :
richer@zentopia:\$ mkdir install
richer@zentopia:\$ cd install
richer@zentopia:\$ mv ~/Téléchargements/CPU-X_v4.0.1_Ubuntu.tar.gz .
richer@zentopia:\$ tar -xzf CPU-X_v4.0.1_Ubuntu.tar.gz
richer@zentopia:\$ cd xUbuntu_20.04
richer@zentopia:\$ sudo dpkg -i libcpuid15_0.5.0_amd64.deb cpuidtool_0.5.0_amd64.deb cpu-x_4.0.1_amd64.deb
ou à partir de Ubuntu 20.40 :
richer@zentopia:\$ sudo apt install cpu-x
richer@zentopia:\$ cpu-x &
CPU-X pour un AMD Ryzen 5 3600
On peut également obtenir l'information dans le terminal en utilisant l'option en ligne de commande --ncurses :
richer@zentopia:$
richer@zentopia:\$ cpu-x --ncurses
CPU-X pour un AMD Ryzen 5 3600 au format ncurses dans le terminal
Pour programmer en assembleur, il vous faut disposer des logiciels suivants :
Sous Linux Ubuntu, je fais le choix d'utiliser les logiciels suivants :
Se reporter à cette page pour installer les logiciels.