Vous êtes sur la page 1sur 11

ARQUITECTURA DEL

PROCESADOR
SINOPSIS

• El procesador es todo un mundo en sí mismo; aunque los primeros eran comparativamente simples,
actualmente han alcanzado una notable complejidad. En el presente capítulo dedicaremos
algunos comentarios a su estructura lógica, mencionando de pasada que su tecnología física ha
avanzado paralelamente con la de construcción de circuitos integrados, IC's, lo que a la postre ha
significado unas dimensiones físicas cada vez más pequeñas y un menor consumo.
• La evolución de ambos parámetros no solo ha permitido incrementar la densidad de integración,
también la velocidad (frecuencia de funcionamiento). Si nos referimos a la familia Intel, de los
2.100 transistores del 4004 en 1970, que con solo 46 instrucciones funcionaba a unos 800 KHz,
se pasó a los 29.000 transistores del 8086 en 1979 a 14 MHz; y en 1999 a los 8.200.000
transistores del Pentium III a 2 GHz
• Nota: acabo de leer (Noviembre 2001) que Intel anuncia la nueva tecnología de 0.13 micras
para su serie Pentium 4(hasta ahora era de 0.18 micras), con la que se espera que a fines de
2002 se alcancen los 3 GHz. en estos procesadores. Un poco después (Enero 2002) leo que Intel
espera alcanzar 1.2 THz en sus procesadores para el 2005 (escribo esto en un Pentium II a 200
MHz no demasiado antiguo).

En Abril del 2002 Intel anuncia el procesador Pentium 4 con tecnología CMOS de 0,16 micras a
2.4 GHz y mejoras en el proceso de fabricación que permiten su fabricación en obleas de 300
mm. Esta tecnología permite al fabricante proporcionar más de cinco veces el volumen de
productos en una sola oblea en comparación con la del procesador Pentium 4 inicial.
• Actualmente se trabaja en el límite de la resolución óptica de los dispositivos
utilizados en su construcción (se usan técnicas fotográficas con longitudes de onda
cada vez menores para la luz utilizada), y debido a la altísima frecuencia de
funcionamiento, los conductores internos funcionan más como guías de onda que
como conductores eléctricos convencionales. Además, las dimensiones físicas del
propio dispositivo están teóricamente limitadas si se desea que todos sus elementos
funcionen según un mismo patrón de tiempo (cosa que es imprescindible). Para dar
una idea de las formidables dificultades técnicas que han debido resolver los
diseños actuales, considere que a la velocidad del Pentium III, las señales eléctricas
solo recorren 15 centímetros en cada ciclo de reloj.
TIPOS DE ARQUITECTURA

• Una de las primeras decisiones a la hora de diseñar un procesador es decidir cual será su juego de
instrucciones. Este conjunto de instrucciones (órdenes) es el lenguaje que realmente entiende el procesador, y
constituye lo que se conoce como lenguaje ensamblador o lenguaje-máquina [1].
• La decisión es trascendente, por dos razones. Primero: el juego de instrucciones decide el diseño físico del
conjunto. Segundo: cualquier operación que deba ejecutarse con el procesador deberá poder ser descrita en
términos de este "lenguaje" elemental (recuerde que los compiladores e intérpretes son en realidad
traductores desde el lenguaje de alto nivel (fuente) a este lenguaje-máquina.
• Sin entrar en detalles, podemos decir que frente a esta cuestión caben dos filosofías de diseño. La primera
conduce a máquinas denominadas CISC ("Complex Instruction Set Computer"); las máquinas construidas según
el otro criterio se denominan RISC("Reduced Instruction Set Computer").
• Como puede deducirse de sus propios nombres, las máquinas CISC utilizan
instrucciones muy complejas, diríamos que muy descriptivas y específicas, lo que
necesariamente se traduce en varias consecuencias:
• El lenguaje debe contener un amplio surtido de ellas (una para cada circunstancia
distinta).
• Son instrucciones complejas, por tanto de ejecución lenta. La circuitería del
procesador también es compleja.
• Para un trabajo específico se requieren pocas instrucciones (siempre hay una que
resuelve el problema).
1 REGISTROS DE USO GENERAL
• Existen 4 registros denominados AX, BX, CX y DX que en realidad tienen asignados usos característicos, aunque pueden ser utilizados
a discreción para cualquier cosa que necesitemos.

• • AX es denominado acumulador; suele contener uno de los operandos que intervienen en las operaciones aritméticas y
lógicas, y después de esta, el resultado de la operación. En general las instrucciones que trabajan con este registro (o su mitad
inferior) tienen un microcódigo más simple que la misma instrucción ejecutada con otro registro.

• • BX es el registro base, suele contener la dirección de inicio de una tabla de valores.

• • CX es denominado contador. Las instrucciones de bucle (LOOP) utilizan este registro como contador.

• • DX es un registro de datos, multiuso. Se utiliza en operaciones de multiplicación y división junto con AX. En operaciones de
entrada/salida de puertos IN/OUT, su mitad inferior DL, contiene el número de puerto

• Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6], en caso necesario pueden ser utilizados en dos mitades
(nibbles), "High" y "Low", de 8 bits, con lo que puede considerarse que existen 12 registros de uso general (no simultáneos), los
anteriores y sus mitades: AH; AL; BH; BL; CH; CL; DH y DL.
1.2 REGISTROS DE SEGMENTO
Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de
memoria). Utilizándolos en conjunción con otros registros que señalan las direcciones concretas dentro de estos
segmentos (los desplazamientos ), permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es
de 20 bits). Ver al respecto el epígrafe "Direccionamiento segmentado" ( 5.1).

• Segmento de código CS ("Code segment"). Señala la dirección del segmento de código del programa que
se está ejecutando ( E1.3.2).

• Segmento de datos DS ("Data segment"). Señala la dirección del segmento de datos del programa en
ejecución ( E1.3.2).

• Segmento de pila SS ("Stack segment"). Señala la dirección del segmento donde está la pila del programa
( E1.3.2).

• Segmento extra ES ("Extra segment"). Es un segmento auxiliar a los anteriores, se utiliza para señalar
espacio extra en alguno de los segmentos o para almacenar momentáneamente direcciones intermedias.

Nota: Puede ocurrir que programas pequeños utilicen el mismo segmento para el código, los datos y la pila.
1.3 REGISTROS DE PUNTERO
• Son 5 registros destinados a contener direcciones; estas direcciones son desplazamientos dentro de los segmentos indicados por los
registros de segmento (ver figura 5.1 Fig.2)

• • El primero, denominado indistintamente puntero de instrucción IP ("Instrucción pointer") y contador de programa


PC("Program counter"), indica el desplazamiento (dentro del segmento de código CS) de la próxima instrucción a ejecutar.

• • El puntero de pila SP ("Stack Pointer"), señala el desplazamiento del final de la pila dentro del segmento de pila SS. En
caso necesario la pila puede crecer a partir de este punto, de forma que por ejemplo, una nueva invocación de función
creará un nuevo registro de activación que comenzará en este punto.

• • El puntero base BP ("Base pointer") señala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el
origen de la zona ocupada por las variables dinámicas.

• • Existen dos registros denominados "de índice", en razón de su utilización muy particular; el índice fuente SI ("Source index")
y el índice destino DI ("Destination index"). Generalmente estos dos registros se utilizan con alguno de los registros de uso
general y con ciertas instrucciones específicamente pensadas para transferir datos (dentro de un rango de posiciones de
memoria), desde un punto inicial de un segmento de datos, a otro.

• Ver en la página adjunta un ejemplo relativo al uso de punteros


3.1.4 REGISTRO DE ESTADO

• Existe un registro especial, el registro de estado (FLAGS), en el que 9 de los 18 bits actúan
como semáforos (indicadores del estado del procesador y del resultado de determinadas
operaciones). Por ejemplo, si después de una suma aritmética hay o no desbordamiento del
bit más significativo.
• Los nombres y situación de cada uno, dentro
de la palabra de 16 bits, se muestran
en la figura 2.
• Cada bits individual puede estar "activo" (1) o "inactivo" (0), y tiene un identificador que
termina en F("Flag"). Son los siguientes:
Bit Indicador de: Uso

Indicador de arrastre del bit de mayor orden, que puede ocurrir en las operaciones aritméticas suma y
CF Acarreo ("Carry Flag")
resta.

Si está activo Indica un número par de bits activos (bits cuyo contenido es 1). Esta información es útil
PF Paridad ("Parity Flag")
cuando el procesador controla transmisiones de datos.

AF Acarreo auxiliar Indicador de ajuste en operaciones aritméticas con cantidades BCD ( E0.1w1).

ZF Cero ("Zero Flag") Está activo si el resultado de operación es cero o resultado de comparación igual.

SF Signo ("Sign Flag") Si está activo indica que el resultado de operación o de comparación son negativos [5].

Si está activo, el procesador genera automáticamente una interrupción después de la ejecución de


TF Detención ("Trap Flag") cada instrucción, lo que permite controlar paso a paso la ejecución del programa. Este bit debe estar
normalmente inactivo (a 0).

Este bit controla el estado del sistema de interrupciones enmascarables ( 2.4). Cuando está activo (1)
IF Interrupción ("Interrupt Flag")
permite las interrupciones; el estado inactivo (0) las deshabilita.

DF Dirección ("Direction Flag") Indica la dirección de las operaciones.

Desbordamiento (Overflow
OF Señala desbordamiento aritmético
Flag")

Vous aimerez peut-être aussi