Story Transcript
Arquitectura de Computadoras
Programación de Computadores I 1.
Conceptos básicos y definiciones. La informática es la adquisición, tratamiento y procesamiento automáticos de la información.
1.1. Introducción. 1.1.1.
Introducción histórica.
Pascal en 1642 y Leibnitz en 1671 ya se plantearon la fabricación de máquinas capaces de realizar las operaciones más comunes: suma, resta, multiplicación y división. Pero hasta 1938, año en el que Shanon propuso del álgebra de Boole como modelo para construir máquinas de cálculo, no se dio el primer paso teórico. En 1944, H. Aiken dio el primer paso práctico, al construir el primer computador digital moderno, basándose en el álgebra de Boole. Lo bautizó Mark I. El siguiente modelo fue el ENIAC, construido en la Universidad de Pennsylvania. Este computador era completamente electrónico, estaba constituido por tubos y válvulas de vacío, medía unos 140 m2 y pesaba unas 140 toneladas. Von Neumann en 1952 construyó el EDVAC, ya compuesto por Unidades Aritmético-Lógicas (ALU), dispositivos de Entrada-Salida (E/S), Memoria y Unidad de Control (CU). Pero la verdadera revolución se produjo en los Laboratorios Bell (actualmente AT&T) en 1947 con la invención del transistor. Es un dispositivo de tres terminales en el que, dependiendo de la tensión, se abre o se cierra el interruptor. Una combinación de transistores forma un circuito integrado.
Un ejemplo de circuito integrado es el que se puede ver
a en la figura, en el que, dependiendo de la tensión, se abren o cierran los diferentes interruptores gracias a la puerta AND.
b Y a 0 0 1 1
b 0 1 0 1
Y 0 0 0 1
Y=a·b a
1
b
1.2. Información analógica y digital. _ Magnitud continua es aquella que toma todos los valores dentro del conjunto de los números reales. _ Magnitud discreta es aquella, de naturaleza discontinua, que sólo toma valores de un conjunto discreto, el conjunto de los números naturales. _ Información analógica es aquella que tiene naturaleza continua. _ Información digital es aquella que tiene naturaleza discreta. Los computadores trabajan con información digital. Características de la información digital. • • • •
El procesamiento y transmisión de datos son más fiables (se puede determinar si están mal) y eficientes (menos palabras para expresar más cosas). El almacenamiento es más compacto (menos espacio para más información). Permite información simbólica (no dependiente sólo de números). Es fácilmente utilizable en la tecnología que poseemos.
¿Cómo discretizar la información?
20
20
15
15
10
10
5 5
0 0
Asignar a un rango de valores un conjunto discreto de valores se conoce con el nombre de discretizar. Pero tiene la principal desventaja de la pérdida de información por el efecto de redondeo. 1.3. Codificación de la información. _ Codificar es representar algo mediante elementos de un conjunto, cualquiera que sea ese conjunto. Ej. Coche → Matrícula; Nosotros → D.N.I. ¿Por qué se codifica? Se consigue una representación más compacta del objeto. ¿Cómo se codifica en un computador? En los computadores digitales la información se codifica en el sistema binario, en dos posibles valores: 0 y 1. La unidad de información recibe el nombre de BIT (Binary digIT). Estos BITs se agrupan en grupos de ocho para formar los BYTES. 1 1 1 1
Kilobyte Megabyte Gigabyte Terabyte
1 1 1 1
KB MB GB TB
210 220 230 240
Bytes Bytes Bytes Bytes
2
1.024 Bytes 1.048.576 Bytes 1.073.741.824 Bytes
1.4. Componentes principales de un computador digital.
Memoria Principal
Pantalla Ratón E/S
Registros Internos ALU
Teclado
CU
Scanner
CPU
Memoria Externa Entrada-Salida (E/S). _ Entrada. Entra información desde el mundo exterior al computador. Teclado. Ratón. Scanner. _ Salida. Sale información del computador. Impresora. Pantalla. Memoria. Unidad donde se almacenan datos o instrucciones, es decir, información. Tipos:
_ Memoria principal. _ Memoria externa o masiva (auxiliar).
Memoria Principal. _ Memoria muy rápida (µs). _ Tamaño medio. Tipos:
_ R.A.M. (Random Access Memory). _ R.O.M. (Read Only Memory).
Memoria R.A.M. _ Lectura y escritura. _ Volátil. Memoria R.O.M. _ Sólo lectura. _ No volátil. Memoria Externa o Masiva (auxiliar). _ Memorias muy lentas. _ Gran capacidad. Tipos:
_ Discos Duros. _ CD-ROM. _ Cintas.
3
¿Cómo funciona la memoria? La memoria auxiliar es aquella que utilizamos para guardar información que queremos conservar. Una vez iniciada la sesión, pasamos la información de la memoria auxiliar a la memoria principal para poder trabajar con ella y, una vez finalizada la operación, grabamos los resultados de nuevo en la memoria auxiliar con el fin de conservarlos.
Memoria Principal
Memoria Auxiliar
Resultados
¿Cómo es la memoria? Es una enorme tabla compuesta por BITs en la que cada fila constituye una Palabra de Memoria (W). Estas filas son identificadas por su posición y dirección en la tabla.
¿Qué tipo de operaciones realizamos con la memoria?
1 2 3 4 5 6 7 8
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
_ Lectura. Hay que decir al computador la dirección donde queremos leer y lo que queremos leer.
L/E datos
_ Escritura. Hay que decir al computador que
Cables (BUS)
queremos escribir, lo que queremos escribir y dónde queremos escribirlo.
Memoria Principal
dirección
Cables (BUS)
A.L.U. (Arithmetic-Logical Unit). Es un circuito eléctrico encargado de realizar las operaciones aritméticas (suma, resta, multiplicación y división) y lógicas (comparación de dos números,...). Es el único componente del computador que realiza operaciones. C.U. (Control Unity). Es la parte del computador encargada de gestionar las acciones de los demás elementos. Registros. Elementos de memoria de muy pequeño tamaño, muy pequeña capacidad y extremadamente rápidos. Son el lugar donde se almacenan los resultados de la ALU. Son volátiles (se pierden al reiniciar). C.P.U. (Central Processing Unit). ALU + CU + Registro = CPU Reloj. Sincroniza a todos los componentes del computador. Puede estar incluido en la CU o simplemente estar separado en la CPU. Se define como una señal eléctrica periódica cuadrada. Es muy importante a la hora de medir la velocidad de un computador. ν = 1/T (cicloss-1) o (Hz)
6 5 4 3 2 1 0
T Periodo
4
Longitud de Palabra. Es el número de BITs que se transmiten entre las diferentes unidades del computador simultáneamente. Se puede comparar al número de cables que existan. 1.5. Clasificación de los computadores. - Según la representación interna de los datos. _ Analógicos. _ Digitales. _ Híbridos. - Según su uso. _ Uso general. Ejecutan cualquier tipo de aplicación. PCs. _ Uso específico. Pensados para realizar una sola tarea. Videojuegos. - Empotrados o embebidos. Computadores de uso específico insertados en otros. - Según su potencia de cálculo. (MFLOP→ →Millón de instrucciones en punto flotante, operaciones con números reales) _ Supercomputadores. Realizan cálculos científicos intensivos. Formados por la unión de varias CPU’s. INCARed (9000 Pentium II 200 MHz). 1 TFLOP. _ Mainframes. Grandes computadores. Para uso general. _ Minicomputadores. Mainframes a escala reducida. _ Estaciones de Trabajo. Computadores potentes de gama baja. _ PC. 1 MFLOP. 1.6. Instrucciones, programas y lenguajes. _ Instrucción es una orden de operación o tratamiento que se da al computador. _ Programa es un conjunto ordenado de instrucciones que dice al computador lo que tiene que hacer para realizar una cierta tarea. _ Lenguaje de programación es el conjunto de instrucciones y reglas para construir programas. Tipos de lenguaje. _ Lenguaje máquina. _ Lenguaje ensamblador. _ Lenguaje de programación. Lenguaje máquina. Sólo lo entiende el ordenador. Está formado por código binario, 0s y 1s. _ Desventajas. 0101010 Depende del modelo del computador. Muy laborioso de programar. Muy poco legible. instrucción Baja portabilidad. El programador debe realizar la asignación de memoria. _ Ventajas. Rapidez.
5
10101
01010
operandos
Lenguaje ensamblador. Tiene un mayor nivel de abstracción que el lenguaje máquina ya que no es necesario escribir mediante 0s y 1s. Las instrucciones se representan mediante un código mnemotécnico. ADD
2, 5
instrucción
D0
asignación de la memoria
operandos
_ Ventajas. Mayor legibilidad que el lenguaje máquina. Algo más de portabilidad que el lenguaje máquina. Se pueden utilizar direcciones simbólicas. Se pueden utilizar nombres simbólicos para las variables. ADD
Op1, Op2, Op3 Pueden ser valores explícitos (3) o la dirección de la memoria donde está contenido el valor 3.
Programa ensamblador. Es el programa que se encarga de traducir el lenguaje ensamblador a lenguaje máquina. ADD
Op1, Op2, Op3
1010
010 010 0011
Ensamblador
Lenguaje de alto nivel. Es el lenguaje con mayor nivel de abstracción. Es el que más se parece a nuestra forma de expresarnos. Tiene una sintaxis parecida a la nuestra y también posee una semántica muy similar. Fortram, C, Pascal, C++, BASIC, etc. _ Ventajas. Gran portabilidad. Código compacto. Mayor legibilidad. Traductores. _ Compiladores. Traducen el programa inicial o fuente como un todo, es decir, todo de una sola vez, a programa final o máquina. _ Intérpretes. Leen cada instrucción del lenguaje de alto nivel, las interpretan y las ejecutan. Lenguaje de alto nivel
traductor Lenguaje máquina 1.7. Hardware y Software. _ Hardware. Es el conjunto de circuitos, cables y dispositivos electrónicos en general que constituyen un computador. _ Software. Es el conjunto de programas ejecutables por un computador.
6
1.8. Funcionamiento de los computadores. El lenguaje máquina ha de estar cargado en memoria. Esta tarea la realiza un programa llamado cargador. _ Secuencia de órdenes. -
El programa dice al computador dónde empezar a trabajar. El microprocesador lleva lo que hay en la posición i de la memoria a la CU. La CU interpreta el código de instrucción. El microprocesador ejecuta la instrucción. Se actualiza el valor del contador de programa (i→i+1).
Un tipo de registro llamado contador de programa guarda la dirección de la memoria donde se encuentra la siguiente instrucción del programa. Ejemplo. Sumando 1 Sumando 2 Resultado Inicio
1 2 3 4 5 6 7
DC.W 4 DC.W 5 DS.L 1 MOVE.W Sumando 1, D0 ADD.W Sumando 2, D0 MOVE.W D0, Resultado STOP #$ 2700
4 5 MOVE.W 1, D0 ADD.W 2, D0 MOVE.W D0, 3 STOP #$2700
D0 es uno de los Registros de Propósito General (GPR) de la CPU. _Secuencia del ejemplo. -
El microprocesador lleva la instrucción que hay en m (4) a la CU. La CU interpreta la instrucción. La CU ejecuta la instrucción. El contador de programa pasa a valer i+1.
1.9. Utilización de los computadores. _ Pasos a seguir para usar un computador. 1. 2. 3. 4. 5.
Planteamiento del problema. Definir lo que vamos a hacer, los datos del problema y las operaciones que se harán sobre ellos. DEFINIR EL ALGORITMO. Análisis. Descomponer el problema en las diferentes fases realizables por el computador. Implementación o programación. Escribir el algoritmo en lenguaje de alto nivel. Prueba y depuración. Comprobar que el programa funciona y si no funciona, depurar el error. Explotación. Hacer uso del programa.
_ Analogías con las fases del programador. Fase del Computador Fase Análisis Fase Diseño Fase Implementación Fase Prueba Fase Mantenimiento
Fase del Programador Fase de Diseño del Algoritmo Fase de Análisis Fase de Programación Fase de Prueba del programa Fase de Explotación
7
1.10.
Aplicaciones de los computadores. _ Características de los problemas solubles con los computadores. -
Gran cantidad de datos a tratar de los cuales muchos son comunes. El proceso debe ser automatizable. Necesidad de precisión y rapidez en los cálculos. Necesidad de cálculos complejos.
_ Tipos de aplicaciones. -
-
2.
Procesamiento administrativo. (Bancos). Ciencias. _ Resolución de ecuaciones. _ Análisis estadístico. _ Simulación de modelos. Ingeniería. Ayuda al desarrollo. _ CAD (Computer Aided Design). _ CAM (Computer Aided Manufacturing). _ CAE (Computer Aided Engineering).
Aritmética computacional.
2.1. Información numérica, alfabética y especial. Al computador, toda la información que le introducimos, se la expresamos mediante caracteres. Estos caracteres son símbolos de un alfabeto cualquiera. _ Categorías de caracteres. Numéricos. {0,1,2,3,4,5,6,7,8,9}. Alfabéticos.{A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g ,h,i,j,k,l,m,n,ñ,o,p,q,r,s,t,u,v,w,x,y,z}. Especiales. {º,ª,\,!,|,”,@,,#,$,%,&,¬,/,(,),=,?,’,¡,¿,[,`,^,+,*,],´,¨,{,ç,},,,;,.,:,,_,}. Control. Representan órdenes de control. No tienen representación.{fin de línea...}. Gráficos. {,¤,¶,§,...}. Proceso de codificación. Consiste en traducir todo al sistema binario, es decir, a 0s y 1s. 2.2. Representación numérica de la información. Sistemas de numeración en base b. Son sistemas que emplean un alfabeto formado por b símbolos o cifras para representar los números. Todo número se expresa como un conjunto de símbolos, cada uno de los cuales contribuye con un valor al valor final. Ese valor depende del símbolo y de su posición dentro de la cadena que representa al número. Sistema de numeración posicional. N = S1 b3 + S2 b2 + Sb b1 + S2 b0
S1 S2 Sb S2
Sistema decimal. b = 10. {0,1,2,3,4,5,6,7,8,9}. 323 = 3102 + 2101 + 3100
8
Sistema octal. b = 8. {0,1,2,3,4,5,6,7}. Sistema hexadecimal. b = 16. {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. Ejemplo. 413|10 = 4102 + 1101 + 3100 = 413|10 413|8 = 482 + 181 + 380 = 267|10 413|16 = 4162 + 1161 + 3160 = 1043|10 S23 S102 S31 S40 S2-1 S1-2 S0-3 N = S2 b3 + S10 b2 + S2 b1 + S4 b0 + S2 b-1 + S1 b-2 + S0 b-3 215,13|10 = 2102 + 1101 + 5100 + 110-1 + 310-2 = 215,13|10 215,13|8 = 282 + 181 + 580 + 18-1 + 38-2 = 141,171875|10 215,13|16 = 1162 + 1161 + 5160 + 116-1 + 316-2 = 533,0742188 Sistema binario. b = 2. {0,1}. 10101|2 = 124 + 023 + 122 + 021 + 120 = 21|10 101.01|2 = 122 + 021 + 120 + 02-1 + 12-1 = 5,25|10 Números básicos en sistema binario. 0 1 2 3 4
000 001 010 011 100
5 6 7 8 9
101 110 111 1000 1001
_ Traducir o convertir de un sistema de representación a otro. _ Sistema Decimal → Base b. -
Dividimos el número entero entre b tantas veces como sea necesario hasta que el cociente de la división sea menor que b. El número en base b se escribiría: cn rn rn-
-
Multiplicamos la parte decimal por la base b tantas veces como creamos oportuno. La parte decimal se escribiría: ‘d1 d2 d3.
1.
Ej.
15|10 → b = 2 15 2 1 7 1
2 3 1
1111|2 = 15|10 2 1
12|10 → b =2 12 0
2 6 0
2 3 1
1100|2 = 12|10 2 1
0,50|10 → b = 2 0,50 x 2 1,00 x 2
0,50|10 = 0.1|2
0,00 x 2
9
0,00 26,1875|10 → b = 2
26,1875|10 = 11010.0011|2 0,1875 x 2
26 2 0 13 1
0,3750 x 2 2 6 0
2 3 2 1 1
0,7500 x
2
1,5000 x 2 1,0000 _ Sistema Octal → Sistema Binario. 115|8 = 001001101|2
001 001
256|8 = 010101110|2
010
101
101
256|8 = 174|10
110
010101110|2 = 174|10
_ Sistema Hexadecimal → Sistema Binario. 0101
573|16 = 010101110011|2 0111
1010
0011
A0B|16 = 101000001011|2 0000
1011
_ Sistema Binario → Sistema Hexadecimal. 000101010110|2 = 156|16
010111111011|2 = 5FB|16
_ Aritmética binaria simple. _ Suma. A 0 0 1 1
B 0 1 0 1
A+B 0 1 1 0 (acarreo)
11 +11 100
1101 +1001 10110
10
001 +001 010
_ Resta. A 0 0 1 1
B 0 1 0 1
110 - 011 011
A-B 0 1 (adeudo) 1 0
1101010 - 010111 1010111
_ Multiplicación.
1001 - 0110 0011
_ Multiplicación por 2|10.
1101010 x 11 1101010 1101010 100111110
11011101 x 1101 11011101 00000000 11011101 11011101 101100111001
1010 x 10 0000 1010 10100
1111 x 10 0000 1111 11110
_ División. A 0 0 1 1
B 0 1 0 1
1101 101 0011
A/B Ind. 0 ∞ 1
101 10
13 3
5 2
0011|2 = 120 + 121 + 022 + 023 = 3|10 101|2 = 120 + 021 + 122 = 5|10 10|2 = 2|10
110110110 1010 001110 01010 010011 01010 010010 01010 001000
1010 101011
_ Representación en Complemento a la base menos 1. Dado un número, su complemento a la base menos 1 es el resultado de restar cada uno de los dígitos del número a la base menos 1. Ej.
Complemento a 9
321|10
Complemento a 1
999 – 321 = 678
0110|2
1111 – 0110 =
1001 En base binaria el complemento a la 1 se obtiene sustituyendo los 0s por 1s y los 1s por 0s. Ej. 1011|2 Complemento a 1
1111 – 1011 = 0100
¿Por qué es interesante? Podemos expresar una resta como la suma del minuendo más el complemento a la base menos 1 del sustraendo y las cifras que se arrastran de las sumas se descartan y se las sumamos al resultado obtenido. Ej. 58 23 35
58 76 134 1 35
C9 (23) = 76
5232 1248 3984
11
5232 3751 13983 1 3984
C9 (1248) = 3751
Representación en complemento a la base. El complemento a la base de un número N se obtiene de restar cada uno de los dígitos del número N a la base menos 1 y a continuación sumar 1 al resultado. Ej. C10 (25) = 99 – 25 + 1 = 75
C10 (525) = 999 – 525 + 1 = 475
C2 (0101) = 1111 – 0101 + 1 = 1011 ¿Para qué sirve el complemento a la base? Sirve para convertir restas en sumas. Ej. 27 – 13 = 14
C10(13) = 99 –13 + 1 = 87
87 + 27 = 114
2.3. Codificaciones estándar (binario, BCD, EBDC, ASCII). Es la codificación de los caracteres alfanuméricos y especiales mediante equivalencias en BITs. Codificar no es otra cosa que traducir los caracteres a una cadena de BITs. Los códigos de Entrada/Salida (E/S) son códigos que asocian a cada carácter una determinada combinación de BITs. ¿Cuántos BITs hacen falta para codificar m caracteres? n BITs 1 2 3 ... N
m caracteres 2 4 8 ... 2n
Siempre se cumple la relación: n ≥ log2 (m)
Ej.
n ≥ log2 (10);
{0,1,2,3,4,5,6,7,8,9} m = 10
log2 (10) = 3,32
n = 4 BITs; (desperdiciaré 6 BITs) ¿Cuáles se usan y cuáles no? Depende del programador. Un programador puede utilizar un criterio cualquiera y otro programador puede estar usando uno totalmente diferente. Aún así hay convenios y standard. CODIFICACIÓN BCD. Utiliza 6 BITs y en ocasiones otro BIT extra, sólo para detección de errores. Este tipo de codificación puede codificar un máximo de 64 caracteres (26). Cuando representamos un número, los BITs de zona marcan 00 y los de posición expresan el número en código binario. BIT de
BITs de zona
BITs de posición
12
CODIFICACIÓN EBCDIC. Codificación similar a la BCD pero que utiliza 8 BITs.
BITs de zona
Si los BITs de zona son 00, el código no está definido para ningún carácter, si son 01, son caracteres especiales, si son 10, son letras minúsculas y si son 11, son letras mayúsculas y números.
BITs de posición
CODIFICACIÓN ASCII. Código que utiliza 7 BITs más uno extra para detección de errores. Es el de uso más extendido.
BIT de
BITs de zona
BITs de posición
2.4. Detección simple de errores. Su misión es detectar errores en la fase de transmisión de información. Por ejemplo, el cambio de un valor por otro por error. Eficiencia de un código (ττ). La eficiencia de un código es el cociente entre el número de caracteres que se codifican y el número de combinaciones posibles. n BITs → m posible caracteres → 2n combinaciones posibles τ = m / 2n Ej.
BCD 7 BITs → 95 caracteres τ = 95 / 128 = 0,742
74,2 %
ASCII 7 BITs + 1 BIT de error → 95 caracteres τ = 95 / 256 = 0,371
37,1 %
Ej. Codificar {A,B,C,D,E,F,G,H}
A B C D E F G H
Código I de 3 BITs 000 001 010 011 100 101 110 111
Código II de 4 BITs 0000 0001 0010 0011 0100 0101 0110 0111
13
τ1 = 8 / 8 = 1
τ2 = 8 / 16 = 0,5
100 %
50 %
Redundancia de un código (R = [1 - τ] 100). Es otra medida del mismo concepto. Es el porcentaje para verificar la eficiencia de un código. El Código II tiene mayor redundancia que el Código I. Ej. Transmitir la palabra FAC. Con el Código I BAC
101000010
Con el Código II
001000010
*AC
010100000010 110100000010
En el Código I no sabremos que ha habido un error porque el grupo 001 tiene asignado la B y es normal. En el Código II el grupo 1101 no tiene asignado ningún símbolo por lo que podremos saber que ha habido un error en la transmisión de alguno de los cuatro BITs. Criterio de paridad (de detección de errores). _ Paridad par. Dada una cadena de BITs se añade uno más tal que la suma de BITs sea par. Ej.
11010010 → A
_ Paridad impar. Dada una cadena de BITs se añade uno más tal que la suma de BITs sea impar. Ej.
01010010 → A
Así si hay un cambio de BIT, la paridad variará y se sabrá que hay un error. 2.5. Representación interna de la información. _ Representación interna de los números enteros. El BIT n-1 es el BIT más significativo (MSB) y se pone bk n-1 .................... 7 6 5 4 3 2 1 0 a)
El BIT 0 es el BIT menos significativo (LSB) y se pone b0
Números enteros sin signo. Se representa el número en binario natural.
b) Números enteros con signo. b.1.) Mediante el método de signo y mantisa. n-1 representa el signo del número entero (0 si es positivo y 1 si es negativo). n-1 ... 0 representan la cantidad que expresa el número. Ej. n = 4 BITs 7|10 = 111|2
7
0
1
1
1
-7
1
1
1
1
14
b.2.) Mediante complemento al 1. 0 si es positivo (binario natural) MSB 1 si es negativo (complemento al 1) Ej. 4 -7
MSB 0 1
1
0
0
0
0
0
C1 de 7|10 es 000|2 ya que 7|10 = 111|2 y C1 (111) = 000
b.3.) Mediante complemento a 2. Si es positivo (binario natural) Si es negativo, como C2 del valor absoluto del número positivo Ej. 4
0100
-4
- 0100
C2 → C1 + 1
1011 + 1 1100 Ej. 5
0101
-5
-0101 1010 + 1 1011
_ Algunos números reales en binario de 4 BITs. 7 6 5 4 3 2 1 0
0111 0110 0101 0100 0011 0010 0001 0000
-7 -6 -5 -4 -3 -2 -1 -0
1000 1001 1010 1011 1100 1101 1110 1111
_ Rango si j BITs. [-(2j-1-1),(2j-1-1)] [-7,7] _ Rango de j BITs. [-2j-1,(2j-1-1)]
[-8,7]
_ Representación de números reales. Trabajando con potencias de 10. Ej. 132 N = M BE mantisa
13,2 101 1,32 102 0,132 103
Notación científica o de coma flotante
exponente base
15
NORMALIZACIÓN IEEE 754. N = M BE Para representar el signo (s) necesitamos 1 BIT. Para representar la mantisa (M) necesitamos nm BITs. Para representar el exponente (E) necesitamos ne BITs. 1.
E
M
La base siempre es 2. s = 1 BIT
2.
S
ne = 8 BITs
nm = 23 BITs
El campo de signo es un solo BIT con valor 0 ó 1. Si es 0 el número es positivo. Si es 1 el número es negativo.
3.
El campo de exponente se almacena de la siguiente manera. e = E + S sesgo exp. real Ej.
ne = 8 BITs → S = 127 E 0 2 -1 -126
4.
S = 2ne-1-1
e 127 129 126 1
La mantisa se representa de la siguiente manera. Se ajusta el exponente de forma que el 1 más significativo de la mantisa se encuentra en la posición de las unidades. De este modo la mantisa está normalizada. Como la mantisa siempre empieza por 1 sólo se pone lo que queda a la derecha de la coma ya que se sobreentiende el 1. Ej. 1010.1010 211 1101.001|2 = 13,125|10 1.0101010 2110 1.101001 211 = 13,125|10 Con este sistema ahorramos memoria a la hora de representar números. Ej. 1 10000001 010...0 signo = 1 → negativo exponente = 10000001|2 = 129|10 → E = 129-127 = 2 mantisa = 010...0|2 → 1.010...0|2 = 1,25|10 - 1,25 22 = -5 1 01111100 011010...0 signo = 1 → negativo exponente = 124|10 → E = 124-127 = -3 mantisa = 011010...0|2 = 1.011010...0|2 = 1,40625 - 1,40625 2-3
16
5.
Casos especiales. a.
• •
Cuando el exponente es todo 1s.
si la mantisa es todo 0s significa ∞. si la mantisa es distinta de 0 significa NaN (Not a Number). b.
Cuando el exponente es todo 0s.
• •
si la mantisa es todo 0s significa 0. si la mantisa es distinta de 0 significa que el número está de forma no normalizada, delante de la coma hay un cero en vez de un 1. Es usado para números muy pequeños.
6.
Redondeo. Cuando hay que redondear, nos aproximamos al más cercano y en caso de cinco, nos aproximamos al par. Ej.
7.
0,4875 → 0,49
0,485 → 0,48
Rango de valores. El número más grande posible de representar será la mantisa máxima por 2 elevado al exponente máximo. 8 BITs del exponente mantisa máxima = 2-2-(nm+1) 23 BITs de la mantisa E máximo = 2ne-2 (2-2-24)(28-2) El número más pequeño posible de representar será la mantisa más pequeña por 2 elevado al exponente mínimo. mantisa mínima = 2-nm E mínimo = -(2ne-2) overflow overflow 0 -b -a a b
17
3.
Estructura y funcionamiento de los computadores.
3.1. Arquitectura de Von Neumann. La arquitectura nos define como está constituido un computador, sus componentes y la conexión que existe entre ellos. Con la arquitectura de Von Neumann todo computador consta de: _ Una Unidad Central de Proceso (CPU). -
Unidad de Control (CU). Unidad que controla y gestiona el funcionamiento del computador. Unidad Aritmético-Lógica (ALU). Unidad en la que se realizan las operaciones aritméticas (+,-,,/) y lógicas (comparaciones). Registros. Componentes que contienen la información temporal de control sobre la cual la ALU realiza sus operaciones.
_ Memoria. -
Principal. Random Access Memory (RAM). Secundaria o masiva. Almacenamiento masivo.
_ BUS. Elemento que conecta los elementos del computador entre sí. Son los cables por los que viajan los datos (BITs) de un componente a otro. Tipos de Registros. _ Registros de Propósito General (GPR). Aquellos que almacenan los operandos de la CPU. _ Registro de Estado (SR). Son varias posiciones de la memoria que toman el valor 0 ó 1 dependiendo de la última operación que llevó a cabo la ALU.
O
Z
S
C
C → BIT de Acarreo (Carry). Indica si la última operación de la ALU fue un acarreo. Si lo fue aparecerá un 1 y si no lo fue aparecerá un 0. S → BIT de Signo (SIGN). Indica el signo del resultado de la última operación realizada por la ALU. Si fue negativo habrá un 1 y si no habrá un 0. Z → BIT de Zero. Indica si el resultado de la última operación de la ALU fue cero. Si fue así marcará un 1 y si no fue así habrá un 0. O → BIT de Overflow. Indica si en la última operación de la ALU hubo desbordamiento. Si lo hubo marcará 1 y si no lo hubo marcará 0.
_ Registros de Dirección de Memoria (AR). Son los registros que contienen la dirección del dato que se va a leer de la memoria o que se va a escribir en la misma. _ Registros de Memoria (MR). Son los registros que contienen la última información leída de la memoria o la información que se va a escribir en la memoria. _ Registros de Instrucciones (IR). Son los registros que contienen la instrucción que está siendo ejecutada por la CPU. _ Contador de Programa (PC). Es un tipo de registro que contiene la dirección de la siguiente instrucción que va a ser ejecutada por la CPU.
ALU
SR
CU
AR
MR
IR
PC
GPR Tipos de BUS.
CPU _ BUS de Datos. Por este BUS viajan los datos sobre los que opera la CPU. _ BUS de Control. Por este BUS viaja la información de control generada por la CU de la CPU. _ BUS de Dirección. Por este BUS las direcciones, instrucciones y operandos sobre los que trabaja la CPU Memoria datos
18
dirección
control
AR
CU
MR
ALU
SR
GPR IR
PC CPU
3.2. Niveles de descripción de un computador. 1. 2. 3. 4. 5. 6.
Nivel de comportamiento eléctrico. Conjunto de elementos eléctricos que forman un computador. Nivel de lógica digital. El computador es descrito por las ecuaciones lógicas que realiza. Nivel de microprogramación (RTL). El computador es descrito por las operaciones de transferencia de registros. Nivel de lenguaje máquina. El computador es descrito por las instrucciones que ejecuta. Nivel de sistema operativo. El computador es descrito por las órdenes del sistema operativo. Nivel de programas de aplicación. El computador es descrito por el grupo de aplicaciones que es capaz de ejecutar. Del nivel 4 se puede extraer el tipo de arquitectura de un computador.
3.3. Prestaciones de un computador. _ Ancho de palabra. Suele coincidir con el ancho de BUS de datos. Representa el número de BITs que es capaz de transferir simultáneamente entre dos de sus elementos. _ Rango del computador. Representa el conjunto de valores numéricos representables. _ Tiempo de acceso a memoria. Para realizar escritura. Tiempo necesario para escribir en la memoria. Para realizar lectura. Tiempo necesario para leer un dato de la memoria. _ Tiempo de ciclo. Expresa el tiempo mínimo entre dos lecturas consecutivas. _ Ancho de banda. Indica el número de palabras transferidas a la CPU en la unidad de tiempo. _ Frecuencia. Muestra la rapidez con la es capaz de realizar las operaciones el elemento del computador a la que esté referida. Frecuencia de reloj. Frecuencia de procesador. Frecuencia de BUS.
19
3.4. Arquitectura de un procesador actual. Vamos a hacer un estudio del Motorola 68000 también llamado MC 68K y en concreto de su lenguaje ensamblador. 3.4.1.
Modelo de programación.
Es el conjunto de todos aquellos conocimientos que debe conocer un programador acerca de la arquitectura del procesador que está manejando. _ Registros. - 8 Registros de Datos (DR) con un ancho de 32 BITs. {D0, D1, D2, D3, D4, D5, D6, D7}. - 7 Registros de Direcciones (AR) con un ancho de 32 BITs. {A0, A1, A2, A3, A4, A5, A6}. - 1 Registro de Pila con un ancho de 32 BITs. {A7}. - 1 Registro de Estado (SR) con un ancho de 16 BITs de los cuales el usuario sólo utiliza 8. Esos 8 BITs que utiliza el usuario son los Registros de Códigos de Condición (CCR).
15
...
4 X
3 N
Z
2
V
1
C
0
C → BIT de Carry. 1 si en la última operación hubo acarreo y 0 si no lo hubo. V → BIT de Overflow. 1 si el resultado de la última operación no es representable en la notación C2, dentro del tamaño seleccionado. Z → BIT de Zero. 1 si el resultado de la última operación fue cero y 0 si no lo fue. N → BIT de Negative. 1 si el resultado de la última operación fue negativo y 0 si no fue así. X → BIT de Extension. 1 si el resultado de la última operación produce un arrastre decimal.
_ Contador de Programa (PC). Es un registro de 32 BITs de los cuales sólo se usan los 24 primeros. ¿Cuál es el tamaño máximo de memoria direccionable? El tamaño máximo de memoria direccionable es 16 Megabytes, que es el número de combinaciones posible con 24 BITs. Direccion esContro Datos l
M.C. 68K
El BUS de datos tiene un ancho de 16 BITs
Memoria
E/S
16 MB ¿Cómo se colocan los datos en memoria? Según el protocolo de escritura Big-Endiam (Intel usa el Little-Endiam) el BIT más significativo (MSB) se pone siempre en la posición de memoria más baja. Ej. 0
0
0
0
0
0
1
1
Sería el número 000011 siendo 0 el MSB
20
¿Cuál es el tamaño de los operandos? En el M.C. 68 K el tamaño de los operandos puede ser de tipo Byte (B→8BITs), de tipo Palabra (W→16BITs) o de tipo Doble Palabra (L→32BITs). Extensión con signo. Consiste en completar los BITs que falten hasta llegar al número de BITs que hayamos escogido para la representación. Se hace añadiendo ceros a la izquierda o unos si es un número negativo. Ej.
0101 → 5 1011 → -5
00000101 → 5 11111011 → -5
Almacenamiento en direcciones. El almacenamiento en las direcciones de la memoria se llevará a cabo en las direcciones pares de la memoria para palabras y dobles palabras. 0
1
2
...
7
8
9
...
15 16 17 ...
23 24 25 ...
31
Tienen que acoplarse en sitios pares (0-15ó16-
31). W
W L
3.4.2.
Repertorio simple de instrucciones.
_ Movimiento de datos. MOVE = B, W, L. LEA.L
= D0, D1, etc.
, An An = A0, A1, A2, etc.
_ Operaciones aritméticas. ADD
Suma
+
y
lo
guarda
en
SUB
Resta
-
y
lo
guarda
en
MULU
, Dn Multiplica Dn x y lo guarda en Dn El resultado es siempre en 32 BITs (L).
DIVU
, Dn Divide Dn / y lo guarda en Dn Los primeros 16 BITs del resultado son el cociente y los otros 16 son el resto. Dn siempre es de 32 BITs (L) mientras que es siempre de 16 BITs (W). _ Casos especiales. • •
División por cero → Una excepción. Un desbordamiento → V = 1.
_ Operación lógica. CMP Compara -
Z = 1 = N = 1 > N = Z = 0 _ Tareas del sistema operativo. -
Facilitar el uso del computador. Gestionar y asignar recursos de hardware. Gestionar y mantener archivos en dispositivos de memoria. Apoyar a otros programas para su ejecución. Proteger datos y programas. Contabilizar el uso de recursos.
6.3. Gestión de CPU. Gestión de procesos. Esto significa decidir quién y cómo utiliza la CPU. Como no pueden llevarse a cabo dos programas al mismo tiempo en la CPU, se hacen una especie de turnos: primero un programa entero y luego el otro; instrucciones alternativas de ambos programas; etc. Proceso. Proceso se denomina al programa que está en ejecución (programa activo). Programa. Programa es el conjunto de instrucciones (programa pasivo). Formas de trabajo. _ Por lotes. Se lanza el proceso y hasta que no acaba, ningún programa tiene acceso a la CPU. _ Interactiva. Se comparte la CPU. La CPU está constantemente atendiendo las peticiones de todos los recursos del computador. 6.3.1.
Multiprogramación.
En los años 50, el uso de la CPU era por lotes, los programas se ejecutaban completos de uno en uno. Si el programa necesitaba un uso E/S la CPU no hacía nada y tenía que esperar. Hoy en día, cuando el programa no usa la CPU, el programa en espera la utiliza mientras el otro hace otra cosa, cuando el primero vuelve, el segundo vuelve a estar en espera. Así se ahorra tiempo.
33
Acceso compartido a dispositivos E/S y archivos. Es una propiedad que permite que varios usuarios accedan a los mismos dispositivos y archivos con la única condición de tener un sistema de archivos común. 6.4. Gestión de la memoria. Significa decidir quién y cómo toma acceso a la memoria principal del computador. Si un programa escribe en una zona de la memoria, los demás no podrán usar esa zona hasta que quede libre o el programa que la utilizó no la necesite. Dirección virtual. Si la memoria está ocupada desde 0 hasta n – 1 significa que el programa ocupa n posiciones de memoria. Lo que se hace es coger esas n posiciones de memoria virtual y llevarlas a la memoria física del computador. Así, el resultado final será que la memoria física está ocupada desde la posición aleatoria N hasta la posición N + n –1. Este proceso de llevar los datos almacenados en la memoria virtual a la memoria física es otro de los cometidos de los sistemas operativos. El comando que ordena al compilador que lleve el programa en memoria virtual a la memoria física es el ORG $2000, que coloca el programa a partir de la dirección 2000 de la memoria física. La primera dirección a partir de la cual se extiende el programa se llama dirección base. 6.5. Gestión de Entrada/Salida. Gestiona las operaciones básicas de los dispositivos, cualesquiera que sean e independientes de los mismos. Las instrucciones son iguales para todos los dispositivos excepto en una palabra clave al final, que es la que identifica al dispositivo que va a ser usado. Ej. print “a”, pantalla print “a”, impresora Para gestionar adecuadamente los dispositivos de entrada/salida necesitamos un software de entrada/salida independiente de los dispositivos que se encargue de su funcionamiento, suele estar incluido en el sistema operativo; y un gestor propio de cada dispositivo. 6.6. Gestión de Archivos. Un archivo es una colección de información que el sistema operativo almacena en un dispositivo de almacenamiento. La gestión de los archivos consiste en definir dónde colocarlos en un dispositivo de almacenamiento, mantener un nombre para los archivos, dotar de atributos a los mismos y distribuirlos en directorios. Los directorios no son más que un conjunto de archivos ordenados normalmente siguiendo un criterio establecido.
http://www.loseskakeados.com
34