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.
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.
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.
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.
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
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:
if
o for
) aquí predice cual es el siguiente código a ejecutar.En la siguiente imagen podemos ver las unidades en un procesador Zen de AMD:
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.
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.
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, 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.
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.
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
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?.
Busca un procesador Intel en internet he indica:
Busca un procesador AMD en internet he indica:
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.
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?
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 |
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.
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.