Manipulación de Datos Archivo

Anuncio
Manipulación de Datos
La unidad central de procesamiento (CPU). Codificación y
almacenamiento de programas. Lenguaje de máquina. Ejecución de
programas. Máquina ideal.
75.40 Algoritmos y programación I
Curso Prof. Servetto
1
La unidad central de procesamiento (CPU)
• La CPU consiste de tres partes:
• La unidad aritmético-lógica (UAL), que realiza operaciones con datos.
• La unidad de control (UC), que contiene circuitos para coordinar las
actividades de la máquina.
• La unidad de registros, que contiene celdas de almacenamiento de datos
(similares a las de la memoria principal), llamadas registros, que se usan para
almacenar temporalmente información dentro de la CPU.
Algunos registros son de propósito general, mientras que otros son de
propósito especial. Los de propósito general sirven para almacenar
temporalmente los datos de entrada y los resultados para operaciones de la
UAL.
75.40 Algoritmos y programación I
Curso Prof. Servetto
2
La unidad central de procesamiento (CPU)
• Para realizar una operación con datos almacenados en la memoria
principal, la UC debe transferirlos desde celdas de la memoria a
registros de propósito general, informar a la UAL cuáles registros
contienen los datos de entrada y cuál recibirá el resultado, y activar la
circuitería adecuada dentro de ella para que realice la operación.
• Para la transferencia de patrones de bits entre celdas de la memoria
principal y registros de la CPU, éstas están conectadas mediante una
colección de cables llamada bus, a través del cual la CPU extrae (lee)
datos proveyendo la dirección de una celda y la señal de lectura, y
almacena (escribe) datos proveyendo tanto un dato como la dirección
de una celda y la señal de escritura.
75.40 Algoritmos y programación I
Curso Prof. Servetto
3
CPU
Memoria Principal
Bus
Registros
75.40 Algoritmos y programación I
Curso Prof. Servetto
4
La unidad central de procesamiento (CPU)
Ejemplo
La suma de dos valores almacenados
en la memoria principal requiere
mucho más que la mera ejecución
de la operación de suma: los valores
deben transferirse desde la memoria
principal a registros de la CPU,
sumarse ubicando el resultado en un
registro, y luego transferirse el
resultado a una celda de memoria.
75.40 Algoritmos y programación I
Pasos del proceso
1. Tomar uno de los valores a sumar
de la memoria y ubicarlo en un
registro.
2. Tomar el otro valor a sumar de la
memoria y ubicarlo en otro registro.
3. Activar el circuito de suma con los
registros usados en 1 y 2 y designar
otro registro para mantener el
resultado.
4. Almacenar el resultado en
memoria.
Curso Prof. Servetto
5
Memoria Caché
• Los registros se usan para mantener datos inmediatamente requeridos por
un programa para ordenar una operación; la memoria principal se usa para
mantener datos que un programa requerirá en un futuro cercano; la
memoria secundaria se usa para mantener datos que un programa
probablemente no requiera en un futuro cercano.
• La memoria caché es una porción de memoria de alta velocidad (varios
cientos de KB) localizada dentro de la CPU donde ésta intenta mantener
copia de una parte de la memoria principal de interés actual.
• La transferencia de datos que normalmente debe hacerse entre registros y
la memoria principal se hace entre registros y la memoria caché, y los
cambios realizados en la memoria caché se transfieren colectivamente a la
memoria principal en momentos más oportunos. De esta forma la CPU
ejecuta sus operaciones más rápidamente, ya que no debe demorarse en la
comunicación con la memoria principal.
75.40 Algoritmos y programación I
Curso Prof. Servetto
6
Codificación y almacenamiento de programas
• En las primeras computadoras, los datos se almacenaban en la
memoria principal y los pasos que cada dispositivo de la CPU debía
ejecutar debían ir indicándose en un tablero de clavijas.
• La unidad de control de las computadoras actuales está diseñada para
extraer programas codificados en patrones de bits de la memoria
principal, decodificar las instrucciones, y ejecutarlas.
• El programa que una máquina ejecute puede cambiarse tan sólo
cambiando el contenido de la memoria principal.
• La colección de instrucciones que comprende el sistema de
codificación se denomina lenguaje de máquina. Una instrucción
expresada en este lenguaje se llama instrucción de máquina.
75.40 Algoritmos y programación I
Curso Prof. Servetto
7
Lenguaje de Máquina
Repertorio de instrucciones. Instrucciones aritmético-lógicas. Comunicación con
otros dispositivos.
75.40 Algoritmos y programación I
Curso Prof. Servetto
8
Repertorio de instrucciones
• La lista de instrucciones de máquina que una CPU puede decodificar y
ejecutar es bastante corta: con muy pocas tareas elementales se
puede conseguir toda la capacidad teórica de una computadora. Se
puede agregar instrucciones para abreviar tareas complejas, pero que
no incrementan las capacidades fundamentales de la máquina.
• Hay dos filosofías de diseño de CPU: las diseñadas con un conjunto
mínimo de instrucciones originan las RISC (reduced instruction set
computers –computadoras con conjunto reducido de instrucciones), y
las que incluyen un gran número de instrucciones complejas, dan
nombre a las CISC (complex instruction set computers –computadoras
con conjunto complejo de instrucciones).
75.40 Algoritmos y programación I
Curso Prof. Servetto
9
Repertorio de instrucciones
Arquitecturas RISC
Arquitecturas CISC
• Son eficientes (bajo consumo), rápidas y
menos costosas de producir.
• Las CISC lidian mejor con las crecientes
complejidades del software actual, pero
aunque sus costos de producción se han ido
reduciendo con el tiempo, consumen mucha
energía eléctrica.
• Ejemplos de esta arquitectura son los
procesadores PowerPC, desarrollados por una
alianza entre Apple, IBM y Motorola, y usados
en la Apple Macintosh; la compañía Advanced
Risc Machine (ARM) diseñó una arquitectura
RISC en la que se basan procesadores
(producidos por Qualcomm y Texas
Instrument) que se encuentran en
controladores de juegos, televisores digitales,
sistemas de navegación, computadoras de
automóviles, teléfonos celulares e
inteligentes, etc.
75.40 Algoritmos y programación I
• Un ejemplo de arquitectura CISC son los
procesadores Intel, o sus equivalentes de
AMD (Advanced Micro Devices, Inc.), que se
encuentran en casi todas las computadoras
de escritorio y laptop (Apple está
desarrollando actualmente computadoras
basadas en productos Intel).
Curso Prof. Servetto
10
Repertorio de instrucciones
• Independientemente de la arquitectura del procesador, las instrucciones de
máquina se pueden categorizar en tres grupos:
• De transferencia de datos: implican mover datos de un lugar a otro mediante un
proceso de copia o clonación de patrones. El pedido de llenar un registro de
propósito general con el contenido de una celda de memoria se denomina “cargar”
(load), y el inverso, “almacenar” (store). En este grupo se distinguen también los
comandos de comunicación con periféricos, llamados instrucciones de
entrada/salida (I/O –input/output).
• Aritmético-lógicas: implican pedir a la UC que requiera a la UAL operaciones
aritméticas básicas u operaciones booleanas con los contenidos de dos registros, o el
corrimiento (shift) o rotación (rotate) del contenido de un registro.
• De control: dirigen la ejecución de un programa en vez de manipular datos,
indicando saltos (jumps) condicionales o incondicionales a una instrucción distinta de
la siguiente del programa.
75.40 Algoritmos y programación I
Curso Prof. Servetto
11
Instrucciones aritmético-lógicas
Operaciones lógicas
• Combinan dos cadenas de bits para producir otra cadena como
resultado, todas del tamaño de registros de propósito general.
• Generalmente se utilizan para aislar o alterar parte de la cadena de
bits contenida en un registro, configurando un patrón en otro registro
denominado máscara. Por ejemplo:
• Para conocer o cambiar el signo de un número en complemento a 2
• Para conocer o cambiar el signo de un número en punto flotante
• Para aislar el exponente en exceso o la mantisa de un número en punto
flotante
75.40 Algoritmos y programación I
Curso Prof. Servetto
12
Instrucciones aritmético-lógicas
Operaciones lógicas - Ejemplos
• Conocer el signo de un número en complemento a 2 de 8 bits:
bbbbbbbb
AND 10000000
b0000000
00001010 (10)
10000000
00000000 (0  +)
11110110 (-10)
10000000
10000000 (128  -)
• Cambiar el signo de un número en complemento a 2 de 8 bits:
1. Se invierten los bits de la cadena
2. Se suma 1 a la cadena invertida
00001010 (10)
XOR 11111111
11110101 (-11)
+ 00000001 ( 1)
11110110 (-10)
75.40 Algoritmos y programación I
11110110 (-10)
11111111
00001001 ( 9)
00000001 ( 1)
00001010 (10)
Curso Prof. Servetto
13
Instrucciones aritmético-lógicas
Operaciones lógicas - Ejemplos
• Conocer el signo de un número en punto flotante de 8 bits:
bbbbbbbb
AND 10000000
b0000000
01101010 (2.5)
10000000
00000000 (0  +)
11101010 (-2.5)
10000000
10000000 (128  -)
• Cambiar el signo de un número en punto flotante de 8 bits:
01101010 ( 2.5)
XOR 10000000
11101010 (-2.5)
75.40 Algoritmos y programación I
11101010 (-2.5)
10000000
00001001 ( 2.5)
Curso Prof. Servetto
14
Instrucciones aritmético-lógicas
Operaciones lógicas - Ejemplos
• Aislar el exponente en exceso de 4 de un número en punto flotante
de 8 bits:
bbbbbbbb
AND 01110000
0bbb0000
01101010 (2.5)
10000000
01100000
• Aislar la mantisa de un número en punto flotante de 8 bits:
bbbbbbbb
AND 00001111
0000bbbb
75.40 Algoritmos y programación I
01101010 ( 2.5)
00001111
00001010
Curso Prof. Servetto
15
Instrucciones aritmético-lógicas
Operaciones de rotación y corrimiento de bits
• Mueven bits dentro de un registro de propósito general y se clasifican
según él sentido del movimiento (derecha o izquierda) y según el proceso
sea circular (rotación) o no (corrimiento).
• Generalmente se utilizan para alinear patrones o para efectuar
multiplicaciones o divisiones de números en complemento a 2 por
potencias de 2. Por ejemplo:
• Para justificar a derecha exponentes en exceso de números en punto flotante
• Para alinear una mantisa de un número en punto flotante según su exponente
• Para multiplicar o dividir un número en complemento a 2 por una potencia de 2
• Las operaciones de corrimiento a derecha pueden ser lógicas, si introducen
ceros a izquierda, o aritméticas (para números en complemento a 2), si
introducen bits iguales al del signo a izquierda.
75.40 Algoritmos y programación I
Curso Prof. Servetto
16
Instrucciones aritmético-lógicas
Ejemplo de rotación del patrón 65 (hexadecimal) un bit a la derecha
Patrón de bits original (65)16
Los bits se mueven una
posición a la derecha. El bit
menos significativo se cae
del extremo derecho y se
ubica en el hueco que
queda en el extremo
opuesto.
Patrón de bits final (B2)16
75.40 Algoritmos y programación I
Curso Prof. Servetto
17
Instrucciones aritmético-lógicas
Operaciones de rotación y corrimiento de bits - Ejemplos
• Para justificar a derecha exponentes en exceso de números en punto flotante de 8 bits, el
patrón 0bbb0000 (previamente aislado) se rota o corre a derecha 4 bits con igual
resultado: 00000bbb
• Para multiplicar un número en complemento a 2 de 8 bits por una potencia de 2, se corre
a izquierda el patrón tantos bits cuantos indique el exponente de la potencia:
00000111  1010 = 00011100 (7  4 = 28)
11111001  1010 = 11100100 (-7  4 = -28)
• Para dividir un número en complemento a 2 de 8 bits por una potencia de 2, se corre
aritméticamente a derecha el patrón tantos bits cuantos indique el exponente de la
potencia:
00010100 / 1010 = 00000101 (20 / 4 = 5)
11101100 / 1010 = 11111011 (-20 / 4 = -5)
11111001 / 101 = 11111100 (-7 / 2 = -3 )  es división entera
75.40 Algoritmos y programación I
Curso Prof. Servetto
18
Instrucciones aritmético-lógicas
Operaciones aritméticas
• Los procesadores con arquitectura RISC suelen incluir sólo a la suma,
ya que la resta se resuelve cambiando el signo del sustraendo y luego
sumando, la multiplicación se resuelve con sumas sucesivas, y la
división con restas; los procesadores CISC suelen incluir suma, resta,
multiplicación y división.
• Como las representaciones de los números varían según sean en
complemento a 2 o en punto flotante, los procesadores incluyen
operaciones aritméticas específicas para cada representación.
75.40 Algoritmos y programación I
Curso Prof. Servetto
19
Comunicación con otros dispositivos
Controladores
• La comunicación con otros dispositivos normalmente se maneja por
intermedio de otros aparatos denominados controladores, que
suelen ser placas de circuitos que se insertan en ranuras en la placa
madre (motherboard) y que se conectan vía cables al dispositivo
periférico dentro de la computadora o a un conector externo llamado
puerto.
• Los controladores suelen ser computadoras en sí, que se llaman
“dedicadas” o “esclavas”, con sus memorias principales y unidades
centrales de procesamiento, que ejecutan programas para dirigir las
actividades del dispositivo que controlan.
75.40 Algoritmos y programación I
Curso Prof. Servetto
20
Comunicación con otros
dispositivos
Conexión de controladores con la
computadora
Los controladores se comunican con la CPU de
la computadora mediante conexiones al bus que
conecta a la CPU con la memoria principal.
La CPU se comunica con los controladores
conectados al bus de la misma manera que se
comunica con la memoria principal, con
instrucciones equivalentes a las de “cargar” y
“almacenar”.
En las máquinas RISC, cada
controlador responde a referencias a
un único conjunto de direcciones
reservadas para sí, en un mecanismo
que se denomina entrada/salida
mapeada en memoria y que emplea
las mismas instrucciones para cargar
y escribir registros desde o en celdas
de memoria. Las máquinas CISC
incluyen instrucciones específicas de
entrada/salida.
75.40 Algoritmos y programación I
Entrada/salida mapeada en memoria:
Curso Prof. Servetto
21
Comunicación con otros dispositivos
Interfaces
• Actualmente existen estándares como el universal serial bus (USB) y el FireWire,
para los cuales un solo controlador puede manejar diversos dispositivos
compatibles con estas interfaces. Por ejemplo ratones, teclados, impresoras,
escáneres, dispositivos portables de almacenamiento masivo, cámaras digitales y
teléfonos inteligentes suelen ser compatibles con puertos USB, y grabadoras de
video y dispositivos de almacenamiento masivo en línea suelen ser compatibles
con puertos FireWire (soportan tasas de transferencia más rápidas).
• Hay controladores que además de comunicarse con la CPU pueden comunicarse
con la memoria principal directamente cuando la CPU no usa el bus (durante
nanosegundos), y que se conocen como de acceso directo a memoria o DMA
(por direct memory access); por ejemplo, los controladores de sistemas de
almacenamiento magnético pueden tomar el contenido a escribir en un sector
directamente de la memoria principal o depositar en ella el contenido de la
lectura de un sector.
75.40 Algoritmos y programación I
Curso Prof. Servetto
22
Comunicación con otros dispositivos
Sincronización
• La transferencia de datos entre la computadora y los dispositivos
periféricos, aún aquellos que son sólo de entrada o sólo de salida, es
en realidad bidireccional, para intercambiar información sobre el
estado del dispositivo y coordinar sus actividades. Este diálogo
bidireccional se conoce como saludo (handshaking).
• El saludo a menudo involucra una palabra de estado (status word),
que es un patrón de bits generado por el dispositivo periférico para
reflejar su estado. Por ejemplo, en el caso de una impresora, la
palabra de estado puede reservar bits específicos para indicar si la
impresora está en línea, si no tiene papel, si tiene papel atascado y si
está lista para recibir datos.
75.40 Algoritmos y programación I
Curso Prof. Servetto
23
Comunicación con otros dispositivos
Formas de comunicación
• La transferencia de datos entre dispositivos de una computadora puede
realizarse sobre dos tipos de vías: paralelas y seriales.
• En la comunicación paralela se transfieren varias señales al mismo tiempo, cada una
en una línea separada; por ejemplo, el bus interno, que transfiere simultáneamente
direcciones, datos y señales de control.
• La comunicación serial se basa en la transferencia de señales una después de otra
sobre una línea simple; por ejemplo, USB y FireWire ofrecen transferencia de datos a
alta velocidad en distancias cortas, y para distancias un poco más largas se usan
conexiones Ethernet, bien por alambre o por ondas de radio. Para comunicaciones
rápidas de larga distancia se emplean líneas telefónicas con un servicio conocido
como DSL (digital suscriber line), que utiliza frecuencias sobre el rango audible para
transmitir datos digitalizados y deja el espectro de baja frecuencia para la
comunicación por voz, también la infraestructura de televisión por cable con
cablemódem, o enlaces satelitales vía transmisión de radio de alta frecuencia.
75.40 Algoritmos y programación I
Curso Prof. Servetto
24
Comunicación con otros dispositivos
Formas de comunicación
• Las comunicaciones seriales de larga distancia emplean una técnica
de multiplexación, que codifica los datos de manera que una vía
simple de comunicación sirve como si fuera una vía múltiple: los
modem (acrónimo de modulador-demodulador) convierten patrones
de bits en tonos que transmiten serialmente.
• La velocidad de transferencia de datos entre componentes de una
computadora se mide en bits por segundo (bps). USB y FireWire
proveen tasas de transferencia de varios cientos de Mbps, lo cual es
suficiente para la mayoría de las aplicaciones de multimedia. Los
enlaces DSL, por cable o satelitales ofrecen velocidades del orden de
los 54 Mbps.
75.40 Algoritmos y programación I
Curso Prof. Servetto
25
Ejecución de Programas
Registros de propósito especial. Ciclo de máquina.
75.40 Algoritmos y programación I
Curso Prof. Servetto
26
Registros de propósito especial
• Para que una computadora pueda seguir un programa almacenado en
su memoria, la CPU necesita cargar instrucciones, decodificarlas y
obedecerlas. El orden en que la CPU carga las instrucciones es el
mismo en el que están almacenadas en la memoria, a menos que el
mismo se vea alterado por una instrucción de salto.
• Para almacenar instrucciones, la CPU tiene un registro de propósito
especial llamado registro de instrucción, y para seguir el orden en
que ejecuta las instrucciones, otro llamado contador de programa,
que contiene la dirección de la próxima instrucción a ejecutarse.
75.40 Algoritmos y programación I
Curso Prof. Servetto
27
Ciclo de máquina
La CPU realiza su trabajo repitiendo continuamente un algoritmo de
tres pasos denominado ciclo de máquina, consistente en
1. Traer una instrucción (fetch): carga la instrucción almacenada en la
dirección que indica el contador de programa en el registro de instrucción, e
incrementa el contador de programa de manera que indique la dirección de
la siguiente instrucción.
2. Decodificar la instrucción: descompone la instrucción en los operandos que
implique su código de identificación.
3. Ejecutar la instrucción: activa los circuitos adecuados para realizar la tarea
requerida. Si la instrucción es de salto, carga en el contador de programa la
dirección de la próxima instrucción.
75.40 Algoritmos y programación I
Curso Prof. Servetto
28
Máquina Ideal
Arquitectura y lenguaje de máquina
75.40 Algoritmos y programación I
Curso Prof. Servetto
29
Arquitectura (RISC)
• Memoria principal con 256 celdas de 1 byte con direcciones representadas
en patrones hexadecimales desde el 00 al FF.
• CPU con 16 registros de propósito general de 1 byte, numerados de 0 a F
con patrones hexadecimales.
• Contador de programa de 1 byte y registro de instrucción de 2 bytes.
• Valores enteros representados en complemento a 2 en 8 bits, y
fraccionarios representados en punto flotante en 8 bits.
• Entrada/salida en correspondencia con la memoria:
• Puerto de entrada en celdas FC (control: 00 no hay dato, 01 dato disponible) y FD
(datos)
• Puerto de salida en celdas FE (control: 00 dato no tomado, 01 dato tomado) y FF
(datos)
75.40 Algoritmos y programación I
Curso Prof. Servetto
30
Lenguaje de máquina
Código Operandos Descripción
1
RXY
Cargar en el registro R el contenido de la celda con dirección XY
2
RXY
Cargar en el registro R el patrón XY
3
RXY
Almacenar el contenido del registro R en la celda con dirección XY
4
0RS
Copiar el contenido del registro R en el registro S
5
RST
Sumar en complemento a 2 los contenidos de los registros S y T y dejar el resultado en R
6
RST
Sumar en punto flotante los contenidos de los registros S y T y dejar el resultado en R
7
RST
Disyunción (OR) de los contenidos de los registros S y T con resultado en registro R
8
RST
Conjunción (AND) de los contenidos de los registros S y T con resultado en registro R
9
RST
Disyunción exc. (XOR) de los contenidos de los registros S y T con resultado en registro R
A
R0X
Rotar a derecha el contenido del registro R, X veces
B
RXY
Saltar a la instrucción con dirección XY si el contenido del registro R es igual al del reg. 0
C
000
Parar la ejecución
75.40 Algoritmos y programación I
Curso Prof. Servetto
31
Descargar