Tabla de Contenidos

03. Procesadores

Material

Procesadores

El procesador ejecuta una serie de instrucciones en código máquina. Estas instrucciones no son mas que "números" en binario que entran a través del Bus desde la RAM. Cuando llegan esos "números" se realizan una serie de cálculos.

El resultado de los cálculos del procesador se puede almacenar en la RAM, en el sistema de Entrada/Salida o dentro del procesador en una pequeña memoria llamada "REGISTROS". Estos registros los usa el programador para almacenar datos temporales y no tener que almacenarlos en la RAM.

Arquitectura del Conjunto de Instrucciones (ISA)

Una Arquitectura del Conjunto de Instrucciones (ISA) especifica las instrucciones que "entiende" el procesador y los registros que posee dicho procesador. Por lo que para un programador , lo importante de un procesador es su ISA ya que indica como va a poder el programador , programar ese procesador.

A la ISA también se le llama a veces simplemente "Arquitectura", pero no confundir con la "Microarquitectura" (Que vamos a ver también en este tema)
Nombre ISA Empresa que la ha creado Ámbito
x86 (tambien llamada IA32) Intel PC de hasta de 4 GB de RAM
x64 (tambien llamada AMD64, EM64T, x86-64, Intel 64) AMD PC con mas de 4 GB de RAM
ARMv7 (tambien llamada AArch32) ARM Móviles,tablet,etc de hasta de 4 GB de RAM
ARMv8 (tambien llamada AArch64) ARM Móviles,tablet,etc con mas de 4 GB de RAM
Power IBM Estaciones de trabajo RISC, Antiguos Mac y en consolas como PS3 y XBox 360. La desquiciante historia en la que el desarrollo de Cell, sentó la base del procesador de Xbox 360
SPARC Oracle/Sun Estaciones de trabajo RISC
RISC-V RISC-V Fundation Pretende ser una alternativa a ARM que no pueda ser censurada por los gobiernos. RISC-V pude ser la clave para que Huawei no sea afectado por el veto comercial , RISC-V cambiara su sede de USA a Suiza por temores comerciales , RISC-V: Why The ISA Battles Aren't Over Yet y Alibaba presento los nuevos procesadores RISC-V XuanTie

Lo importante de una ISA es que un programa de ordenador solo puede ser escrito para una ISA concreta y no funcionará para otra ISA. Aunque también un programa, debido a que funciona sobre un sistema operativo, el programa debe ser programador pensando tanto en la ISA como en el Sistema Operativo.

Información sobre cada una de las ISAs

Normalmente las ISA se organizan en si son de 32 bits o de 64 bits. La diferencia principal es la cantidad de RAM a la que pueden acceder. Ya que esos 32 o 64 , es el Nº de Bits que se envían por el bus para indicar el Nº de celda de la RAM a leer o escribir.

Decir que las arquitecturas de PC (x86 y x64) al necesitar procesadores muy "grandes", tienen un gran consumo energético y son caros, aunque tengan un gran rendimiento. Por ello Apple ha decidido pasar de los procesadores con la ISA de x64 a procesadores con la ISA ARMv8.

Características de las ISA

Las ISA tiene 2 características principales:

Complejidad/Máxima RAM 32 Bits 64 Bits
CISC x86 x64
RISC ARMv7, Power, SPARC, RISC-V ARMv8, Power, SPARC, RISC-V

Como podemos ver , excepto para los PC, el resto de ISA son de tipo RISC. Esto es así ya que las ISA CISC son muy antiguas y poco eficientes. En la actualidad se siguen usando en los PCs por motivos de compatibilidad hacia atrás.

Ensamblador

El lenguaje ensamblado es el lenguaje que usamos las personas para escribir programas para un procesador. Prácticamente es como indicar los "números" directamente al procesador pero de una forma mas legible para una persona. El código máquina se refiere a los números directamente que entiende el ordenador y que es lo que se almacena en la RAM.

Como ejemplo de ensamblador vamos a usar el procesador Z-80 (un procesador de 8 bits) ya que es muy sencillo.

El Z-80 tiene:

Veamos el siguiente programa en ensamblador:

LD A,(#F2A3)
LD B,A
LD A,(#F2A4)
ADD A,B
LD (#F2A5),A

Vamos a explicar línea por línea:

¿Que hace realmente eso? Simplemente suma el contenido de las celdas de memoria "F2D3" y "F2D4" dejando el resultado en "F2D5".

Ahora veamos ese programa como sería en código máquina

Instrucción en ensamblador Instrucción en código máquina
LD A,(#F2D3) 3AF2D3
LD B,A 47
LD A,(#F2D4) 3AF2D4
ADD A,B 88
LD (#F2D5),A 32F2D5

Es decir que en la RAM, en las celdas realmente lo que se guarda es el código máquina que son los siguientes bytes de forma consecutiva: 3A F2 D3 47 3A F2 D4 88 32 F2 D5

Otra forma de ver el código máquina es la siguiente, en la que vemos en cada celda de la RAM, el valor que tiene.

Posición de la RAM Valor
0000 3A
0001 F2
0002 D3
0003 47
0004 3A
0005 F2
0006 D4
0007 88
0008 32
0009 F2
000A D5
F2D3 3
F2D4 5
F2D5
FFFE
FFFF

Cuando vemos ese números , no tiene mucho significado pero como acabamos de ver , son las instrucciones que se dan al procesador.

Hemos dicho que los programa de ordenador son distintos para cada ISA ya que en cada ISA los registros son distintos y además el código máquina también es totalmente distinto.

En la siguiente página: http://schweigi.github.io/assembler-simulator/, podemos ejecutar el siguiente programa que es muy similar de una ISA distinta:

start:
	MOV A, [13]	
	MOV B, [14]	
	ADD A,B
	MOV [15], A	
	HLT

DB 3;
DB 5;
DB 0;
Que suma los valores 3 y 5 que hay en las posiciones de memoria 13 y 14. Dejan el resultado en la posición de memoria 15

Si te interesa mas el lenguaje ensamblador. Puedes leerte el libro x86-64 Assembly Language Programming with Ubuntu
¿Que relación tiene el siguiente artículo con lo que acabamos de contar? Cyberpunk 2077 tiene peor rendimiento en CPUs AMD Ryzen, ¿por qué?

Unidades Funcionales

Ahora vamos a ver como es el procesador por dentro, como ya hemos indicado , el procesador tiene una serie de registros que vienen determinados por la ISA. Junto con ellos dentro del procesador están las siguientes unidades funcionales:

En la siguiente imagen podemos ver las unidades en un procesador Zen de AMD:

Microarquitectura

Es como los ingenieros diseñan el procesador para ser lo mas rápido posible. En los procesadores de Intel son cada una de las generaciones. 1º Gen, 2º Gen , etc. En los procesadores AMD tenemos Zen, Zen+ , Zen 2, Zen 3.

Cada año que pasa , se diseñan mejores microarquitecturas para hacer mas rápido el procesador pero su ISA es la misma para de esa forma que los programas sigan sirviendo en el nuevo procesador. Por lo tanto al comprar un procesador lo que nos interesa saber es su microarquitectura ya que eso determina el rendimiento.

Fabricante

Es el que finalmente fabrica el procesador (o cualquier otro chip) en las fábricas de procesadores. No tiene porque ser la misma empresa que diseña la microarquitectura o crea la ISA.

Hay pocas fabricas de chips en el mundo. En la siguiente página de la Wikipedia podemos ver las fábricas que hay Lista de plantas de fabricación de semicondictores

Veamos ahora un resumen de los 3 parámetros (ISA, Microarquitectura, Fabricante)

Modelo de Procesador ISA Empresa que diseña la ISA Empresa que diseña el Procesador
(Microarquitectura)
Empresa que fabrica el procesador
Intel i486DX x86 Intel Intel Intel
AMD Am486 x86 Intel AMD AMD
Intel Core i7-10700K x64 AMD Intel Intel
AMD Ryzen 9 3900X 3.8 GHz x64 AMD AMD TSMC
Snapdragon 800 ARMv7 ARM Qualcomm TSMC
A5 ARMv7 ARM Apple Samsung
Snapdragon 865 ARMv8 ARM Qualcomm TSMC
A11 ARMv8 ARM Apple TSMC
Exynos 990 ARMv8 ARM Samsung Samsung

Lo importante de esto es realmente la microarquitectura, ya que es lo de determina el rendimiento. Quien lo fabrique finalmente es lo de menos y el ISA que se usa no es muy determinante ya que por ahora en PC el ISA es el x64 y en móviles el ARMv8. Aunque es un movimiento genial de Apple, va a empezar a sacar Mac con procesadores ARM!!!!.

Así que cuando decimos que un procesador es de cierta empresa , estamos diciendo que dicha empresa ha diseñado la microarquitectura de dicho procesador, aunque no ha ya creado ni la ISA ni lo haya finalmente fabricado. Aunque vamos a complicar un poco mas las cosas para los procesadores ARM. Hemos dicho que ARM ha creado las ISAs (ARMv7 y ARMv8) pero también diseña microarquitecturas. Son los llamados "Cortex-A55, Cortex-A75, etc). Así que cuando decimos que Samsung ha diseñado el procesador "Exynos 990" , realmente lo que hace es usar alguna microarquitectura "Cortex" en ese procesador o modificaciones de ella. Aunque Apple en sus últimos procesadores ya diseña prácticamente todo el procesador.

Núcleos e hilos

Hemos visto como es un procesador o CPU, pero ahora hay que distinguir entre los siguientes 3 conceptos:

Veamos cada uno de ellos

Por lo que en una placa se pueden poner uno o mas procesadores, cada procesador tiene uno o mas núcleos y cada núcleo puede ejecutar uno o mas hilos.

La ley de Amdahl

La Ley de Amdahl, dice que según lo paralelizable que sea un programa, hay un límite al Nº de núcleos que se necesitan. Es decir , que aunque se añadan mas núcleos no va a mejorar prácticamente el rendimiento. Por lo que que tener mas núcleos no significa que siempre un procesador sea mas rápido.

Cache

La cache es como una pequeña memoria RAM que se encuentra dentro del procesador. La cache es fundamental en cualquier procesador ya que la RAM es demasiado lenta para enviar los datos y las instrucciones que necesita un procesador ya que el procesador funciona muy muy rápido en comparación con la RAM. La cache almacena las instrucciones y/o datos que mas usa la CPU y de esa forma no tiene que perder el tiempo en ir a buscarlo a la RAM.

Hay de 3 tipos de caches:

Si solo nos dicen un único tamaño de la cache de un procesador, se están refiriendo a la cache L3.

En la siguiente figura se puede ver un procesador con 4 cores y las caches

Los círculos grandes son las caches L2 de cada core y los círculos pequeños son las caches L1 de cada core.

Frecuencia

Otra característica importante del procesador en la Frecuencia a la que funciona, que se mide en GHz. Es decir la velocidad a la que ejecuta cada instrucción

Es importante destacar que no se puede comparar directamente la frecuencia de dos procesadores con microarquitectura distinta. Aunque uno vaya mas rápido que el otro (a mayor frecuencia) no significa que vaya mas rápido.Eso es así ya que por ejemplo la FPU de un proceesador a 2,2 Ghz podría ser mucho mas rápida que una la de otro procesador a 2,5 GHz

Socket

El socket (o Zócalo en castellano) es "el conector" donde se pone el procesador. El socket se encuentra en la placa base. Los procesadores están diseñador para una forma de socket en concreto. Varios modelos de procesadores pueden diseñarse para el mismo modelo de Socket. Pero lo contrario no es cierto. Además los Sockets entre fabricantes suelen ser incompatibles. En el siguiente artículo se pueden ver para cada procesador el socket que usa: What Is a CPU Socket? A Basic Definition

Un Socket al fin y al cabo es como un enchufe y un conector pero con muchísimos "pines". Dependiendo del tipo de Socket los "pines" pueden estar en la placa base o en el procesador.

La tendencia es a que se use LGA ya que permite mas densidad de pines. Actualmente (2021) AMD usa PGA e Intel PGA.

Mas información en ¿Qué tipo de socket es mejor a la hora de comprar tu placa base?.

Ejercicios

Ejercicio 1

Busca un procesador Intel en internet he indica:

Ejercicio 2

Busca un procesador AMD en internet he indica:

Ejercicio 3

Escribe un programa en ensamblado para el Z-80 que sume el valor de las posiciones de memoria 68A3 y DDF2 y deje el resultado en la posición de memoria ABCD.

Indica el código máquina de dicho programa.

Ejercicio 4

Si un programa funciona en un procesador de Sansung con ISA ARMv8, ¿funcionará dicho programa con un procesador Qualcomm cuya ISA es ARMv8? Es decir , si funcionará con dos procesadores de marcas distintas. ¿Explica porque?

Ejercicio 5

Rellena las siguientes tablas.

Consola Modelo del Procesador ISA CISC o RISC
Xbox Original
Xbox 360
Xbox One
Xbox Series X
Consola Modelo del Procesador ISA CISC o RISC
PlayStation
PlayStation 2
PlayStation 3
PlayStation 4
PlayStation 5

Ejercicio 6

Indica para las siguientes ISA de ARM si son ISAs de 32 bits o 64 bits:

Y indica también la máxima RAM a la que puede acceder cada uno de ellos.

Ejercicio 7

En la página de descarga de Java del JDK 8 y de Java del JDK 14, indica para que ISA's está disponibles cada una de las versiones.

1)
Es como un proceso o programa en ejecución