Instructor: En esta lección,
vamos a cubrir las características de la CPU.
Esto incluye aspectos como multihilo,
multiprocesamiento simétrico,
núcleo único frente a núcleo múltiple y soporte de virtualización.
Ahora, lo primero que
vamos a tratar es lo que se conoce como multihilo, también conocido
como SMT o multihilo simultáneo o hiperhilo, dependiendo
de la CPU que compres.
Hyper-threading es un término utilizado
por Intel para este proceso.
Y el término más genérico es SMT,
o multihilo simultáneo.
Ahora, cuando se trata de hilos, este
es el concepto de un único flujo de instrucciones que está
siendo enviado por una aplicación de software a un procesador.
Ahora bien, la mayoría de las aplicaciones se diseñaron para ejecutar un único
proceso en un único hilo.
Y esto significa que ese software lo
hace todo en serie.
Así, si te diera una instrucción
de cinco cosas diferentes que
hacer, las harías en orden, una,
dos, tres, cuatro y cinco.
Y si cada uno de ellos te llevara 10 minutos,
serían un total de 50 minutos.
Pero si pudiera permitirte hacer multithreading
y hacer esas cosas fuera de
orden o hacerlas al mismo tiempo, entonces
podrías hacer más de una cosa a la vez enviando estas cosas
a diferentes hilos o diferentes flujos.
Por ejemplo, digamos que te digo que
quiero que escribas algo con
la mano derecha y, al mismo
tiempo, quiero que golpees el escritorio con la mano
izquierda.
Podrías hacer las dos cosas a la
vez, porque tienes dos hilos,
o dos manos para hacer esas acciones.
Esta es la idea del multithreading.
Lo que hicieron Intel y los demás fabricantes fue desarrollar
una forma de permitir que el software se comunicara
con sus procesadores y ejecutara varios
subprocesos paralelos al mismo tiempo dentro
de un mismo procesador.
Esto permite que estos hilos se ejecuten
a través de ese procesador y reducir la cantidad de tiempo, de
tiempo de inactividad, que la CPU está sentada allí
esperando la siguiente acción.
De este modo, podemos aumentar
nuestra capacidad de
procesar más cosas
e intentar hacer más cosas en el mismo
tiempo.
Ahora, eso es genial, pero sólo funciona hasta cierto
punto, y el software tiene que ser capaz de utilizarlo
y entenderlo para poder decirle al sistema que quieres
utilizar varios hilos al mismo tiempo.
Esta es la gran limitación
cuando se trata de algo como hyper-threading.
Ahora, otra forma de superar
esto es lo que se conoce como hacer multiprocesamiento simétrico, o SMP.
Ahora bien, SMP es la forma tradicional en que las estaciones
de trabajo y los servidores hacían esto,
porque en realidad tenían múltiples procesadores.
Ahora, para hacer esto, tienes que tener
una placa base que tenga dos zócalos de procesador o cuatro zócalos de procesador,
y entonces instalarías dos o cuatro procesadores
en esa placa base.
Cuando hagas esto, todos esos procesadores tienen
que ser del mismo tipo y velocidad para
que puedan trabajar juntos.
Y su sistema operativo subyacente tiene que entender
cómo utilizar más de un procesador.
Por defecto, la mayoría de los sistemas operativos no lo hacían.
Y así, tenías que tener un sistema operativo basado
en servidor como Windows Server 2019, para poder soportar
múltiples procesadores.
Por ello, el SMP o multiprocesamiento simétrico, no era muy útil
en ordenadores de sobremesa y portátiles.
Y en su lugar, la mayoría de los ordenadores de sobremesa y portátiles
tuvieron que recurrir al hyper-threading de
los procesadores Intel o al multithreading simultáneo, o
SMT, si se utiliza un procesador AMD.
Así pues, el hyper-threading y el SMT funcionaron muy bien
durante mucho tiempo, pero con el tiempo llegamos al límite
de la cantidad de cosas que queríamos procesar
y de disponer de un único procesador para hacerlo.
Ahora bien, como la mayoría de los sistemas operativos
no sabían cómo manejar varios zócalos
o varios procesadores en una misma placa base, los fabricantes
empezaron a crear lo que se conoce como paquete
multinúcleo.
Cuando hablo de un paquete,
me refiero a la CPU, el chip físico.
Ahora, en lugar de tener dos paquetes físicos
o dos chips físicos en dos zócalos diferentes
de la placa base, lo que estos
fabricantes decidieron hacer fue crear
un único paquete que funcionaba como una sola CPU.
Pero dentro de ese paquete,
en realidad había varias CPU o varios procesadores.
Esto significaba que para la placa base
parecía una sola CPU física, porque lo era, pero en su interior
había varios núcleos, o núcleos
de unidad central de procesamiento.
Esto permite que cualquier sistema operativo
se comunique con ese procesador o paquete de procesadores
y que el propio paquete de procesadores
reparta las instrucciones entre
los múltiples núcleos internos de la CPU.
Piénsalo así.
Tienes una casa con cuatro dormitorios.
Si alguien llama a la puerta y dice: "Necesito una cama
para pasar la noche", le da igual
cuál de las cuatro le den, siempre que tenga
una cama para pasar la noche.
Y así, entras por la puerta principal, les
llevas a una sola habitación y sólo les enseñas una habitación.
Eso es esencialmente lo que hace este procesador multinúcleo.
A medida que entran nuevas personas por la puerta, las
lleva a una habitación individual y les deja dormir allí durante
la noche, o hacer sus trámites, y luego las vuelve a enviar fuera.
De todo eso se encarga la
persona que está en la puerta de entrada,
que, en este caso, es ese paquete multinúcleo.
Y luego, los coloca en el compartimento individual
o subprocesador individual que necesita para hacer ese trabajo.
Esa es la idea de un paquete multinúcleo.
Ahora bien, la mayoría de nosotros hemos oído hablar de
esto antes, porque, en su sistema,
es probable que tenga un procesador multinúcleo.
Probablemente tenga un procesador de doble núcleo,
lo que significa que tiene dos CPU dentro de un único chip, o un procesador
cuádruple, lo que significa que tiene
cuatro procesadores dentro de un único
chip.
O un procesador hexa, es decir,
seis núcleos en un solo chip.
O un procesador octa, es
decir, ocho núcleos en un solo chip.
Por ejemplo, en mi CPU, tengo un procesador de ocho núcleos en mi ordenador
de sobremesa, y es un chip físico, pero tiene ocho subprocesadores
en su interior.
Es lo que se conoce como procesador
de ocho núcleos o multinúcleo.
Ahora, además de tener multi-core
y tener hyper-threading, puedes
combinar los dos así que
cada uno de esos procesadores dentro del paquete, por
ejemplo, en mi sistema tengo el
octa-core, que tiene ocho procesadores.
Ahora, dentro de ese paquete, hay
ocho procesadores, y cada
uno de esos ocho procesadores también
puede soportar hyper-threading.
Esto significa que tengo 16 hilos con ocho CPUs, lo que me da
una tonelada de capacidad de procesamiento en
esa máquina en particular.
Muy bien, en este punto hemos hablado de tres de las
cuatro cosas que queríamos cubrir en esta lección.
Ya hemos hablado del hyper-threading
y del multithreading simultáneo, conocido como SMT.
Hemos hablado del multiprocesamiento simétrico,
o de tener varias CPU en zócalos, y también
de la idea de los procesadores multinúcleo, en
los que una única CPU tiene varios
procesadores en su interior, ya sean
dos, cuatro, seis u ocho.
Ahora, lo último de lo que tenemos que hablar es de la virtualización.
La virtualización es otra característica de las CPU, pero no tiene
nada que ver con las tres que acabamos
de mencionar.
Los tres de los que acabamos de hablar
trataban de cómo obtener más rendimiento de un solo
chip o de varios.
Pero cuando hablamos de virtualización,
de lo que hablamos es de ser capaces de emular que ahí
hay un hardware que en realidad no existe.
En realidad, esto se
consigue mediante la tecnología de
virtualización de Intel, conocida como VT,
o la de AMD, conocida como AMD-V.
Ahora, ambos proporcionan extensiones de procesador
para soportar la virtualización, lo que se conoce
como virtualización asistida por hardware.
Y esto probablemente
nos lleve a la pregunta: ¿qué es la virtualización?
Bueno, la virtualización es la capacidad de hacer que
un ordenador simule que está ejecutando varios ordenadores
dentro de sí mismo.
Ahora, lo que parece es que podría
tener un solo portátil como mi MacBook.
Y en ese MacBook, tengo un sistema operativo, macOS.
Ahora, si quisiera ejecutar Windows o Linux,
tendría que reformatear mi máquina e instalar
ese software.
Eso sería realmente inconveniente.
Pero con la virtualización, no tengo que hacerlo.
En su lugar, puedo ejecutar
un programa como VMware o Virtualbox o Parallels, y dentro
de ese software, puedo crear
un ordenador virtual.
Puedo decirle que quiero que tenga un procesador
o dos procesadores o cuatro procesadores.
Y puedo decirle cuánta memoria
y almacenamiento quiero.
Y creará este ordenador virtual
que sólo existe en el software.
Ahora, cuando ejecuto el nuevo sistema operativo,
como Windows, dentro de él, podría decir que se trata de un procesador de dos núcleos.
Tiene cuatro gigabytes de RAM y un disco duro de 50 gigabytes.
Todo eso sólo existe en software.
Pero cuando instalo Windows en esa máquina virtual,
Windows piensa que es un ordenador completo.
Piensa que tiene dos procesadores, cuatro
gigabytes de memoria y 50
gigabytes de disco duro.
Y así, para Windows, piensa
que tiene todo este hardware físico, y eso es lo que
la virtualización nos permite hacer.
Nos permite virtualizar un ordenador
y dotarlo de hardware virtual y poder
ejecutar varios sistemas operativos
dentro de un único host físico.
Ahora, además de VT y AMD-V, también hay un segundo
nivel de soporte de hardware
de virtualización que puedes buscar en algunos
procesadores modernos.
En los sistemas Intel, esto se conoce como EPT, o tabla
de páginas extendida.
Y cuando se trata de un procesador
AMD, lo llaman indexación de virtualización rápida, o RVI.
Ambas se consideran funciones de traducción de direcciones
de segundo nivel o SLAT (Second Level Address Translation) de la virtualización
de software que luego subyacen y son compatibles con ese procesador
de hardware para permitir una mejor gestión de la memoria
virtual y ofrecerle un mayor rendimiento a la hora de utilizar la memoria
dentro de una máquina virtual.
Vamos a hablar mucho más sobre la virtualización
en sus propias lecciones, pero por ahora,
sólo quiero que entiendas
que algunas CPUs tienen la capacidad de hacer esto dentro de
su conjunto de procesadores,
y los procesadores que tienen esa capacidad,
como los que soportan VT de Intel o AMD-V de AMD, te darán un mejor rendimiento cuando
estás haciendo virtualización
que los que no lo hacen.
Por lo tanto, si vas a construir
una máquina y deseas utilizarla para la virtualización,
como un servidor que va a ejecutar
un montón de otros servidores virtuales en
él, debes asegurarte de que los procesadores
que elijas tengan VT o AMD-V para que puedan soportar la virtualización acelerada
por hardware directo, porque eso te dará una experiencia
mucho mejor y un rendimiento mucho mejor que si tienes que hacer la virtualización
de software en su lugar.