WEBVTT

00:00.000 --> 00:00.990
Instructeur : Dans cette leçon,

00:00.990 --> 00:03.390
nous allons aborder les fonctions de l'unité centrale.

00:03.390 --> 00:05.340
Cela comprend des éléments tels que le multithreading,

00:05.340 --> 00:07.050
le multiprocessing symétrique, le cœur

00:07.050 --> 00:10.950
unique par rapport au cœur multiple et la prise en charge de la virtualisation.

00:10.950 --> 00:12.180
La première chose que

00:12.180 --> 00:15.840
nous allons aborder est le multithreading, également appelé SMT

00:15.840 --> 00:19.200
ou multithreading simultané ou hyperthreading, en fonction

00:19.200 --> 00:21.480
du processeur que vous achetez.

00:21.480 --> 00:23.040
Hyper-threading est un terme utilisé

00:23.040 --> 00:24.780
par Intel pour ce processus.

00:24.780 --> 00:27.000
Le terme plus générique est SMT (simultaneous

00:27.000 --> 00:29.340
multithreading).

00:29.340 --> 00:31.050
En ce qui concerne le threading,

00:31.050 --> 00:33.870
il s'agit du concept d'un flux unique d'instructions

00:33.870 --> 00:37.350
envoyées par une application logicielle à un processeur.

00:37.350 --> 00:40.770
Aujourd'hui, la plupart des applications ont été conçues pour exécuter un seul

00:40.770 --> 00:42.150
processus dans un seul thread.

00:42.150 --> 00:44.340
Cela signifie que ce logiciel fait

00:44.340 --> 00:45.720
tout en série.

00:45.720 --> 00:47.250
Ainsi, si je vous donne une instruction

00:47.250 --> 00:48.930
sur cinq choses différentes à faire,

00:48.930 --> 00:50.730
vous ferez ces choses dans l'ordre,

00:50.730 --> 00:53.250
un, deux, trois, quatre et cinq.

00:53.250 --> 00:55.260
Et si chacune d'entre elles vous prenait 10

00:55.260 --> 00:57.510
minutes, cela ferait un total de 50 minutes.

00:57.510 --> 01:00.240
Mais si je vous permettais de faire du multithreading

01:00.240 --> 01:01.650
et de faire ces choses dans le

01:01.650 --> 01:03.981
désordre ou en même temps, vous pourriez alors

01:03.981 --> 01:07.050
faire plus d'une chose à la fois en envoyant ces choses à différents

01:07.050 --> 01:09.360
threads ou à différents flux.

01:09.360 --> 01:11.130
Par exemple, supposons que je vous dise que

01:11.130 --> 01:12.450
je veux que vous écriviez quelque

01:12.450 --> 01:13.500
chose avec votre main droite

01:13.500 --> 01:15.900
et que vous tapiez en même temps sur le bureau avec votre

01:15.900 --> 01:17.070
main gauche.

01:17.070 --> 01:18.570
Vous pouvez faire les deux en même

01:18.570 --> 01:19.830
temps, parce que vous avez deux

01:19.830 --> 01:22.020
fils, ou deux mains pour faire ces actions.

01:22.020 --> 01:23.970
C'est l'idée du multithreading.

01:23.970 --> 01:26.700
Intel et les autres fabricants ont donc mis au point

01:26.700 --> 01:28.860
un moyen de permettre aux logiciels de communiquer

01:28.860 --> 01:30.720
avec leurs processeurs et d'exécuter

01:30.720 --> 01:33.061
simultanément plusieurs threads parallèles

01:33.061 --> 01:35.610
au sein d'un même processeur.

01:35.610 --> 01:37.050
Cela permet à ces threads d'être

01:37.050 --> 01:39.420
exécutés par ce processeur et de réduire le temps

01:39.420 --> 01:41.340
d'inactivité de l'unité centrale en attente

01:41.340 --> 01:43.080
de l'action suivante.

01:43.080 --> 01:45.030
Ce faisant, nous pouvons essentiellement

01:45.030 --> 01:46.680
essayer d'augmenter notre capacité

01:46.680 --> 01:48.006
et de faire passer plus de choses

01:48.006 --> 01:50.550
par le processeur et d'essayer de faire plus de choses

01:50.550 --> 01:52.410
dans le même laps de temps.

01:52.410 --> 01:55.140
C'est très bien, mais cela ne fonctionne que jusqu'à un certain

01:55.140 --> 01:57.570
point, et le logiciel doit être capable d'utiliser et

01:57.570 --> 02:00.060
de comprendre cela pour pouvoir dire au système que vous

02:00.060 --> 02:02.790
voulez utiliser plusieurs fils en même temps.

02:02.790 --> 02:04.140
Il s'agit de la principale limitation

02:04.140 --> 02:06.630
lorsque l'on a affaire à quelque chose comme l'hyperthreading.

02:06.630 --> 02:08.400
Une autre façon de contourner

02:08.400 --> 02:13.320
ce problème est de recourir au multiprocessus symétrique, ou SMP.

02:13.320 --> 02:15.570
Le SMP est la méthode traditionnelle utilisée

02:15.570 --> 02:17.304
par les stations de travail et les serveurs,

02:17.304 --> 02:20.370
car ils sont dotés de plusieurs processeurs.

02:20.370 --> 02:22.080
Pour ce faire, vous devez disposer

02:22.080 --> 02:25.290
d'une carte mère dotée de deux ou quatre emplacements de processeur,

02:25.290 --> 02:27.420
et installer deux ou quatre processeurs sur

02:27.420 --> 02:28.890
cette carte mère.

02:28.890 --> 02:31.050
Dans ce cas, tous les processeurs doivent être

02:31.050 --> 02:32.790
du même type et de la même vitesse pour pouvoir

02:32.790 --> 02:34.290
fonctionner ensemble.

02:34.290 --> 02:37.410
Et votre système d'exploitation sous-jacent doit comprendre

02:37.410 --> 02:39.690
comment utiliser plus d'un processeur.

02:39.690 --> 02:42.690
Par défaut, la plupart des systèmes d'exploitation ne le font pas.

02:42.690 --> 02:45.150
Il fallait donc disposer d'un système d'exploitation basé

02:45.150 --> 02:47.670
sur un serveur, comme Windows Server 2019, pour pouvoir prendre

02:47.670 --> 02:49.350
en charge plusieurs processeurs.

02:49.350 --> 02:52.860
Pour cette raison, le SMP (symmetric multiprocessing) n'était pas très utile pour

02:52.860 --> 02:55.620
les ordinateurs de bureau et les ordinateurs portables.

02:55.620 --> 02:58.770
Au lieu de cela, la plupart des ordinateurs de bureau et des ordinateurs

02:58.770 --> 03:01.110
portables ont dû s'en remettre à l'hyperthreading

03:01.110 --> 03:04.140
des processeurs Intel ou au multithreading simultané, ou SMT,

03:04.140 --> 03:06.720
si vous utilisez un processeur AMD.

03:06.720 --> 03:09.480
L'hyperthreading et le SMT ont donc très bien fonctionné pendant longtemps,

03:09.480 --> 03:12.090
mais nous avons fini par nous heurter à la limite de la quantité de

03:12.090 --> 03:14.250
données que nous voulions traiter et du fait que nous ne

03:14.250 --> 03:16.920
disposions que d'un seul processeur pour le faire.

03:16.920 --> 03:19.020
Comme la plupart des systèmes d'exploitation

03:19.020 --> 03:20.610
ne savaient pas comment gérer les prises

03:20.610 --> 03:23.220
multiples ou les processeurs multiples sur une carte mère

03:23.220 --> 03:25.470
donnée, les fabricants ont commencé à créer ce que

03:25.470 --> 03:27.420
l'on appelle un paquet multicœur.

03:27.420 --> 03:28.770
Lorsque je parle d'un paquet,

03:28.770 --> 03:31.500
je parle de l'unité centrale, de la puce physique.

03:31.500 --> 03:33.570
Au lieu d'avoir deux boîtiers physiques

03:33.570 --> 03:35.790
ou deux puces physiques sur deux prises différentes

03:35.790 --> 03:37.020
de votre carte mère, ces

03:37.020 --> 03:38.850
fabricants ont décidé de créer un seul

03:38.850 --> 03:42.390
boîtier qui fonctionne comme un seul processeur.

03:42.390 --> 03:43.740
Mais à l'intérieur de ce paquet,

03:43.740 --> 03:47.160
il y avait en fait plusieurs CPU ou plusieurs processeurs.

03:47.160 --> 03:49.410
Pour la carte mère, cela signifie qu'il semble

03:49.410 --> 03:53.040
y avoir un seul processeur physique, car c'est le cas, mais à l'intérieur,

03:53.040 --> 03:54.540
il y a plusieurs cœurs, ou unités

03:54.540 --> 03:57.600
centrales de traitement, à l'intérieur.

03:57.600 --> 03:59.910
Cela permet à n'importe quel système d'exploitation

03:59.910 --> 04:03.240
de s'adresser à ce processeur unique ou à cet ensemble de processeurs,

04:03.240 --> 04:05.160
et l'ensemble de processeurs lui-même

04:05.160 --> 04:06.840
peut alors répartir ces instructions

04:06.840 --> 04:10.890
entre les multiples cœurs internes du processeur.

04:10.890 --> 04:11.812
Pensez-y de la manière suivante.

04:11.812 --> 04:14.250
Vous avez une maison avec quatre chambres à coucher.

04:14.250 --> 04:16.320
Si quelqu'un se présente à la porte d'entrée et dit : "J'ai besoin

04:16.320 --> 04:17.580
d'un lit pour la nuit", il ne se préoccupe

04:17.580 --> 04:19.320
pas de savoir lequel de ces quatre lits il obtiendra,

04:19.320 --> 04:20.880
du moment qu'il a un lit pour la nuit.

04:20.880 --> 04:22.710
Vous entrez donc par la porte d'entrée, vous les

04:22.710 --> 04:25.620
emmenez dans une seule pièce et vous ne leur montrez qu'une seule pièce.

04:25.620 --> 04:28.560
C'est essentiellement ce que fait ce processeur multicœur.

04:28.560 --> 04:30.570
Lorsque de nouvelles personnes franchissent la porte, le

04:30.570 --> 04:32.790
système les conduit dans une chambre individuelle où elles peuvent

04:32.790 --> 04:35.700
dormir pour la nuit ou effectuer leurs démarches, avant de les renvoyer.

04:35.700 --> 04:36.720
Tout cela est géré par

04:36.720 --> 04:38.220
la personne qui se trouve à la porte

04:38.220 --> 04:40.860
d'entrée, qui, dans ce cas, est ce paquet multicœur.

04:40.860 --> 04:43.200
Il les place ensuite dans le compartiment individuel

04:43.200 --> 04:46.890
ou le sous-processeur individuel dont il a besoin pour effectuer ce travail.

04:46.890 --> 04:49.290
C'est l'idée d'un paquet multicœur.

04:49.290 --> 04:51.480
La plupart d'entre nous en ont déjà entendu parler,

04:51.480 --> 04:52.650
car votre système est probablement

04:52.650 --> 04:55.110
équipé d'un processeur multicœur.

04:55.110 --> 04:57.120
Vous disposez probablement d'un processeur double

04:57.120 --> 04:59.790
cœur, c'est-à-dire de deux processeurs dans une seule puce,

04:59.790 --> 05:01.230
ou d'un processeur quadruple, c'est-à-dire

05:01.230 --> 05:02.730
de quatre processeurs dans une seule

05:02.730 --> 05:03.960
puce.

05:03.960 --> 05:05.730
Ou vous avez un processeur hexa, ce qui signifie

05:05.730 --> 05:08.340
que vous avez six cœurs à l'intérieur d'une seule puce.

05:08.340 --> 05:09.840
Ou bien vous avez un processeur octa,

05:09.840 --> 05:12.300
ce qui signifie que vous avez huit cœurs dans une seule puce.

05:12.300 --> 05:16.090
Par exemple, sur mon processeur, j'ai un processeur à huit cœurs sur mon ordinateur

05:16.090 --> 05:19.260
de bureau, et il s'agit d'une seule puce physique, mais il y a huit

05:19.260 --> 05:21.630
sous-processeurs à l'intérieur.

05:21.630 --> 05:23.370
C'est ce qu'on appelle un processeur

05:23.370 --> 05:25.410
à huit cœurs, ou multi-cœurs.

05:25.410 --> 05:27.240
En plus du multi-cœur et de l'hyperthreading,

05:27.240 --> 05:28.800
il est possible de combiner les

05:28.800 --> 05:29.991
deux, de sorte que chacun

05:29.991 --> 05:32.846
de ces processeurs à l'intérieur du paquet, par exemple,

05:32.846 --> 05:34.560
dans mon système, j'ai l'octa-cœur,

05:34.560 --> 05:37.530
qui a huit processeurs.

05:37.530 --> 05:38.940
Ce paquet contient huit processeurs,

05:38.940 --> 05:40.050
et chacun de ces huit processeurs

05:40.050 --> 05:43.710
peut également prendre en charge l'hyperthreading.

05:43.710 --> 05:46.860
Cela signifie que j'ai 16 threads avec huit CPU, ce qui me donne

05:46.860 --> 05:49.260
une grande capacité de traitement sur cette

05:49.260 --> 05:50.850
machine particulière.

05:50.850 --> 05:53.250
Très bien, à ce stade, nous avons abordé trois des quatre

05:53.250 --> 05:56.010
points que nous voulions traiter dans cette leçon.

05:56.010 --> 05:57.390
Nous avons parlé de l'hyperthreading

05:57.390 --> 06:00.090
et du multithreading simultané, connu sous le nom de SMT.

06:00.090 --> 06:02.460
Nous avons parlé du multiprocessing symétrique, c'est-à-dire

06:02.460 --> 06:04.830
de la présence de plusieurs unités centrales dans les sockets,

06:04.830 --> 06:07.530
puis nous avons abordé l'idée des processeurs multicœurs, qui

06:07.530 --> 06:09.120
consistent en une seule unité centrale

06:09.120 --> 06:11.220
dotée de plusieurs processeurs, qu'ils soient

06:11.220 --> 06:14.010
au nombre de deux, quatre, six ou huit.

06:14.010 --> 06:17.400
La dernière chose dont nous devons parler est la virtualisation.

06:17.400 --> 06:20.490
La virtualisation est une autre caractéristique des processeurs, mais elle n'est

06:20.490 --> 06:22.020
pas vraiment liée aux trois aspects que

06:22.020 --> 06:23.220
nous venons d'évoquer.

06:23.220 --> 06:24.780
Les trois sujets dont nous venons de parler

06:24.780 --> 06:27.300
portaient sur la manière d'obtenir davantage de performances à partir

06:27.300 --> 06:28.710
d'une seule ou de plusieurs puces.

06:28.710 --> 06:30.300
Mais lorsque nous parlons de virtualisation,

06:30.300 --> 06:32.880
nous parlons de la possibilité d'émuler un matériel

06:32.880 --> 06:35.730
qui n'existe pas en réalité.

06:35.730 --> 06:37.080
Cela est possible grâce

06:37.080 --> 06:39.450
à la technologie de virtualisation d'Intel,

06:39.450 --> 06:42.330
connue sous le nom de VT, ou à la virtualisation d'AMD,

06:42.330 --> 06:44.700
connue sous le nom d'AMD-V.

06:44.700 --> 06:47.340
Aujourd'hui, ces deux systèmes fournissent des extensions de processeur

06:47.340 --> 06:49.710
pour prendre en charge la virtualisation, que l'on appelle

06:49.710 --> 06:52.050
virtualisation assistée par le matériel.

06:52.050 --> 06:53.021
Cela soulève probablement

06:53.021 --> 06:55.470
la question suivante : qu'est-ce que la virtualisation ?

06:55.470 --> 06:58.291
La virtualisation est la capacité d'un ordinateur à faire

06:58.291 --> 07:01.560
semblant de faire fonctionner plusieurs autres ordinateurs à l'intérieur

07:01.560 --> 07:02.729
de lui-même.

07:02.729 --> 07:04.560
Il se peut que j'aie un seul ordinateur

07:04.560 --> 07:07.140
portable, comme mon MacBook.

07:07.140 --> 07:11.700
Et dans ce MacBook, j'ai un seul système d'exploitation, macOS.

07:11.700 --> 07:13.710
Maintenant, si je voulais utiliser Windows

07:13.710 --> 07:15.600
ou Linux, je devrais reformater ma machine

07:15.600 --> 07:16.920
et installer ce logiciel.

07:16.920 --> 07:18.780
Ce serait vraiment gênant.

07:18.780 --> 07:21.360
Mais avec la virtualisation, je n'ai pas à le faire.

07:21.360 --> 07:22.830
Au lieu de cela, je peux exécuter

07:22.830 --> 07:26.340
un programme comme VMware ou Virtualbox ou Parallels, et dans

07:26.340 --> 07:27.840
ce logiciel, je peux créer

07:27.840 --> 07:30.000
un ordinateur virtuel.

07:30.000 --> 07:32.370
Je peux lui dire que je veux qu'il ait un processeur,

07:32.370 --> 07:34.950
deux processeurs ou quatre processeurs.

07:34.950 --> 07:36.600
Et je peux lui indiquer la quantité de mémoire que je veux

07:36.600 --> 07:38.010
et la quantité d'espace de stockage que je veux.

07:38.010 --> 07:39.930
Il créera cet ordinateur virtuel

07:39.930 --> 07:42.510
qui n'existe que dans le logiciel.

07:42.510 --> 07:44.645
Maintenant, lorsque j'exécute le nouveau système d'exploitation,

07:44.645 --> 07:48.660
comme Windows, à l'intérieur, je pourrais dire qu'il s'agit d'un processeur à deux cœurs.

07:48.660 --> 07:52.770
Il dispose de quatre gigaoctets de mémoire vive et d'un disque dur de 50 gigaoctets.

07:52.770 --> 07:54.750
Tout cela n'existe que dans les logiciels.

07:54.750 --> 07:57.296
Mais lorsque j'installe Windows dans cette machine virtuelle,

07:57.296 --> 07:59.670
Windows pense qu'il s'agit d'un ordinateur complet.

07:59.670 --> 08:02.340
Il pense avoir deux processeurs, quatre

08:02.340 --> 08:04.050
gigaoctets de mémoire et

08:04.050 --> 08:06.270
un disque dur de 50 gigaoctets.

08:06.270 --> 08:07.200
Ainsi, Windows pense qu'il

08:07.200 --> 08:09.390
dispose de tout ce matériel physique, et c'est ce que

08:09.390 --> 08:11.400
la virtualisation nous permet de faire.

08:11.400 --> 08:13.659
Il nous permet de virtualiser un ordinateur

08:13.659 --> 08:15.600
et de fournir du matériel virtuel et d'exécuter

08:15.600 --> 08:17.293
plusieurs systèmes d'exploitation

08:17.293 --> 08:20.280
à l'intérieur d'un seul hôte physique.

08:20.280 --> 08:23.100
Outre VT et AMD-V, il existe également un deuxième niveau

08:23.100 --> 08:24.450
de prise en charge matérielle

08:24.450 --> 08:27.120
de la virtualisation que vous pouvez rechercher dans certains

08:27.120 --> 08:28.860
processeurs modernes.

08:28.860 --> 08:31.800
Sur les systèmes Intel, il s'agit de l'EPT

08:31.800 --> 08:33.480
(extended page table).

08:33.480 --> 08:35.490
Dans le cas d'un processeur AMD,

08:35.490 --> 08:39.810
il s'agit de l'indexation de virtualisation rapide, ou RVI.

08:39.810 --> 08:42.390
Ces deux éléments sont considérés comme des fonctions de traduction

08:42.390 --> 08:45.450
d'adresses de second niveau (SLAT) de la virtualisation logicielle qui

08:45.450 --> 08:48.060
sont ensuite sous-jacentes et prises en charge par le processeur

08:48.060 --> 08:50.430
matériel afin de permettre une meilleure gestion de la

08:50.430 --> 08:52.620
mémoire virtuelle et d'améliorer les performances

08:52.620 --> 08:53.773
lors de l'utilisation de la

08:53.773 --> 08:56.913
mémoire à l'intérieur d'une machine virtuelle.

08:57.870 --> 09:00.150
Nous allons parler plus en détail de la virtualisation

09:00.150 --> 09:02.130
dans nos propres leçons, mais pour l'instant,

09:02.130 --> 09:03.480
je veux juste que vous compreniez

09:03.480 --> 09:06.660
que certains processeurs ont la capacité de le faire à l'intérieur

09:06.660 --> 09:08.250
de leur ensemble de processeurs,

09:08.250 --> 09:10.530
et les processeurs qui ont cette capacité, comme

09:10.530 --> 09:14.844
ceux qui supportent VT d'Intel ou AMD-V d'AMD, vous donneront de meilleures performances

09:14.844 --> 09:16.470
lorsque vous faites de la virtualisation

09:16.470 --> 09:19.260
que ceux qui n'en ont pas.

09:19.260 --> 09:20.698
Par conséquent, si vous construisez

09:20.698 --> 09:22.710
une machine et que vous souhaitez l'utiliser pour la

09:22.710 --> 09:24.060
virtualisation, par exemple un serveur

09:24.060 --> 09:25.995
sur lequel tourneront de nombreux autres serveurs

09:25.995 --> 09:28.034
virtuels, vous devez vous assurer que les processeurs

09:28.034 --> 09:31.710
que vous choisissez sont dotés de la technologie VT ou AMD-V afin qu'ils puissent prendre en charge

09:31.710 --> 09:34.170
la virtualisation matérielle accélérée directe, car cela vous

09:34.170 --> 09:37.433
permettra de bénéficier d'une expérience et de performances bien meilleures que

09:37.433 --> 09:40.653
si vous deviez recourir à la virtualisation logicielle.
