Temario Oposición Profesor FP Informática/Tema 02. Elementos funcionales de un ordenador digital. Arquitectura.

Estructura básica de un ordenador

editar

Históricamente los ordenadores eran computadores con un programa fijado pero en la actualidad los ordenadores siguen un modelo basado en programas de almacenamiento, de esta manera se tienen:

  • Computadora de programa fijado (Fixed Program Computer): Actualmente algunas máquinas todavía utilizan este módelo, las calculadoras, por ejemplo.
  • Computadora de programa almacenado (Stored Program Computer): En estas máquinas existe una memoria que sirve para almacenar programas por lo que son reprogramables sin necesidad de rediseñarlas por completo.

Éste último modelo también es conocido como Arquitectura Von Neumann.

Arquitectura John Von Neummann Fue diseñada en 1946 por el matemático John Von Neumann y es un modelo que utiliza la memoria tanto para almacenar instrucciones como datos. Estos computadores implementan la máquina Universal de Turing ya que permiten crear aplicaciones capaces de interpretar otras aplicaciones.

La idea de esta arquitectura es la de conectar de forma fija y coordinar el funcionamiento de los componentes de un ordenador con una unidad central de proceso (CPU). La CPU dispone de un conjunto de instrucciones que permiten manejar la máquina y además estas instrucciones se pueden almacenar en la memoria del sistema como el resto de datos.

Componentes de un ordenador. Modelo de máquina sencilla de Von Neumman

editar

Una máquina Von Neumman está compuesta por cuatro partes:

Unidad de Control (UC)

editar

Es la unidad que se encarga de leer las instrucciones secuencialmente. Las instrucciones las obtiene de la memoria principal.

Unidad Aritmético-lógica (ALU)

editar

Realiza las operaciones matemáticas fundamentales (suma, resta, AND, OR, etc.). Es conocida como ALU (UAL en inglés).

Memoria principal

editar

Es donde se almacenan los datos mediante celdas identificadas por direcciones

Unidad de control de entrada/salida

editar

Es la encargada de conectar la máquina con el exterior. Permite la transferencia de datos desde la máquina a los periféricos.

Imatge:Adcfig2.gif

La comunicación entre los diferentes componentes se realiza usando buses o canales. Los buses son los caminos físicos a través de los cuales las instrucciones y los datos circulan entre los diferentes componentes de la máquina.

Funcionamiento

editar

Veamos un ejemplo de como se ejecuta un programa en un ordenador actual. El siguiente gráfico nos muestra como es el proceso:

Supongamos un programa al que llamaramos holaMundo.sh y que una vez ejecutado nos saludara con la frase "¡Hola mundo!". Según el gráfico el primer paso del proceso de ejecución del programa es utilizar un dispositivo de entrada. En este caso utilizaremos el teclado y mediante una terminal de linea de comandos ejecutaremos:

$ holaMundo.sh

Conviene destacar que no siempre será un dispositivo de entrada el que iniciara el programa ya que los programas pueden ser iniciados por otros programas.

Con esta orden le indicamos a la computadora que debe ejecutar un programa llamado holaMundo.sh y que deberá buscar las instrucciones de las que se compone el programa en la memoria. La CPU irá leyendo las instrucciones de la memoria de forma secuencial y una vez que tenga un resultado lo mostrará por algún dispositivo de salida. (por ejemplo, la pantalla).

NOTA: Se han obviado los pasos de interpretación del lenguaje de programación y otros aspectos.

La unidad central de proceso (CPU)

editar

Para mas detalle consultar el tema 3:

Los computadores actuales tienen un componente que se llama la unidad dcentral de procesamiento.(conocida por el término inglés Central processing unit o CPU). La CPU esta compuesta por los siguientes componentes:

La unidad aritmético-lógica (ALU): Es la encargada de realizar las operaciones básicas La Unidad de Control: Es la encargada de coordinar y gestionar el resto de elementos de la CPU. Registros: Son elementos de memoria que contienen información relativa al programa que se está ejecutando.

La forma, diseño e implementación de las CPU ha cambiado mucho durante la evolución de la informática pero su funcionamiento continúa siendo el mismo desde su definición funcional en la arquitectura de Von Neumman.

Lenguaje máquina

editar

Las CPU ejecutan programas que leen de la memória principal. Pero estos programas no son escritos en lenguajes de alto nivel sino que son interpretados por la máquina utilizando un lenguaje muy restringido y de bajo nivel llamado lenguaje máquina. Este lenguaje es muy sencillo y se limita a un conjunto de instrucciones muy limitado que comunmente se llama juego de instrucciones del computador.

Cada CPU tiene su conjunto de instrucciones propio. Las CPU pueden ser de propósito general o estar diseñadas para un proposito concreto y por tanto tener un conjunto de instrucciones muy diferentes. De cualquier manera suelen cumplir los siguientes requisitos:

  • Realizan una única y sencilla operación.
  • Utilizan un número fijo de operandos y con una representación numérica fija.
  • La codificación de las instrucciones es lo más simple y sitemática posible de tal forma que el interprete del lenguaje máquina pueda ser también sencillo.
  • Las instrucciones son independientes y autocontenidas. Contienen todos los datos necesarios para ejecutarse y no dependen de otras instrucciones.

Y las podemos clasificar en::

  • Instrucciones de transferencia de datos: Leen o escriben datos de una memoria.
  • Instrucciones aritméticas: Realizan operaciones aritméticas utilizando la ALU.
  • Instrucciones lógicas: Realizan operaciones lógicas utilizando la ALU.
  • Instrucciones de desplazamiento: Realizan operaciones de desplazamiento.
  • Instrucciones de transferencia de control: Actualizan el registro PC de la CPU administrando el flujo de ejecución del programa (llamadas a subrutinas).
  • Instrucciones I/O: Administran los comandos de entrada salida.

Las instrucciones tienen un formato rígido definido por el conjunto de instrucciones del sistema. Una instrucción tiene dos partes:

  • Código de la operación: es descodificado por la unidad de control
  • Operandos: Los datos sobre los cuales se ejecutará una operación. Hay operaciones que no tienen datos, operaciones unarias y operaciones binarias.
  • Todas las instrucciones son imperativas

La arquitectura mas utilizada en PC de sobremesa es la x86 de Intel y compatibles (com por ejemplo las CPU de AMD). Esta arquitectura apareció en 1978 con intel y ha ido evolucionando Intel 286, Intel 386, Pentium,Pentium 2, Pentium 3, Itanium hasta los actuales Pentium 4.

Se han desarrollado y se continúan desarollando extensiones del lenguaje máquina. Un par de ejemplos son:

Conviene destacar que nosrmalmente es difícil encontrar software y sistemas operativos que soporten las nuevas instrucciones.

Propiedades:

  • Las instrucciones son independientes y autocontenidas. Contienen todos los datos necesarios para ejecutarse y no dependen de otras instrucciones.
  • Instrucciones sistemáticas (facilita su decodificación). El decodificador ha de ser sencillo (no puede ser tan complicado como un compilador de un lenguaje de alto nivel).
  • Es el único lenguaje que entiende la máquina.
  • Utiliza código binario, octal o hexadecimal.
  • Fueron los primeros lenguajes de programación
  • Cada máquina (CPU) tiene su propio lenguaje y conjunto de instrucciones. Poco portable. Es necesario conocer el conjunto de instrucciones de la máquina para poder programarla.Diferentes arquitecturas.
  • Actualmente se utilizan mucho más los lenguajes de alto nivel(mas faciles de aprender y utilizar por que son más cercanos al lenguaje natural)
    • La unidad de controlo utilizando el descodificador es la encargada de convertir las instrucciones en código interpretable por la CPU.
  • Los datos utilizados son referenciados por su posición en la memória. Es responsabilidad del programador controlar el mapa de memoria y la asignación de memoria a cada dato.
  • Las instrucciones tiene un formato rígido definido por el conjunto de instrucciones del sistema. Una instrucción tiene dos partes:
    • Código de la operación: Es descodificado por la unidad de control
    • Operandos
  • Todas las instrucciones son imperativas
  • No se pueden utilizar comentarios

La unidad aritmético-lógica (ALU)

editar

Las ALU son las encargadas de realizar las operaciones aritmético-lógicas que le proporciona la unidad de control. Las operaciones son muy sencillas hasta el punto de que muchos procesadores disponen de un simple sumador/restador y el resto de operaciones se realizan mediante la descomposición en operaciones sencillas de otras más complejas.

Las ALU tiene el siguiente esquema:

 

La forma de V se utiliza tipicamente para representarla donde los extremos de la v son los operandos y el vértice el resultado. La comunicación entre la CPU y la ALU se realiza mediante los siguientes registros:

  • A y B: Son los registros que contienen los operandos. Tambien se llaman Registros de entrada.
  • R: Es el registro que contiene el resultado. Los registros A, B y R normalmente se almacenan en un banco de registros.
  • F: Es el registro que indica que tipo de operación se realiza sobre los operandos A y B.
  • D: Es el registro de estado del resultado. También conocido como registro de estado (Status Register). Se utiliza para indicar estados especiales como bits de arrastre, divisiones por cero o 'desbordamientos/overflows.

Las operaciones que suelen hacer las ALU son:

  • Operaciones aritméticas con números enteros (suma, resta y a veces multiplicaciones y divisiones).
  • Operaciones lógicas binarías
  • Operaciones de desplazamiento de bits: Desplazamientos a derecha o izquierda de bits (equivaliendo a multiplicar o a dividir por 2).

Estas operaciones se suelen realizar mediante circuitos electrónicos que pueden ser circuitos combinacionales o circuitos secuenciales según utilizan registros de memoria o no.

Los operandos normalmente se representan en complemento a dos (Ver complemento a 2 en el tema 10) y las operaciones son con números enteros.

Las operaciones se pueden clasificar en:

  • Operacions unarias: Un solo operando (operación de negación)
  • Operacions binaria: 2 operadores (suma, resta, división, etc.)

Las operaciones pueden ser:

  • Operador paralelo: La operación se realiza con todos los bits del operador a la vez.
  • Operador serie: la operación se realiza dígito a dígito.