2. CARACTERISTICAS DE LA CPU.. 2
5.1 Clasificación de instrucciones según longitud. 10
5.2 Clasificación de instrucciones según su funcionalidad. 11
5.3 Tipos según número de direcciones: 12
5.4 Modos de direccionamiento: 13
6. FUNCIONAMIENTO DE LA CPU.. 13
7. GESTIÓN DE INTERRUPCIONES. 13
8.2 Coprocesador matemático. 15
8.3 Controlador de interrupciones. 15
8.4 Controlador DMA (Direct Memory Access). 15
1. INTRODUCCIÓN
· La UPC-CPU es el corazón del PC.
· Necesita otros elementos para su correcto funcionamiento.
· La información manejada por el sistema es electricidad que viaja a través de circuitos y que necesita ser retenida en pequeñas zonas de memoria para su posterior procesamiento en la memoria principal.
· Si no existieran estas memorias (registros) o circuitos (buses) no tendría sentido su existencia ya que la información no podría ser almacenada por lo que se perdería y no obtendríamos ningún resultado.
2. CARACTERISTICAS DE LA CPU
· La CPU presenta características que nos sirven para evaluar y compara otras CPUs.
o 1) Velocidad de proceso:
· La CPU recibe una señal de un temporizador externo que marca el ritmo de funcionamiento de circuito; a mayor velocidad del temporizador más rápido será el procesamiento de las instrucciones.
· La velocidad se mide en Hercios (ciclos por segundo) o más bien en algunos de sus múltiplos (KHz, MHz, GHz…)
o 2) Juego de instrucciones:
· Cada CPU su propio juego te instrucciones.
· Para ejecutar un programa en una CPU concreta las instrucciones de dicho programa deben adecuarse al conjunto de instrucciones utilizado por dicha CPU.
· Si el programa esta escrito en código maquina o ensamblador, debe ser reescrito de nuevo.
· Si se trata de un programa escrito en lenguaje de alto nivel tendrá que ser recompilado.
o 3) Bus de datos:
· Determina la cantidad de memoria máxima a la que podrá acceder la CPU en una sola operación de lectura o escritura.
· El ancho del bus de datos de la CPU no tiene que coincidir con el tamaño de los registros internos.
o 4) Bus de direcciones
· Limita la cantidad de memoria máxima a la que podrá acceder la CPU.
· Se puede direccionar à interesa que este valor sea alto.
o 5) Registros:
· La CPU utiliza una serie de registros que dependerán de la arquitectura y serán empleados para almacenar datos e instrucciones.
· La arquitectura RISC consta de un número superior a la arquitectura CISC.
o 6) Líneas de interrupción:
· Son utilizada para interrumpir el normal funcionamiento de la CPU.
· Se paralizará temporalmente la ejecución del proceso actual para atender una situación excepcional.
· Las interrupciones HW son provocadas por periféricos o por los circuitos adicionales ante situaciones especiales.
3. COMPONENTES
Los componentes de la CPU (unidad central de proceso) son los siguientes:
– Unidad de control (UC)
– Unidad aritmeticológica (UAL)
Juntos a ellos nos encontramos con:
– Memoria central
– Periféricos
· Unidades de E y/o Salida
· Memoria masiva o auxiliar
Para completar la clasificación existen otros elementos necesarios para que las unidades de la CPU puedan realizar su tarea. Estos son:
– Registros
– Buses
A continuación, comenzamos a describir los componentes que integran la CPU.
3.1 Unidad de control
3.1.1 Funciones de la UC
Encargada de controlar todas las operaciones que se realizan en el sistema de forma sincronizada con el reloj.
– Búsqueda de las instrucciones
– Decodificación e interpretación de las mismas
– Enviar las señales de control a todas las unidades para que realicen sus cometidos además de arbitrar los buses para evitar conflictos durante la transmisión de la información.
Existen 2 tipos de UC que dan lugar a 2 tipos de máquinas:
–Lógica cableada:
Son máquinas de propósito especifico ya que los programas vienen implementados en el propio HW por lo que para que puedan realizar otra tarea necesitan ser rediseñadas y reconstruidas. (excepción arquitectura tipo RISC ya que su unidad de control es de tipo cableado siendo de propósito general al igual que las UC de lógica programada))
-Lógica programada:
Son las implementadas en las computadoras lo que las convierte en máquinas de propósito general ya que su funcionamiento se basa en SW.
Las operaciones básicas que realiza son (lógicas, aritméticas y movimiento de datos (lectura y escritura)).
3.1.2 Componentes
Para realizar su función utiliza:
– Contador de programa (CP) o registro contador de instrucciones:
Contiene una dirección de memoria, concretamente la dirección de la siguiente instrucción a ejecutar.
– Registro de instrucción:
Contiene la instrucción que se está ejecutando.
– Decodificador (D):
Toma el código de operación de la instrucción en curso y según el estado de los dispositivos que participan, genera las señales de control pertinentes para la ejecución de la instrucción.
– Reloj (R) o temporizador:
Se encarga de generar los pulsos eléctricos que determinan el momento en que debe de comenzar a realizarse cada uno de los pasos que necesita cada instrucción para su ejecución. Estos pasos están ya preestablecidos, variando según el juego de instrucciones implementado.
A cada periodo de tiempo que viene marcado por los flancos de subida y bajada del reloj se le llama Ciclo máquina, de manera que cada instrucción se ejecuta en un tiempo igual a un múltiplo de ciclos máquina, es decir, en un número entero de ciclos máquina, variando de la instrucción a otra según su complejidad.
La representación gráfica de la ejecución de la instrucción se denomina entre “Cronograma”.
Para medir la velocidad de un Pc no solo basta saber la velocidad del reloj, sino también otros aspectos, como el tamaño de la palabra, si tiene coprocesador matemático, su juego de instrucciones (si es RISC o CISC), etc.
– Secuenciador (S):
Generan ordenes muy elementales que permiten ejecutar la instrucción en curso, de forma síncrona con el reloj del sistema.
3.2 Unidad Aritmeticológica:
Es la unidad funcional encargada de realizar las operaciones aritméticas o lógicas bajo la supervisión de la unidad de control. Para liberar a la CPU de ciertas tareas se ha implementado un “coprocesador matemático” debido al incremento de programas que requieren muchos cálculos matemáticos.
3.2.1 Componentes
– Circuito operacional:
Es la unidad donde se realizan las operaciones.
Los circuitos pueden ser combinacionales o secuenciales.
· Combinacionales:
La salida depende exclusivamente de las entradas.
Un circuito de este tipo puede ser visto como una caja negra que recibe N señales de entrada y produce M señales de salida, siendo estas ultimas el resultado de una función booleana, que vendrá implementada con puertas lógicas.
· Secuenciales:
Se conectan a elementos de memoria con realimentación.
La salida del circuito depende de la entrada y del estado anterior.
Podemos clasificar estos circuitos en:
o Síncronos:
Su comportamiento se define en instantes discretos de tiempo.
Son circuitos que responden o cambian el estado cuando reciben una señal de temporizador.
o Asíncronos:
Su comportamiento depende del orden de señales de entrada.
– Registros:
· Registro acumulador (RA):
Almacena los resultados de las operaciones que, mediante su conexión con el bus de datos, son llevados posteriormente al a memoria principal.
· Registro de Operandos o de Entrada (REN):
Almacena los datos leídos de la memoria que van a participar en el cálculo.
· Registro de Estado (RES) o indicador de estado:
La información que contiene puede ser necesaria en los cálculos que se realizan posteriormente.
La UC es la que determina, en cualquier caso, la operación que debe realizar la ALU.
3.2.2 Tipos de operaciones
– Desplazamientos:
– Lógicas:
-Aritméticas:
– Negación o cambio de signo
– Suma
–Resta
-Multiplicación
-División
3.2.3 Otros componentes
Para poder realizar las operaciones arriba es necesario transformar la información introducida en lenguaje maquina entendible por el PC y viceversa.
Dispone de codificadores/decodificadores que, según la función que realice, reciben distinto nombre:
-Codificadores: Realizan el paso de la información a código máquina.
– Decodificador binario: 2 tipos
· Decodificador de direcciones: Permite localizar posiciones de memoria.
· Decodificador de instrucciones: Traducen las instrucciones que se van a ejecutar.
– Multiplexor: Lleva la información a su destino, mediante la activación de la salida adecuada.
– Demultiplexor: Se utiliza para controlar que unidad va a tener acceso al bus cuando es solicitado, la transformación de la información paralelo/serie y para funciones booleanas.
– Comparadores: Permiten realizar comparaciones entre los datos.
3.3 Registro de la CPU
Pequeñas memorias dedicadas almacenamiento temporal de pequeñas cantidades de datos.
Normalmente, su tamaño es similar a la longitud del bus de datos, aunque a veces son de menor tamaño, pero se asocian para guardar los datos.
Los registros son las memorias a las que se accede con mayor rapidez. (jerarquía memorias)
Estos registros pueden clasificarse:
1) Registros internos de uso general: Almacenan cualquier tipo de información ya sean datos o posiciones de memoria.
a. Registros internos de datos: A veces es conveniente guardar los datos como puede ser, cuando un dato es solicitado muy a menudo o cuando existen resultados intermedios que van a necesitarse con posterioridad.
(Acumulador) recibe un tratamiento especial. Utilizado por la unidad aritmeticologica, y que permite realizar muchos tipos de operaciones sobre los datos que almacena y que no se pueden hacer en otros registros.
b. Registros internos de direcciones: Almacenan la dirección de la memoria donde se encuentra un dato o donde se desea guardar, por lo que también se le llama punteros. Contendrán un valor denominado índice, por lo tanto, podremos acceder a posiciones contiguas de memoria, únicamente incrementando el valor del índice.
2) Registros internos específicos:
a. Contador de programa (Program Counter, PC): Contiene la dirección de memoria de la siguiente instrucción a ejecutar, con respecto a la que esta en curso. Una excepción es cuando se produce un salto en la ejecución del programa. Utiliza el registro que describimos a continuación:
b. Puntero pila o Stack: Es una estructura dinámica en la que se añaden y eliminan elementos solo por un extremo llamado cabecera, tope o cima de pila. Sobre una pila se puede realizar 2 operaciones: Añadir (Meter) un nuevo elemento o eliminar (Sacar) uno ya existente.
Esta filosofía es la que se denomina LIFO (Last Input First Output) y consiste en: Como solo se puede acceder por un extremo, el último en entrar es el primero en salir.
Esta filosofía es la que se utiliza para almacenar las direcciones de instrucciones cuando se realizan llamadas a subrutinas, denominándose “programa principal” al que hace la llamada.
Una subrutina, a su vez, puede incluir la llamada a otras subrutinas, pasado a ser la subrutina que realizo la llamada al programa principal de la subrutina a la que llamo y así sucesivamente.
Ante esta situación el programa principal ya no se ejecuta secuencialmente, sino que su ejecución se detiene para pasar a ejecutar la subrutina.
Una vez finalizada tiene que seguir con el programa principal a partir del punto donde se produjo el salto.
Para poder realizar este proceso se tienen que almacenar la dirección de memoria de la instrucción siguiente a la que hizo la llamada, junto con todos los datos contenidos en los registros, memoria, etc; para poder restablecer los valores y continuar la ejecución.
El contador del programa contiene la dirección de la siguiente instrucción a ejecutar. El proceso consiste en almacenar en la pila el contenido del contador de programa junto con todos los datos, de manera que cuando se devuelva el control al programa llamante pueda recuperar los datos sobre los que se estaba operando y restablecer los componentes al estado en que se encontraban.
El SO establecerá la zona de memoria principal que se reservará para almacenamiento, recibiendo el nombre de “zona lifo”, aunque su capacidad es limitada.
Es la unidad de control la que contiene el registro llamado puntero o pila stack pointer o SP).
–Registro de instrucción: Almacena la instrucción que se esta ejecutando con el fin de que la UC pueda acceder a ella cuando sea necesario.
-Indicador de resultado: Tomara un valor determinado de 0s y 1s según haya finalizado la ejecución de la instrucción de parte de la ALU de forma exitosa o no. Los bits de este registro (flag registrer, FLAGS) son entre otros:
· Bit de acarreo
· Bit de acarreo auxiliar
· Bit de signo
· Bit de cero (vale 1)
· Bit de paridad
· Bit de desbordamiento
-Conexión de registros: Los registros pueden conectarse entre si de distintas maneras, existiendo 2 formas básicas:
· Bus: La información tiene que mandarse de forma única y en un instante determinado de tiempo.
· Estrella:
Sobre la base de estas dos formas básicas surgen otras.
4. ESTRUCTURA DE LA CPU
4.1 Componentes básicos:
Los elementos del PC se encuentran divididos en bloques individuales que necesitan comunicarse para transmitir la información y realizar tareas complejas.
Esta comunicación se realiza a través de los “Buses” que son los circuitos encargados de conectar todas las unidades. Básicamente se distingues 3 tipos:
– Bus de datos: Viajan los datos “operandos e instrucciones” que son leídos de la memoria o enviados a la memoria central desde, o hacia un periférico. El número de hilos que lo componen determina la longitud de la palabra con la que es capaz de trabajar la CPU.
Los microprocesadores se han clasificado según el número de líneas (bits) del bus de datos. Se caracteriza por ser bidireccional, los datos pueden dirigirse en ambos sentidos.
– Bus de direcciones: Es un bus unidireccional y su misión es la de enviar las direcciones donde se quiere grabar un dato o donde se va a realizar la lectura y el dispositivo con el que se quiere trabajar. Según el número de líneas que lo componen. Permite direccionar una menor o mayor cantidad de memoria.
-Bus de control: Es bidireccional ya que por el se transmiten, por un lado, las ordenes o señales de control generadas por el sistema para la realización de un proceso y, por otro lado, las señales de estado que indican el modo en que se encuentran los dispositivos, así como otras señales adicionales necesarias para la ejecución de las instrucciones.
4.2 Tipo de conexiones:
– Buses compartidos: El bus del sistema es “único”. Cualquier información que sea enviada por la CPU llega tanto a la memoria principal como a las distintas unidades funcionales.
Para agilizar este proceso existen 2 opciones:
a) Mapas de memoria compartido: Existe un solo mapa de memoria que se distribuye entre la memoria y las unidades.
Las posiciones de memoria son únicas para ambos elementos.
b) Mapas de memoria independiente: Existen 2 mapas que al estar separados tienen direcciones de memoria comunes.
Necesitan de una línea más y en función del nivel en el que se encuentre (alto o bajo), indica si quiere acceder a la memoria o a una unidad E/S.
–Buses dedicados: El bus de sistema se comunica de forma independiente con la memoria y con las unidades.
Permite mandar información de forma simultanea por ambos canales de comunicación.
Este tipo de bus requiere una circuitería más compleja.
4.3 Tipos de transmisión:
Por cada línea de bus viaja 1 bit.
Existen 2 tipos:
a) Transmisión en paralelo: Viaja 1 bit por cada línea de forma simultánea. Por ejemplo: por 1 bus de 8 líneas viajarán 8 bits en un momento determinado.
b) Transmisión en serie: Los bits de la palabra viajan de uno en uno en un momento determinado. El número de hilos utilizado para cada dispositivo depende de la cantidad de información que tienen que manejar. Solo existe 1 línea para enviar datos las demás realizan otras funciones.
4.4 Jerarquía de buses:
-Bus tipo 0: Dentro de los chips integrados en las tarjetas o en la placa base.
– Bus tipo 1: Circuitos situados en la placa base o en una tarjeta.
– Bus tipo 2 y 3: Única diferencia la longitud de ellos. Constituyendo el bus del sistema. (PCI peripheral components interconnection) ISA, EISA o PCMCIA (personal computer memory card international association)…
– Bus tipo 4: Engloba a los buses paralelos (SCSI) que comenzó a utilizarse en los discos duros y fue aumentando su aplicación posteriormente a otros dispositivos.
–Bus tipo 5: Se corresponde con los buses serie utilizados principalmente en las redes de ordenadores.
5. TIPO DE INSTRUCCIONES
La CPU tiene su propio juego de instrucciones que determinan las acciones a realizar en cada caso.
1 instrucción esta compuesta de un código de operación y de unos operandos que pueden ser opcionales y de número variable.
5.1 Clasificación de instrucciones según longitud
Están compuestas de un código de operación y sus datos opcionales.
– Longitud fija: Todas tienen mismo número de bits.
– Longitud variable: Dependiendo del código de operación la CPU sabrá cual es la longitud de la instrucción incluyendo los datos.
a) Longitud invariable: código de operación fijo.
b) Longitud variable: código de operación variable.
5.2 Clasificación de instrucciones según su funcionalidad
a) Transferencia de datos:
– MOV à Asignación de datos
-PUSH à pone datos en la pila
-POPà Saca datos de la pila
b) Transferencia de direcciones:
– LEA à carga dirección efectiva
– LDS à carga dirección en registro DS.
– LES à Carga dirección en registro ES.
c) Instrucciones de E/S:
– IN à Letura de puerto
-OUT à Escritura de puerto
d) Cálculo:
-ADD à Suma
-DIVà División
-INC à Incrementa
– MULà multiplicación
-SUB à resta
e) Lógicas
– AND à operación lógica AND
– OR à OR lógico
– NOT à negación
-XOR à OR exclusivo
f) Desplazamiento
-Aritméticos (preservan signo)
– SAL à Desplazamiento izquierda
-SAR à Desplazamiento derecha
– Lógicos (no preservan signos)
– SHL à Desplazamiento izquierda
-SHR à Desplazamiento derecha
g) Rotación
– Sin considerar el bit de acarreo signo
– ROL à rotación izquierda
-ROR à Rotación derecha
– Si consideran el bit de acarreo signo
-RCL à rotación izquierda
-RCR –> rotación derecha
h) Ruptura de secuencia incondicional.
– JMP à salto incondicional
i) Ruptura de secuencia condicional
– JG-JL-JE à Salto si mayor – menor – igual
– JNE-JZ à Salto si no 0 – si 0
j) Llamada – vuelto de rutina – interrupción:
– CALL- RET à llamada de subrutina y retorno
– INT-IRET à llamada a interrupción y retorno
k) bucles:
-LOOP-LOOPE=LOOPZ-LOOPNE=LOOPNZ
-Bucle si igual – bucle si no igual
l) No operación:
– NOP à No hace nada espera n ciclos
m) cadenas:
– MOVS-MOVSW à mover cadenas
– COMS-COMSWà comparar cadenas
5.3 Tipos según número de direcciones:
Número de parámetros que necesita:
a) Formato de 4 direcciones: 2 operadores, el resultado y la dirección de la siguiente instrucción
b) Formato de 3 direcciones: la cpu incorpora 1 contador de programa, 2 operandos más la dirección del resultado.
c) Formato de 2 direcciones: 2 operandos, 1 de ellos guiara el resultado de la operación.
d) Formato direcciones: 1 de los operandos es 1 registro.
e) Formato 1 dirección: 1 de los operandos esta cargado previamente en un registro.
f) Formato de 0 direcciones: Ambos operandos están almacenados previamente en los registros de la cpu.
5.4 Modos de direccionamiento:
Las instrucciones incorporan una serie de operadores:
a) Direccionamiento inmediato: El valor consta en la misma instrucción.
b) Direccionamiento absoluto: El operando contiene la dirección del dato.
c) Direccionamiento indirecto: Se indica una dirección de una celdilla.
d) Direccionamiento indexado: El operando indica una dirección a la cual hay que sumar un índice.
6. FUNCIONAMIENTO DE LA CPU
Todo programa antes de ser ejecutado tiene que encontrarse en la memoria principal o memoria RAM.
El proceso para ejecutar una instrucción seria la siguiente:
– Fase de búsqueda de la instrucción:
Primera instrucción es cargada en el “contador de programa” este registro se incrementará el contenido del CP pase al “registro de instrucciones”.
El contenido mandado al bus de direcciones una vez realizada la lectura enviará la información a través del bus de datos “registro de datos” decodifica y genera las ordenes.
-Fase de ejecución de la instrucción:
En la UAL el registro de estado contendrá la información realizado con éxito o no.
7. GESTIÓN DE INTERRUPCIONES
Las interrupciones proveen al sistema de un mecanismo para que en un momento dado poder detener el funcionamiento normal del procesador; se utilizan para llamar su atención sobre algo distinto a lo que se esta ejecutando en ese momento.
El procesador, cuando se dispone a traer una nueva instrucción del programa que se esta ejecutando, comprueba antes si se ha producido o no una interrupción, si no es así continua con su ejecución normal.
En caso de que se haya producido un error procederá al tratamiento de la ejecución.
Labor que llevan a cabo el procesador y el Sistema operativo (SO).
Hay ocasiones que no interesa que el procesador sea interrumpido.
Para ello existe la posibilidad de inhabilita y habilitar las interrupciones.
– Interrupción de programa: Se producen durante la ejecución de una instrucción del programa por motivos tales como intentar realizar una operación no válida, acceder a una zona de memoria no permitida, realizar una operación aritmética y producirse desbordamiento etc..
– Interrupciones de reloj: Son provocadas por el reloj interno del PC y las que permiten realizar tareas con una frecuencia determinada.
–Interrupciones de E/S: Suelen provocar los controladores de E/S para avisar al procesador de que se ha concluido una operación E/S.
–Interrupciones HW: Provocadas por algún fallo de HW.
Tratamiento de una interrupción:
1) Cuando el procesador recibe una interrupción y se ha identificado de donde procede.
2) Se prepara para lanzar a ejecución la rutina que da servicio a dicha interrupción.
3) Deberá salvar antes el contexto del programa que esta ejecutando e inmediatamente después empezará a ejecutar la rutian de tratamiento de interrupción.
4) Esta rutina guardará el resto de la información relativa al programa que se estuviera ejecutando en la pila y procederá a solucionar el motivo de la interrupción.
5) Una vez que ha terminado restaura los valores que se salvaron en la pila.
6) Por ultimo el contexto del programa que se estaba ejecutando con anterioridad lo restaura.
8.CIRCUITOS ADICIONALES
En la CPU hay una serie de circuitos adicionales que ayudarán a esta en su labor.
8.1 Memoria caché
La memoria central del PC es mucho mas lenta que la CPU.
Se convierte en un cuello de botella: provoca que el procesador emplee mas tiempo en lecturas y escrituras a memoria que en la ejecución de las instrucciones traídas de memoria.
Las memorias estáticas son más rapidas que las memorias dinámicas empleadas normalmente pero también más costosas.
La CPU comunica directamente con este tipo de memoria denominada cache.
Lee los datos e instrucciones directamente de está mejorando notablemente su rendimiento.
Esta memoria cache solo alberga una porción de la memoria central de manera que puede ocurrir que el procesador desea acceder a una dirección de memoria que no este almacenada en la cache.
En este caso se produce un fallo de cache y el circuito que controla esta memoria accederá a la memoria central y cargará de nuevo la cache.
Debido a que las instrucciones de un programa suelen estar ubicadas de forma contigua al igual que sus datos.
En un PC hay varios niveles de cache, conectándose estos en serie, de forma que un fallo en la cache de primer nivel provoca una lectura de la cache de 2do nivel y así sucesivamente.
8.2 Coprocesador matemático
Circuito de apoyo al procesador central.
Agrega instrucciones de cálculo en coma flotante (números reales).
Amplía el juego de instrucciones de la CPU.
Cuando el procesador se encuentra con instrucciones de este tipo son desviadas hasta el procesador matemático para que este las lleve a cabo.
Hojas de cálculo, programa de tratamiento de gráficos, CAD, Simulación o tratamiento de sonido.
Elemento imprescindible à hoy en día todo microprocesador lo lleva integrado.
8.3 Controlador de interrupciones
Descarga a la CPU el control de las interrupciones HW.
El sistema tiene asociada una rutina de tratamiento de interrupciones para cada línea.
Procesador interrumpe la ejecución del proceso actual salvando los registros y ejecuta el código de la rutina correspondiente.
Vuelve a restaurar los registros del programa interrumpido y sigue ejecutándolo desde el punto en el que quedó interrumpido.
La cpu puede fijar prioridades.
8.4 Controlador DMA (Direct Memory Access)
Descarga las entradas y salidas de datos en periféricos rápidos ya que, el uso de interrupciones se vuelve inadecuado en estos casos.
La cpu programa al controlador DMA indicando las direcciones de memoria que deben emplear y el tipo de transferencia.
La información no tiene que pasar por los registros CPU.
Durante el proceso de paso o transferencia de información el DMA será el que controle el bus.
8.5 Circuito temporizador
Circuito programable que produce señales temporales que pueden ser de utilidad al sistema.
Por ejemplo, refresco de memoria o la señal del reloj del tiempo real.