El procesador o CPU (Central Processing Unit, Unidad Central
de Procesamiento), es por decirlo de alguna manera, el cerebro del ordenador.
Permite el procesamiento de información numérica, es decir, información
ingresada en formato binario, así como la ejecución de instrucciones
almacenadas en la memoria.
El primer microprocesador (Intel 4004) se inventó en 1971.
Era un dispositivo de cálculo de 4 bits, con una velocidad de 108 kHz. Desde
entonces, la potencia de los microprocesadores ha aumentado de manera
exponencial. ¿Qué son exactamente esas pequeñas piezas de silicona que hacen
funcionar un ordenador?
Funcionamiento
El procesador o CPU es un circuito electrónico que funciona
a la velocidad de un reloj interno, gracias a un cristal de cuarzo que, sometido
a una corriente eléctrica, envía pulsos, denominados picos. La velocidad de
reloj (también denominada ciclo), corresponde al número de pulsos por segundo,
expresados en Hertz (Hz). De este modo, un ordenador de 200 MHz posee un reloj
que envía 200.000.000 pulsos por segundo. Por lo general, la frecuencia de
reloj es un múltiplo de la frecuencia del sistema (FSB, Front-Side Bus, Bus de
la Parte Frontal), es decir, un múltiplo de la frecuencia de la placa madre.
Con cada pico de reloj, el procesador ejecuta una acción que
corresponde a su vez a una instrucción o bien a una parte de ella. La medida
CPI (Cycles Per Instruction, Ciclos por Instrucción) representa el número
promedio de ciclos de reloj necesarios para que el microprocesador ejecute una
instrucción. En consecuencia, la potencia del microprocesador puede
caracterizarse por el número de instrucciones por segundo que es capaz de
procesar. Los MIPS (millions of instructions per second, millones de
instrucciones por segundo) son las unidades que se utilizan, y corresponden a
la frecuencia del procesador dividida por el número de CPI.
Instrucciones
Una instrucción es una operación elemental que el procesador
puede cumplir. Las instrucciones se almacenan en la memoria principal,
esperando ser tratadas por el procesador. Poseen dos campos: el código de
operación, que representa la acción que el procesador debe ejecutar; y el
código operando, que define los parámetros de la acción. El código operando
depende a su vez de la operación. Puede tratarse tanto de información como de
una dirección de memoria.
El número de bits en una instrucción varía de acuerdo al
tipo de información (entre 1 y 4 bytes de 8 bits). Las instrucciones pueden
agruparse en distintas categorías: Acceso a Memoria, acceso a la memoria o
transferencia de información entre registros; Operaciones Aritméticas,
operaciones tales como suma, resta, división o multiplicación; Operaciones
Lógicas, operaciones tales como Y, O, NO, NO EXCLUSIVO, etc.; Control,
controles de secuencia, conexiones condicionales, etc.
Registros
Cuando el procesador ejecuta instrucciones, la información
almacena en forma temporal en pequeñas ubicaciones de memoria local de 8, 16,
32 o 64 bits, denominadas registros. Dependiendo del tipo de procesador, el
número total de registros puede variar de 10 a varios cientos. Los registros
más importantes son los siguientes: el registro acumulador (ACC), que almacena
los resultados de las operaciones aritméticas y lógicas; el registro de estado
(PSW, Processor Estado: Word, Palabra de Estado del Procesador), que contiene
los indicadores de estado del sistema (lleva dígitos, desbordamientos, etc.);
el registro de instrucción (RI), que contiene la instrucción que está siendo
procesada actualmente; el contador ordinal (OC o PC por Program Counter,
Contador de Programa), que contiene la dirección de la siguiente instrucción a
procesar; el registro del búfer, que almacena información en forma temporal
desde la memoria.
Memoria caché
La memoria caché (también memoria buffer) es una memoria
rápida que permite reducir los tiempos de espera de las distintas informaciones
almacenada en la RAM (Random Access Memory, Memoria de Acceso Aleatorio). En
efecto, la memoria principal del ordenador es más lenta que la del procesador.
Existen, sin embargo, tipos de memoria que son mucho más rápidos, pero que
tienen un costo más elevado. La solución consiste entonces, en incluir este
tipo de memoria local próxima al procesador y en almacenar en forma temporal la
información principal que se procesará en él.
Los últimos modelos de ordenadores poseen muchos niveles
distintos de memoria caché. La Memoria caché nivel 1 (denominada L1 Cache, por
Level 1 Cache) se encuentra integrada directamente al procesador. Se subdivide
en dos partes. La primera parte es la caché de instrucción, que contiene
instrucciones de la RAM que fueron decodificadas durante su paso por las
canalizaciones. La segunda parte es la caché de información, que contiene
información de la RAM, así como información utilizada recientemente durante el
funcionamiento del procesador. El tiempo de espera para acceder a las memorias
caché nivel 1 es muy breve; es similar al de los registros internos del
procesador. La memoria caché nivel 2 (denominada L2 Cache, por Level 2 Cache)
se encuentra ubicada en la carcasa junto con el procesador (en el chip). La
caché nivel 2 es un intermediario entre el procesador con su caché interna y la
RAM. Se puede acceder más rápidamente que a la RAM, pero no tanto como a la
caché nivel 1. La memoria caché nivel 3 (denominada L3 Cache, por Level 3
Cache) se encuentra ubicada en la placa madre. Todos estos niveles de caché
reducen el tiempo de latencia de diversos tipos de memoria al procesar o
transferir información. Mientras el procesador está en funcionamiento, el
controlador de la caché nivel 1 puede interconectarse con el controlador de la
caché nivel 2, con el fin de transferir información sin entorpecer el
funcionamiento del procesador. También, la caché nivel 2 puede interconectarse
con la RAM (caché nivel 3) para permitir la transferencia sin entorpecer el
funcionamiento normal del procesador.
Las señales de control son señales electrónicas que
orquestan las diversas unidades del procesador que participan en la ejecución
de una instrucción. Dichas señales se envían utilizando un elemento denominado
secuenciador. Por ejemplo, la señal Leer/Escribir permite que la memoria se
entere de que el procesador desea leer o escribir información.
Unidades Funcionales
El procesador se compone de un grupo de unidades
interrelacionadas (o unidades de control). Aunque la arquitectura del
microprocesador varía considerablemente de un diseño a otro, estos presentan
algunos elementos comunes.
Una unidad de control vincula la información entrante para
luego decodificarla y enviarla a la unidad de ejecución. La unidad de control
se compone de los siguientes elementos: un secuenciador (o unidad lógica y de
supervisión), que sincroniza la ejecución de la instrucción con la velocidad de
reloj. También envía señales de control; un contador ordinal, que contiene la
dirección de la instrucción que se está ejecutando actualmente; un registro de
instrucción, que contiene la instrucción siguiente.
Una unidad de ejecución (o unidad de procesamiento) cumple
las tareas que le asigna la unidad de instrucción. La unidad de ejecución se
compone de los siguientes elementos: la unidad aritmética lógica (se escribe
ALU), que se encarga de la ejecución de cálculos aritméticos básicos y
funciones lógicas (Y, O, O EXCLUSIVO, etc.); la unidad de punto flotante (se
escribe FPU), que ejecuta cálculos complejos parciales que la unidad aritmética
lógica no puede realizar; el registro de estado; el registro acumulador.
Una unidad de administración del bus (o unidad de
entrada-salida), que administra el flujo de información entrante y saliente, y
que se encuentra interconectado con el sistema RAM;
El siguiente diagrama suministra una representación
simplificada de los elementos que componen el procesador (la distribución
física de los elementos es diferente a la disposición):
Transistor
Con el fin de procesar la información, el microprocesador
posee un grupo de instrucciones, denominado conjunto de instrucciones, hecho
posible gracias a los circuitos electrónicos. Más precisamente, el conjunto de
instrucciones se realiza con la ayuda de semiconductores, pequeños
"conmutadores de circuito" que utilizan el efecto transistor,
descubierto en 1947 por John Barden, Walter H. Brattain y William Shockley,
quienes recibieron por ello el premio Nobel en 1956.
Un transistor (contracción de los términos transferencia y
resistor) es un componente electrónico semiconductor que posee tres electrodos
capaces de modificar la corriente que pasa a través suyo, utilizando uno de
estos electrodos (denominado electrodo de control). Estos reciben el nombre de "componentes
activos", en contraste a los "componentes pasivos", tales como
la resistencia o los capacitores, que solo cuentan con dos electrodos (a los
que se denomina bipolares).
El
transistor MOS (metal, óxido, silicona) es el tipo de transistor más común utilizado
en el diseño de circuitos integrados. Los transistores MOS poseen dos áreas con
carga negativa, denominadas respectivamente fuente (con una carga casi nula), y
drenaje (con una carga de 5V), separadas por una región con carga positiva,
denominada sustrato. El sustrato posee un electrodo de control superpuesto, denominado puerta, que
permite aplicar la carga al sustrato.
Cuando una tensión no se aplica en el electrodo de control,
el sustrato con carga positiva actúa como barrera y evita el movimiento de
electrones de la fuente al drenaje. Sin embargo, cuando se aplica la carga a la
puerta, las cargas positivas del sustrato son repelidas y se realiza la
apertura de un canal de comunicación con carga negativa entre la fuente y el
drenaje.
El transistor actúa entonces como conmutador programable,
gracias al electrodo de control. Cuando se aplica una carga al electrodo de
control, éste actúa como interruptor cerrado, y cuando no hay carga, actúa como
interruptor abierto.
Circuitos Integrados
Una vez combinados, los transistores pueden constituir
circuitos lógicos que, al combinarse, forman procesadores. El primer circuito
integrado data de 1958 y fue construido por Texas Instruments.
Los transistores MOS se componen, entonces, de láminas de silicona
(denominadas obleas), obtenidas luego de múltiples procesos. Dichas láminas de
silicona se cortan en elementos rectangulares para formar un circuito. Los
circuitos se colocan luego en carcasas con conectores de entrada-salida, y la
suma de esas partes compone un circuito integrado. La minuciosidad del grabado,
expresado en micrones (micrómetros, se escribe µm) define el número de
transistores por unidad de superficie. Puede haber millones de transistores en
un sólo procesador.
La Ley de Moore, escrita en 1965 por Gordon E. Moore,
cofundador de Intel, predijo que el rendimiento del procesador (por extensión
del número de transistores integrados a la silicona) se duplicaría cada 12
meses. Esta ley se revisó en 1975, y se cambió el número de meses a 18. La Ley
de Moore sigue vigente hasta nuestros días.
Dado que la carcasa rectangular contiene clavijas de
entrada-salida que parecen patas, en Francia se utiliza el término pulga
electrónica para referirse a los circuitos integrados.
Familias
Cada tipo de procesador posee su propio conjunto de
instrucciones. Los procesadores se agrupan en las siguientes familias, de
acuerdo con sus conjuntos de instrucciones exclusivos: 80x86: la "x"
representa la familia. Se hace mención a 386, 486, 586, 686, etc.; ARM; IA-64;
MIPS; Motorola 6800; PowerPC; SPARC.
Esto explica por qué un programa producido para un tipo
específico de procesador sólo puede trabajar directamente en un sistema con
otro tipo de procesador si se realiza lo que se denomina traducción de instrucciones,
o emulación. El término emulador se utiliza para referirse al programa que
realiza dicha traducción.
Conjunto de Instrucciones
Un conjunto de instrucciones es la suma de las operaciones
básicas que puede cumplir un procesador. El conjunto de instrucciones de un
procesador es un factor determinante en la arquitectura del éste, aunque una
misma arquitectura puede llevar a diferentes implementaciones por diferentes
fabricantes.
El procesador funciona de forma eficiente gracias a un
número limitado de instrucciones, conectadas de forma permanente a los
circuitos electrónicos. La mayoría de las operaciones se pueden realizar
utilizando funciones básicas. Algunas arquitecturas, no obstante, sí incluyen
funciones avanzadas de procesamiento.
Arquitectura CISC
La arquitectura CISC (Complex Instruction Set Computer,
Ordenador de Conjunto de Instrucciones Complejas) se refiere a la conexión
permanente del procesador con las instrucciones complejas, difíciles de crear a
partir de las instrucciones de base.
La arquitectura CISC es especialmente popular en
procesadores de tipo 80x86. Este tipo de arquitectura tiene un costo elevado a
causa de las funciones avanzadas impresas en la silicona.
Las instrucciones son de longitud diversa, y a veces
requieren más de un ciclo de reloj. Dado que los procesadores basados en la
arquitectura CISC sólo pueden procesar una instrucción a la vez, el tiempo de
procesamiento es una función del tamaño de la instrucción.
Arquitectura RISC
Los procesadores con tecnología RISC (Reduced Instruction
Set Computer, Ordenador de Conjunto de Instrucciones Reducidas) no poseen
funciones avanzadas conectadas en forma permanente.
Es por eso que los programas deben traducirse en
instrucciones sencillas, lo cual complica el desarrollo o hace necesaria la
utilización de un procesador más potente. Este tipo de arquitectura tiene un
costo de producción reducido si se lo compara con los procesadores CISC.
Además, las instrucciones de naturaleza sencilla se ejecutan en un sólo ciclo
de reloj, lo cual acelera la ejecución del programa si se lo compara con los
procesadores CISC. Para terminar, dichos procesadores pueden manejar múltiples
instrucciones en forma simultánea, procesándolas en paralelo.
Mejoras Tecnológicas
A través del tiempo, los fabricantes de microprocesadores
(denominados fundadores) han desarrollado un determinado número de mejoras que
optimizan el rendimiento del procesador.
Procesamiento Paralelo
El procesamiento paralelo consiste en la ejecución
simultánea de instrucciones desde el mismo programa pero en diferentes
procesadores. Implica la división del programa en múltiples procesos manejados
en paralelo a fin de reducir el tiempo de ejecución.
No obstante, este tipo de tecnología necesita sincronización
y comunicación entre los diversos procesos, de manera similar a lo que puede
llegar a ocurrir cuando se dividen las tareas en una empresa: se distribuye el
trabajo en procesos discontinuos más pequeños que son manejados por diversos
departamentos. El funcionamiento de una empresa puede verse afectado en gran
medida si la comunicación entre los distintos servicios internos no funciona de
manera correcta.
Canalización
Se denomina canalización a la tecnología destinada a mejorar
la velocidad de ejecución de instrucciones mediante la colocación de las
diversas etapas en paralelo.
A fin de comprender el mecanismo de canalización, es
necesario primero comprender las etapas de ejecución de una instrucción. Las
etapas de ejecución de una instrucción correspondientes a un procesador con
canalización "clásica" de 5 pasos son las siguientes:
RECUPERACIÓN: recupera la instrucción de la caché;
DECODIFICACIÓN: decodifica la instrucción y busca operandos
(valores de registro o inmediatos;
EJECUCIÓN: ejecuta la instrucción (por ejemplo, si se trata
de una instrucción ADD, se realiza una suma, si es una instrucción SUB, se
realiza una resta, etc.);
MEMORIA: accede a la memoria, y escribe o recupera información
desde allí;
POST ESCRITURA (retirar): registra el valor calculado en un
registro.
Gracias a la canalización, el procesamiento de instrucciones
no requiere más que los cinco pasos anteriores. Dado que el orden de los pasos
es invariable (RECUPERACIÓN, DECODIFICACIÓN, EJECUCIÓN, MEMORIA, POST
ESCRITURA), es posible crear circuitos especializados para cada uno de éstos en
el procesador.
El objetivo de la canalización es ejecutar cada paso en
paralelo con los pasos anteriores y los siguientes, lo que implica leer la
instrucción (RECUPERACIÓN) mientras se lee el paso anterior (DECODIFICACIÓN),
al momento en que el paso anterior está siendo ejecutado (EJECUCIÓN) al mismo tiempo
que el paso anterior se está escribiendo en la memoria (MEMORIA), y que el
primer paso de la serie se registra en un registro (POST ESCRITURA).
En general, deben planificarse 1 o 2 ciclos de reloj (rara
vez más) para cada paso de canalización, o un máximo de 10 ciclos de reloj por
instrucción. Para dos instrucciones, se necesita un máximo de 12 ciclos de
reloj (10+2=12 en lugar de 10*2=20), dado que la instrucción anterior ya se
encontraba en la canalización. Ambas instrucciones se procesan simultáneamente,
aunque con una demora de 1 o 2 ciclos de reloj. Para 3 instrucciones, se
necesitan 14 ciclos de reloj, etc.
El principio de la canalización puede compararse a una línea
de ensamblaje automotriz. El auto se mueve de una estación de trabajo a la otra
a lo largo de la línea de ensamblaje y para cuando sale de la fábrica, está
completamente terminado. A fin de comprender bien el principio, debe
visualizarse la línea de ensamblaje como un todo, y no vehículo por vehículo.
Se necesitan tres horas para producir cada vehículo, pero en realidad se
produce uno por minuto.
Debe notarse que existen muchos tipos diferentes de
canalizaciones, con cantidades que varían entre 2 y 40 pasos, pero el principio
siempre es el mismo.
Superescalar
La tecnología Superscaling consiste en ubicar múltiples
unidades de procesamiento en paralelo con el fin de procesar múltiples
instrucciones por ciclo.
HyperThreading
La tecnología HyperThreading (se escribe HT) consiste en
ubicar dos procesadores lógicos junto con un procesador físico. El sistema
reconoce así dos procesadores físicos y se comporta como un sistema
multitareas, enviando de esta manera, dos subprocesos simultáneos denominados
SMT (Simultaneous Multi Threading, Multiprocesamiento Simultáneo). Este
"engaño", por decirlo de alguna manera, permite emplear mejor los
recursos del procesador, garantizando el envío masivo de datos.



No hay comentarios:
Publicar un comentario