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

Contenido eliminado Contenido añadido
Juanfe (discusión | contribs.)
Sin resumen de edición
Línea 33:
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==
La comunicacion entre los diferentes componentes se realiza usando '''buses o canales'''. Los buses son los caminos fisicos a través de los cuales las instrucciones y los datos circulan entre los diferentes componentes de la máquina.
 
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 i mediante una terminal de linea de comandos ejecutaremos:
 
$ holaMundo.sh
 
Conviene destacar que no siempre sera 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 i una vez que tenga un resultado lo mostrara por algún dispositivo de salida. (por ejemplo, la pantalla).
 
'''NOTA''': En este ejemplo se han obviado los pasos de interpretación del lenguaje de programación de nuestro programa y otros aspectos para simplificar.
 
=La unidad central de proceso (CPU)=
 
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 [http://en.wikipedia.org/wiki/CPU 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 canviado 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==
 
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 [http://en.wikipedia.org/wiki/X86-16 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:
 
*[http://en.wikipedia.org/wiki/MMX_%28instruction_set%29 MMX d'Intel]
*[http://en.wikipedia.org/wiki/3DNow%21 3DNow]
 
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)==
 
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:
 
[[Imatge:300px-ALU symbol.svg.png]]
 
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.