WEBVTT

00:00.000 --> 00:00.990
Instructor: En esta lección,

00:00.990 --> 00:03.390
vamos a cubrir las características de la CPU.

00:03.390 --> 00:05.340
Esto incluye aspectos como multihilo,

00:05.340 --> 00:07.050
multiprocesamiento simétrico,

00:07.050 --> 00:10.950
núcleo único frente a núcleo múltiple y soporte de virtualización.

00:10.950 --> 00:12.180
Ahora, lo primero que

00:12.180 --> 00:15.840
vamos a tratar es lo que se conoce como multihilo, también conocido

00:15.840 --> 00:19.200
como SMT o multihilo simultáneo o hiperhilo, dependiendo

00:19.200 --> 00:21.480
de la CPU que compres.

00:21.480 --> 00:23.040
Hyper-threading es un término utilizado

00:23.040 --> 00:24.780
por Intel para este proceso.

00:24.780 --> 00:27.000
Y el término más genérico es SMT,

00:27.000 --> 00:29.340
o multihilo simultáneo.

00:29.340 --> 00:31.050
Ahora, cuando se trata de hilos, este

00:31.050 --> 00:33.870
es el concepto de un único flujo de instrucciones que está

00:33.870 --> 00:37.350
siendo enviado por una aplicación de software a un procesador.

00:37.350 --> 00:40.770
Ahora bien, la mayoría de las aplicaciones se diseñaron para ejecutar un único

00:40.770 --> 00:42.150
proceso en un único hilo.

00:42.150 --> 00:44.340
Y esto significa que ese software lo

00:44.340 --> 00:45.720
hace todo en serie.

00:45.720 --> 00:47.250
Así, si te diera una instrucción

00:47.250 --> 00:48.930
de cinco cosas diferentes que

00:48.930 --> 00:50.730
hacer, las harías en orden, una,

00:50.730 --> 00:53.250
dos, tres, cuatro y cinco.

00:53.250 --> 00:55.260
Y si cada uno de ellos te llevara 10 minutos,

00:55.260 --> 00:57.510
serían un total de 50 minutos.

00:57.510 --> 01:00.240
Pero si pudiera permitirte hacer multithreading

01:00.240 --> 01:01.650
y hacer esas cosas fuera de

01:01.650 --> 01:03.981
orden o hacerlas al mismo tiempo, entonces

01:03.981 --> 01:07.050
podrías hacer más de una cosa a la vez enviando estas cosas

01:07.050 --> 01:09.360
a diferentes hilos o diferentes flujos.

01:09.360 --> 01:11.130
Por ejemplo, digamos que te digo que

01:11.130 --> 01:12.450
quiero que escribas algo con

01:12.450 --> 01:13.500
la mano derecha y, al mismo

01:13.500 --> 01:15.900
tiempo, quiero que golpees el escritorio con la mano

01:15.900 --> 01:17.070
izquierda.

01:17.070 --> 01:18.570
Podrías hacer las dos cosas a la

01:18.570 --> 01:19.830
vez, porque tienes dos hilos,

01:19.830 --> 01:22.020
o dos manos para hacer esas acciones.

01:22.020 --> 01:23.970
Esta es la idea del multithreading.

01:23.970 --> 01:26.700
Lo que hicieron Intel y los demás fabricantes fue desarrollar

01:26.700 --> 01:28.860
una forma de permitir que el software se comunicara

01:28.860 --> 01:30.720
con sus procesadores y ejecutara varios

01:30.720 --> 01:33.061
subprocesos paralelos al mismo tiempo dentro

01:33.061 --> 01:35.610
de un mismo procesador.

01:35.610 --> 01:37.050
Esto permite que estos hilos se ejecuten

01:37.050 --> 01:39.420
a través de ese procesador y reducir la cantidad de tiempo, de

01:39.420 --> 01:41.340
tiempo de inactividad, que la CPU está sentada allí

01:41.340 --> 01:43.080
esperando la siguiente acción.

01:43.080 --> 01:45.030
De este modo, podemos aumentar

01:45.030 --> 01:46.680
nuestra capacidad de

01:46.680 --> 01:48.006
procesar más cosas

01:48.006 --> 01:50.550
e intentar hacer más cosas en el mismo

01:50.550 --> 01:52.410
tiempo.

01:52.410 --> 01:55.140
Ahora, eso es genial, pero sólo funciona hasta cierto

01:55.140 --> 01:57.570
punto, y el software tiene que ser capaz de utilizarlo

01:57.570 --> 02:00.060
y entenderlo para poder decirle al sistema que quieres

02:00.060 --> 02:02.790
utilizar varios hilos al mismo tiempo.

02:02.790 --> 02:04.140
Esta es la gran limitación

02:04.140 --> 02:06.630
cuando se trata de algo como hyper-threading.

02:06.630 --> 02:08.400
Ahora, otra forma de superar

02:08.400 --> 02:13.320
esto es lo que se conoce como hacer multiprocesamiento simétrico, o SMP.

02:13.320 --> 02:15.570
Ahora bien, SMP es la forma tradicional en que las estaciones

02:15.570 --> 02:17.304
de trabajo y los servidores hacían esto,

02:17.304 --> 02:20.370
porque en realidad tenían múltiples procesadores.

02:20.370 --> 02:22.080
Ahora, para hacer esto, tienes que tener

02:22.080 --> 02:25.290
una placa base que tenga dos zócalos de procesador o cuatro zócalos de procesador,

02:25.290 --> 02:27.420
y entonces instalarías dos o cuatro procesadores

02:27.420 --> 02:28.890
en esa placa base.

02:28.890 --> 02:31.050
Cuando hagas esto, todos esos procesadores tienen

02:31.050 --> 02:32.790
que ser del mismo tipo y velocidad para

02:32.790 --> 02:34.290
que puedan trabajar juntos.

02:34.290 --> 02:37.410
Y su sistema operativo subyacente tiene que entender

02:37.410 --> 02:39.690
cómo utilizar más de un procesador.

02:39.690 --> 02:42.690
Por defecto, la mayoría de los sistemas operativos no lo hacían.

02:42.690 --> 02:45.150
Y así, tenías que tener un sistema operativo basado

02:45.150 --> 02:47.670
en servidor como Windows Server 2019, para poder soportar

02:47.670 --> 02:49.350
múltiples procesadores.

02:49.350 --> 02:52.860
Por ello, el SMP o multiprocesamiento simétrico, no era muy útil

02:52.860 --> 02:55.620
en ordenadores de sobremesa y portátiles.

02:55.620 --> 02:58.770
Y en su lugar, la mayoría de los ordenadores de sobremesa y portátiles

02:58.770 --> 03:01.110
tuvieron que recurrir al hyper-threading de

03:01.110 --> 03:04.140
los procesadores Intel o al multithreading simultáneo, o

03:04.140 --> 03:06.720
SMT, si se utiliza un procesador AMD.

03:06.720 --> 03:09.480
Así pues, el hyper-threading y el SMT funcionaron muy bien

03:09.480 --> 03:12.090
durante mucho tiempo, pero con el tiempo llegamos al límite

03:12.090 --> 03:14.250
de la cantidad de cosas que queríamos procesar

03:14.250 --> 03:16.920
y de disponer de un único procesador para hacerlo.

03:16.920 --> 03:19.020
Ahora bien, como la mayoría de los sistemas operativos

03:19.020 --> 03:20.610
no sabían cómo manejar varios zócalos

03:20.610 --> 03:23.220
o varios procesadores en una misma placa base, los fabricantes

03:23.220 --> 03:25.470
empezaron a crear lo que se conoce como paquete

03:25.470 --> 03:27.420
multinúcleo.

03:27.420 --> 03:28.770
Cuando hablo de un paquete,

03:28.770 --> 03:31.500
me refiero a la CPU, el chip físico.

03:31.500 --> 03:33.570
Ahora, en lugar de tener dos paquetes físicos

03:33.570 --> 03:35.790
o dos chips físicos en dos zócalos diferentes

03:35.790 --> 03:37.020
de la placa base, lo que estos

03:37.020 --> 03:38.850
fabricantes decidieron hacer fue crear

03:38.850 --> 03:42.390
un único paquete que funcionaba como una sola CPU.

03:42.390 --> 03:43.740
Pero dentro de ese paquete,

03:43.740 --> 03:47.160
en realidad había varias CPU o varios procesadores.

03:47.160 --> 03:49.410
Esto significaba que para la placa base

03:49.410 --> 03:53.040
parecía una sola CPU física, porque lo era, pero en su interior

03:53.040 --> 03:54.540
había varios núcleos, o núcleos

03:54.540 --> 03:57.600
de unidad central de procesamiento.

03:57.600 --> 03:59.910
Esto permite que cualquier sistema operativo

03:59.910 --> 04:03.240
se comunique con ese procesador o paquete de procesadores

04:03.240 --> 04:05.160
y que el propio paquete de procesadores

04:05.160 --> 04:06.840
reparta las instrucciones entre

04:06.840 --> 04:10.890
los múltiples núcleos internos de la CPU.

04:10.890 --> 04:11.812
Piénsalo así.

04:11.812 --> 04:14.250
Tienes una casa con cuatro dormitorios.

04:14.250 --> 04:16.320
Si alguien llama a la puerta y dice: "Necesito una cama

04:16.320 --> 04:17.580
para pasar la noche", le da igual

04:17.580 --> 04:19.320
cuál de las cuatro le den, siempre que tenga

04:19.320 --> 04:20.880
una cama para pasar la noche.

04:20.880 --> 04:22.710
Y así, entras por la puerta principal, les

04:22.710 --> 04:25.620
llevas a una sola habitación y sólo les enseñas una habitación.

04:25.620 --> 04:28.560
Eso es esencialmente lo que hace este procesador multinúcleo.

04:28.560 --> 04:30.570
A medida que entran nuevas personas por la puerta, las

04:30.570 --> 04:32.790
lleva a una habitación individual y les deja dormir allí durante

04:32.790 --> 04:35.700
la noche, o hacer sus trámites, y luego las vuelve a enviar fuera.

04:35.700 --> 04:36.720
De todo eso se encarga la

04:36.720 --> 04:38.220
persona que está en la puerta de entrada,

04:38.220 --> 04:40.860
que, en este caso, es ese paquete multinúcleo.

04:40.860 --> 04:43.200
Y luego, los coloca en el compartimento individual

04:43.200 --> 04:46.890
o subprocesador individual que necesita para hacer ese trabajo.

04:46.890 --> 04:49.290
Esa es la idea de un paquete multinúcleo.

04:49.290 --> 04:51.480
Ahora bien, la mayoría de nosotros hemos oído hablar de

04:51.480 --> 04:52.650
esto antes, porque, en su sistema,

04:52.650 --> 04:55.110
es probable que tenga un procesador multinúcleo.

04:55.110 --> 04:57.120
Probablemente tenga un procesador de doble núcleo,

04:57.120 --> 04:59.790
lo que significa que tiene dos CPU dentro de un único chip, o un procesador

04:59.790 --> 05:01.230
cuádruple, lo que significa que tiene

05:01.230 --> 05:02.730
cuatro procesadores dentro de un único

05:02.730 --> 05:03.960
chip.

05:03.960 --> 05:05.730
O un procesador hexa, es decir,

05:05.730 --> 05:08.340
seis núcleos en un solo chip.

05:08.340 --> 05:09.840
O un procesador octa, es

05:09.840 --> 05:12.300
decir, ocho núcleos en un solo chip.

05:12.300 --> 05:16.090
Por ejemplo, en mi CPU, tengo un procesador de ocho núcleos en mi ordenador

05:16.090 --> 05:19.260
de sobremesa, y es un chip físico, pero tiene ocho subprocesadores

05:19.260 --> 05:21.630
en su interior.

05:21.630 --> 05:23.370
Es lo que se conoce como procesador

05:23.370 --> 05:25.410
de ocho núcleos o multinúcleo.

05:25.410 --> 05:27.240
Ahora, además de tener multi-core

05:27.240 --> 05:28.800
y tener hyper-threading, puedes

05:28.800 --> 05:29.991
combinar los dos así que

05:29.991 --> 05:32.846
cada uno de esos procesadores dentro del paquete, por

05:32.846 --> 05:34.560
ejemplo, en mi sistema tengo el

05:34.560 --> 05:37.530
octa-core, que tiene ocho procesadores.

05:37.530 --> 05:38.940
Ahora, dentro de ese paquete, hay

05:38.940 --> 05:40.050
ocho procesadores, y cada

05:40.050 --> 05:41.730
uno de esos ocho procesadores también

05:41.730 --> 05:43.710
puede soportar hyper-threading.

05:43.710 --> 05:46.860
Esto significa que tengo 16 hilos con ocho CPUs, lo que me da

05:46.860 --> 05:49.260
una tonelada de capacidad de procesamiento en

05:49.260 --> 05:50.850
esa máquina en particular.

05:50.850 --> 05:53.250
Muy bien, en este punto hemos hablado de tres de las

05:53.250 --> 05:56.010
cuatro cosas que queríamos cubrir en esta lección.

05:56.010 --> 05:57.390
Ya hemos hablado del hyper-threading

05:57.390 --> 06:00.090
y del multithreading simultáneo, conocido como SMT.

06:00.090 --> 06:02.460
Hemos hablado del multiprocesamiento simétrico,

06:02.460 --> 06:04.830
o de tener varias CPU en zócalos, y también

06:04.830 --> 06:07.530
de la idea de los procesadores multinúcleo, en

06:07.530 --> 06:09.120
los que una única CPU tiene varios

06:09.120 --> 06:11.220
procesadores en su interior, ya sean

06:11.220 --> 06:14.010
dos, cuatro, seis u ocho.

06:14.010 --> 06:17.400
Ahora, lo último de lo que tenemos que hablar es de la virtualización.

06:17.400 --> 06:20.490
La virtualización es otra característica de las CPU, pero no tiene

06:20.490 --> 06:22.020
nada que ver con las tres que acabamos

06:22.020 --> 06:23.220
de mencionar.

06:23.220 --> 06:24.780
Los tres de los que acabamos de hablar

06:24.780 --> 06:27.300
trataban de cómo obtener más rendimiento de un solo

06:27.300 --> 06:28.710
chip o de varios.

06:28.710 --> 06:30.300
Pero cuando hablamos de virtualización,

06:30.300 --> 06:32.880
de lo que hablamos es de ser capaces de emular que ahí

06:32.880 --> 06:35.730
hay un hardware que en realidad no existe.

06:35.730 --> 06:37.080
En realidad, esto se

06:37.080 --> 06:39.450
consigue mediante la tecnología de

06:39.450 --> 06:42.330
virtualización de Intel, conocida como VT,

06:42.330 --> 06:44.700
o la de AMD, conocida como AMD-V.

06:44.700 --> 06:47.340
Ahora, ambos proporcionan extensiones de procesador

06:47.340 --> 06:49.710
para soportar la virtualización, lo que se conoce

06:49.710 --> 06:52.050
como virtualización asistida por hardware.

06:52.050 --> 06:53.021
Y esto probablemente

06:53.021 --> 06:55.470
nos lleve a la pregunta: ¿qué es la virtualización?

06:55.470 --> 06:58.291
Bueno, la virtualización es la capacidad de hacer que

06:58.291 --> 07:01.560
un ordenador simule que está ejecutando varios ordenadores

07:01.560 --> 07:02.729
dentro de sí mismo.

07:02.729 --> 07:04.560
Ahora, lo que parece es que podría

07:04.560 --> 07:07.140
tener un solo portátil como mi MacBook.

07:07.140 --> 07:11.700
Y en ese MacBook, tengo un sistema operativo, macOS.

07:11.700 --> 07:13.710
Ahora, si quisiera ejecutar Windows o Linux,

07:13.710 --> 07:15.600
tendría que reformatear mi máquina e instalar

07:15.600 --> 07:16.920
ese software.

07:16.920 --> 07:18.780
Eso sería realmente inconveniente.

07:18.780 --> 07:21.360
Pero con la virtualización, no tengo que hacerlo.

07:21.360 --> 07:22.830
En su lugar, puedo ejecutar

07:22.830 --> 07:26.340
un programa como VMware o Virtualbox o Parallels, y dentro

07:26.340 --> 07:27.840
de ese software, puedo crear

07:27.840 --> 07:30.000
un ordenador virtual.

07:30.000 --> 07:32.370
Puedo decirle que quiero que tenga un procesador

07:32.370 --> 07:34.950
o dos procesadores o cuatro procesadores.

07:34.950 --> 07:36.600
Y puedo decirle cuánta memoria

07:36.600 --> 07:38.010
y almacenamiento quiero.

07:38.010 --> 07:39.930
Y creará este ordenador virtual

07:39.930 --> 07:42.510
que sólo existe en el software.

07:42.510 --> 07:44.645
Ahora, cuando ejecuto el nuevo sistema operativo,

07:44.645 --> 07:48.660
como Windows, dentro de él, podría decir que se trata de un procesador de dos núcleos.

07:48.660 --> 07:52.770
Tiene cuatro gigabytes de RAM y un disco duro de 50 gigabytes.

07:52.770 --> 07:54.750
Todo eso sólo existe en software.

07:54.750 --> 07:57.296
Pero cuando instalo Windows en esa máquina virtual,

07:57.296 --> 07:59.670
Windows piensa que es un ordenador completo.

07:59.670 --> 08:02.340
Piensa que tiene dos procesadores, cuatro

08:02.340 --> 08:04.050
gigabytes de memoria y 50

08:04.050 --> 08:06.270
gigabytes de disco duro.

08:06.270 --> 08:07.200
Y así, para Windows, piensa

08:07.200 --> 08:09.390
que tiene todo este hardware físico, y eso es lo que

08:09.390 --> 08:11.400
la virtualización nos permite hacer.

08:11.400 --> 08:13.659
Nos permite virtualizar un ordenador

08:13.659 --> 08:15.600
y dotarlo de hardware virtual y poder

08:15.600 --> 08:17.293
ejecutar varios sistemas operativos

08:17.293 --> 08:20.280
dentro de un único host físico.

08:20.280 --> 08:23.100
Ahora, además de VT y AMD-V, también hay un segundo

08:23.100 --> 08:24.450
nivel de soporte de hardware

08:24.450 --> 08:27.120
de virtualización que puedes buscar en algunos

08:27.120 --> 08:28.860
procesadores modernos.

08:28.860 --> 08:31.800
En los sistemas Intel, esto se conoce como EPT, o tabla

08:31.800 --> 08:33.480
de páginas extendida.

08:33.480 --> 08:35.490
Y cuando se trata de un procesador

08:35.490 --> 08:39.810
AMD, lo llaman indexación de virtualización rápida, o RVI.

08:39.810 --> 08:42.390
Ambas se consideran funciones de traducción de direcciones

08:42.390 --> 08:45.450
de segundo nivel o SLAT (Second Level Address Translation) de la virtualización

08:45.450 --> 08:48.060
de software que luego subyacen y son compatibles con ese procesador

08:48.060 --> 08:50.430
de hardware para permitir una mejor gestión de la memoria

08:50.430 --> 08:53.773
virtual y ofrecerle un mayor rendimiento a la hora de utilizar la memoria

08:53.773 --> 08:56.913
dentro de una máquina virtual.

08:57.870 --> 09:00.150
Vamos a hablar mucho más sobre la virtualización

09:00.150 --> 09:02.130
en sus propias lecciones, pero por ahora,

09:02.130 --> 09:03.480
sólo quiero que entiendas

09:03.480 --> 09:06.660
que algunas CPUs tienen la capacidad de hacer esto dentro de

09:06.660 --> 09:08.250
su conjunto de procesadores,

09:08.250 --> 09:10.530
y los procesadores que tienen esa capacidad,

09:10.530 --> 09:14.844
como los que soportan VT de Intel o AMD-V de AMD, te darán un mejor rendimiento cuando

09:14.844 --> 09:16.470
estás haciendo virtualización

09:16.470 --> 09:19.260
que los que no lo hacen.

09:19.260 --> 09:20.698
Por lo tanto, si vas a construir

09:20.698 --> 09:22.710
una máquina y deseas utilizarla para la virtualización,

09:22.710 --> 09:24.060
como un servidor que va a ejecutar

09:24.060 --> 09:25.995
un montón de otros servidores virtuales en

09:25.995 --> 09:28.034
él, debes asegurarte de que los procesadores

09:28.034 --> 09:31.710
que elijas tengan VT o AMD-V para que puedan soportar la virtualización acelerada

09:31.710 --> 09:34.170
por hardware directo, porque eso te dará una experiencia

09:34.170 --> 09:37.433
mucho mejor y un rendimiento mucho mejor que si tienes que hacer la virtualización

09:37.433 --> 09:40.653
de software en su lugar.
