Componentes de un ordenador Contenido del tema TT EE M M A A 8.1. Componente física (hardware) 8.1.1. Arquitectura von Neumann 8.1.2. Unidad central de proceso 8.1.3. Buses 8.1.4. Memoria 8.1.5. Subsistema de E/S 8.2. Lenguaje ensamblador Componentes básicos • Componente física o hardware ¤ Elementos tangibles del ordenador: • • • • • Componente lógica o software ¤ Programas que ejecuta el ordenador. 8.3. Componente lógica (software) 88 Unidad central de proceso Buses Memoria Subsistema de entrada/salida: teclado, ratón, monitor... • Programas del sistema: sistema operativo, compiladores, programas de comunicaciones, bibliotecas estándares. • Programas de usuario: bases de datos, navegadores, hojas de cálculo, procesadores de texto, juegos, ... 8.3.1. Clasificación del software 8.3.2. Sistemas operativos 8.3.3. Gramáticas y compiladores Introducción a los Computadores Componentes físicos • Arquitectura von Neumann John von Neumann, Neumann 1945 First Draft of a Report on the EDVAC (1) Programa almacenado (2) Lógica binaria (George Boole) (3) División en UCP, memoria y E/S (Charles Babbage) Unidad de procesamiento Almacén temporal (muy rápido) Bus sistema Registros direcciones datos Unidad de control control reloj Memoria (datos+instrucciones) Señales del control al resto del sistema Procesamiento aritméticológico A.L.U. Acum. Subsistema de E/S Introducción a los Computadores estado Unidad de procesamiento Buses U.C.P. Parámetros: • Velocidad (MIPS o MFLOPS) • Longitud de palabra • Número de registros • Nivel de paralelismo Introducción a los Computadores Unidad de procesamiento • La Unidad de control (U.C.) Unidad de control . . . reloj ¤ ¤ ¤ ¤ CLK • Funcionamiento: ciclo máquina repetitivo desde que se enciende el ordenador hasta que se apaga Emisión de señales de sincronización Decodificación de la instrucción Ejecución secuencial Repertorio de instrucciones simples: (1) de tratamiento aritmético-lógico (2) de transferencia de datos UCP (3) saltos de control del flujo MP ES (4) otras (parada, paso-a-paso...) MP ES Unidad de procesamiento ciclo máquina Memoria Memoria instrucción (fetching) UCP UCP UCP MP ES opcional reloj . . . Actualización del C.P. ciclo reloj Decodificación Introducción a los Computadores Unidad de procesamiento Memoria • Registros Otros registros: •Propósito general •Direcciones temp. •Puntero de pila (PP) U.A.L. U.C. Instrucción actual a decodificar RI AC Acumulador: Último resultado Ejecución Búsqueda de operandos opcional Introducción a los Computadores Unidad de procesamiento • Unidad aritméticoaritmético-lógica (U.A.L.) Contador de programa: siguiente instrucción CP PE ¤ Almacén temporal ¤ Sin direcciones de memoria asignadas Registros ¤ Acceso muy rápido Almacenamiento de resultados Fetching Unidad de control Palabra de estado: CY (carry) Acarreo O (overflow) Desborde N (negative) Negativo Z (zero) Resultado cero ... Se actualizan tras cada operación aritmético-lógica Introducción a los Computadores ¤ Ejecuta las instrucciones de tratamiento aritmético-lógico: • Lógicas: AND, OR, NOT, XOR, CMP • Aritméticas: ADD, SUB, MUL, DIV • De desplazamiento de bits: – lógico (entra un 0/1 y se pierde el último/primero) – circular (el último pasa a ser el primero o viceversa) – aritmético (se duplica el bit de signo y se pierde el último) ¤ Los operandos deben estar en los registros y/o acumulador. ¤ El resultado se deja en el acumulador. ¤ Actualiza los indicadores de la palabra de estado tras cada operación. Las instrucciones de control de flujo se basan en los indicadores N y Z. Introducción a los Computadores Memoria Memoria • La memoria almacena datos e instrucciones. • Desde el punto de vista funcional, en un ordenador distinguimos: ¤ Memoria principal (MP) o interna. ¤ Memoria secundaria (MS), externa o masiva. • La MP es directamente accesible por la UCP. La MS no, sino que se accede a través de un controlador del subsistema de E/S. • En general las memorias que se utilizan para la MP son de tecnología electrónica. Electrónica Alta velocidad Capacidad limitada Volátil en general Alto coste Magnética, óptica... Baja velocidad Alta capacidad Permanente Bajo coste • Las memorias CACHE son los trozos de memoria copiados de la MP o de la MS más probables de acceder a continuación. Son más rápidas (y de mayor coste) y evitan accesos a MP o MS más lentos. UCP Si el dato no está en la cache se accede a MP y se copia un nuevo trozo. Cache MP MP Cache MS MS Introducción a los Computadores Memoria Principal • Desde el punto de vista físico, existen las siguientes memorias electrónicas: ¤ ROM (sólo lectura): almacena la BIOS. Es no volátil. ¤ RAM (lectura/escritura): almacena el SO y los programas de usuario. A su vez, pueden ser: • SRAM: estática, más cara y rápida (¡de 4 a 20 nanosegundos!). Se utilizan para las cache. • DRAM: dinámica, más barata y menos rápida (de 50 a 120 nanosegundos). Son las habituales en MP. El sistema de E/S básico (Basic Input-Output System) es el conjunto de programas que se ejecuta al encender el ordenador: chequea el sistema y carga el SO en la RAM. Las RAM estáticas no necesitan en refresco electrónico para mantener el contenido que necesitan las dinámicas. Introducción a los Computadores Si el dato no está en la cache se accede a MS y se copia un nuevo trozo. Introducción a los Computadores Memoria Principal • Independientemente de la memoria física utilizada, la UCP ve lógicamente la MP como un conjunto de posiciones o celdas donde leer y escribir que se llama mapa de memoria. • Cada posición del mapa corresponde a una palabra y se numera consecutivamente mediante una dirección. direcciones en hex. BBA0 BBA1 BBA2 BBA3 S.O. ... Proceso 1 ... R/W CS otras datos direcciones control Proceso 2 ... mapa de memoria Introducción a los Computadores Memoria Principal Subsistema de E/S • La longitud de palabra, m, de la MP suele coincidir con la del procesador y con el ancho del bus de datos, y es la anchura en bits de una palabra. • La capacidad de la memoria viene determinada por el número de hilos, n, del bus de direcciones: 2n palabras: 32 bus del sistema 16 0000 0001 0002 0003 0004 0005 FFFE FFFF 216 palabras • El subsistema de E/S permite al procesador comunicarse con distintos dispositivos o periféricos del exterior. • Cada tipo de dispositivo debe conectarse al sistema a través de un controlador que adapte el mundo exterior del periférico al mundo electrónico de la UCP. UCP MP bus de e/s Contr. disco Contr. Contr. vídeo teclado longitud de palabra = 32 Introducción a los Computadores Introducción a los Computadores Subsistema de E/S datos • La UCP ve lógicamente todo direcciones el subsistema de E/S como control posiciones de memoria en un mapa de direcciones distinto al de la MP. • Una posición del mapa de E/S se llama puerto. I/ O INT • Físicamente, los puertos son otras posiciones de memoria dentro de los controladores. Subsistema de E/S Puertos disp. 1 • Esquema controlador genérico datos direcciones control entrada salida Puertos disp. 6 control conversores estado de señal dispositivo ... Puertos disp. 8 circuitería control / direcciones controlador mapa E/S Introducción a los Computadores Introducción a los Computadores Memoria secundaria • Entre los dispositivos de e/s destacan los de almacenamiento masivo. Los hay de dos tecnologías: ¤ Magnética: cintas, discos duros y flexibles (disquetes) ¤ Óptica: CDs y DVDs En un disco magnético hay múltiples pistas concéntricas, que se lee a velocidad angular constante (CAV) (más rápido) • Organización de un disco magnético: Plato Pista Caras En un disco óptico sólo hay una pista en espiral que se lee a velocidad lineal constante (CLV) Sector brazos y cabezas Memoria secundaria • Tiempos de acceso a la información: tiempo de latencia: rotar discos hasta que el sector buscado pase bajo la cabeza tiempo de localización: posicionar brazo en la pista adecuada UCP tacceso = tloc + tlat tiempo de transferencia: llevar los datos desde la cabeza hasta la UCP Introducción a los Computadores Introducción a los Computadores Buses Buses • Esquema de Bus único • Buses ¤ Conexiones entre las distintas unidades funcionales del ordenador. ¤ Los buses de la placa base son paralelos y se subdividen en 3 sub-buses: ¤ Problema: los dispositivos son más lentos que la UCP y la MP y además tienen velocidades de trabajo distintas entre sí. • De direcciones: donde la UCP pone las posiciones de MP y ES. • De datos: donde la UCP, la MP o la ES ponen los datos. • De control: conjunto de señales de la UCP para sincronizar las operaciones. Son sub-buses lógicos. Físicamente pueden ir multiplexados el de datos y el de direcciones. ¤ Los buses pueden ser paralelos (SCSI o IDE) o en serie (COM o USB). ¤ Cada bus tiene sus propias características físicas/eléctricas: ancho de banda, frecuencia reloj, anchura datos, que los hacen incompatibles entre sí. Se necesitan interfaces adaptadores para cada tipo de bus. Cada dispositivo se conecta mediante su controlador a un solo tipo de bus. Introducción a los Computadores UCP MP ES ES ES Bus del sistema Velocidad única: número de dispositivos limitado Introducción a los Computadores Buses Buses • Esquema con de bus de expansión • Jerarquía de buses: ¤ Solución: buses distintos (con velocidades distintas) y circuitería de interfaz entre los buses, los puentes (bridges). UCP UCP Más lento Adaptador ISA ES ES ES 66 MHz 528 MBps Tarjeta gráfica MP Bus AGP 33 MHz 264 MBps Adaptador AGP/PCI MP Bus local del sistema Más rápido 100 MHz 1 GBps Bus local del sistema 8.33 MHz 8 MBps Modem Bus PCI Ratón Teclado Adaptador PCI/ISA Contr. Disco Tarjeta red Bus ISA Bus ISA Introducción a los Computadores Introducción a los Computadores Buses Buses en placa madre ISA Industry Standard Architecture, 1984 EISA Ancho A.B. (bits) (MBps) 8/16 2.38 8.0 32 31.8 Buses Frec. Dispositivos (MHz) 8.3 T. Sonido, modems... 8.3 T. red, adap. SCSI... Extended ISA, 1988 Buses externos IDE Integrated Drive Electronics, 1984 SCSI 32 20 33 T. red, T. gráficas... Small Computer System Interface, 1995 32 44-105 33 T. gráficas, UCP... Universal Serial Bus 132-264 508.6 33 Peripheral Component Interconnect, 1992 32 64 AGP 32 254.31017.3 66 66x4 T. gráficas, adap. SCSI, t. sonido modernas T. gráficas 3D MCA MicroChannel Architecture, 1987 VESA Local bus Video Electronics Standard Association, 1993 PCI Advanced Graphics Ports Introducción a los Computadores Ancho A.B. Dispositivos (bits) (MBps) 8 8 discos, CDs, cintas USB FireWire IEEE 1394, 1995 8, 16 5-80 serie 1.5 serie discos, otros... ratón, teclado, modems, multimedia, escáneres... 1.5-50 cámaras, DVDs, impresoras, redes, discos Introducción a los Computadores Lenguaje máquina • Las instrucciones máquina pueden constar de una o más palabras de memoria: También pueden ser co-op co-op co-op co-op opdo dir. opdo Los operandos pueden ser inmediatos dir. opdo dir. opdo1 direcciones de memoria (de anchura la del bus de direcciones) El código de operación indica la instrucción a ejecutar y cuántos operandos son necesarios Lenguaje ensamblador • Cada instrucción máquina se corresponde con una instrucción en lenguaje ensamblador: Por esto, el Lenguaje máquina lenguaje ensamblador es simbólico Lenguaje ensamblador Patrones bits co-op mnemónicos breves Direcciones de memoria o puertos de e/s Operandos inmediatos números en decimal, octal o hexadecimal números precedidos por # Comentarios cadenas de texto precedidas por ; dir. opdo2 100101101XXX 101010101100 10110110110 Introducción a los Computadores Introducción a los Computadores Lenguaje ensamblador • Vamos a introducir un lenguaje ensamblador correspondiente a una máquina simple con las siguientes características: ¤ ¤ ¤ ¤ Bus de datos de 12 bits (= anchura instrucción) Bus de direcciones de 7 bits Código de operación de 5 bits (hasta 25 posibles instrucciones) Registros a tener en cuenta: CP, AC, PE, PP Lenguaje ensamblador • Instrucciones de transferencia de datos con el AC: AC LD m LD #d ST m 00000mmmmmmm 00001------- dddddddddddd 00010mmmmmmm Carga [m] en AC Carga d en AC Almacena [AC] en [m] MP LD m U.A.L. dato AC LD #d m-1 m m+1 m+2 ST m load = cargar store = almacenar Introducción a los Computadores Introducción a los Computadores Lenguaje ensamblador • Instrucciones de transferencia MP a MP: MP MOV m #d 00011mmmmmmm dddddddddddd MOV m n 10011mmmmmmm -----nnnnnnn MP MOV m #d • Instrucciones de transferencia de datos en la pila: pila Almacena d en [m] Almacena [n] en [m] PUSH POP 00100------00101------- Almacena [AC] en [PP] e incrementa PP Decrementa PP y almacena [PP] en AC MP El puntero de pila (un registro) apunta a la primera posición libre de la pila del proceso m-1 m m+1 m+2 dato Lenguaje ensamblador MOV m n n-1 n n+1 n+2 U.A.L. POP AC PUSH SH PU PP FFFD PO P push = empujar pull = tirar Introducción a los Computadores IN e OUT s 00110eeeeeee 00111sssssss Carga en el AC el contenido del puerto de entrada e Almacena el contenido del puerto de salida s en AC ES IN e U.A.L. e-1 e e+1 e+2 AC puerto de un dispositivo de entrada: ratón, teclado, tableta gráfica... Lenguaje ensamblador • Instrucciones aritméticas (resultado en AC): ADD SUB MUL DIV OUT s puerto de un dispositivo de salida: vídeo, impresora... Introducción a los Computadores m m m m 01000mmmmmmm 01001mmmmmmm 01010mmmmmmm 01011mmmmmmm Almacena [AC] + [m] en AC Almacena [AC] - [m] en AC Almacena [AC] * [m] en AC Almacena [AC] / [m] en AC MP PE .. s-1 s s+1 s+2 pila Introducción a los Computadores Lenguaje ensamblador • Instrucciones de transferencia de datos con el mapa de e/s: e/s FFFC FFFD FFFE FFFF NZ.. +-*/ AC ADD SUB MUL DIV m m m m m-1 m m+1 m+2 Se actualizan los indicadores S y Z después de cada operación Introducción a los Computadores Lenguaje ensamblador • Instrucciones aritméticas (resultado en MP): INC m CLR m SET m 01100mmmmmmm 10001mmmmmmm 10010mmmmmmm NZ.. • Instrucciones lógicas: lógicas Pone todos los bits de [m] a 0 Pone todos los bits de [m] a 1 MP 11100mmmmmmm 01101mmmmmmm 01110mmmmmmm 01111mmmmmmm 10000mmmmmmm Si [AC] < [m] se activa N, y si [AC] = [m] se activa Z Almacena [AC] AND [m] en AC Almacena [AC] OR [m] en AC Almacena [AC] XOR [m] en AC Almacena NOT [AC] en AC CLR m +-*/ m-1 m m+1 m+2 AC +1 clear = limpiar set = establecer CMP m AND m OR m XOR m NOT m Incrementa [m] en 1 PE .. Lenguaje ensamblador MP 00000000000 111111111111 PE .. NZ.. CMP AND OR XOR NOT +-*/ SET m AC INC m Introducción a los Computadores Pone m en [PC] Pone m en [PC] si está activo N en PE BN m BZ m BNZ m Salva [CP] en la pila (dirección de vuelta) y pone [m] en CP Repone la dirección de vuelta de la pila en CP BR m CP NZ.. MP m-1 m m+1 m+2 ¡Ojo! direcciones del texto del programa PE CP k k+1 Pone m en [PC] si está activo N o Z en PE .. branch = bifurcación CALL 11000mmmmmmm RET 11001------- Pone m en [PC] si está activo Z en PE etq m saltos condicionales Lenguaje ensamblador • Instrucciones de control de flujo del programa (llamadas): • Instrucciones de control del flujo del programa: 10100mmmmmmm 10101mmmmmmm 10110mmmmmmm 10111mmmmmmm m-1 m m+1 m+2 Introducción a los Computadores Lenguaje ensamblador BR m BN m BZ m BNZ m m m m m m m m+1 dirección de inicio subprograma FFFC FFFD FFFE FFFF RET k k+1 n-1 n CALL k CA LL PP k RET FFFC FFFD FFFE FFFF k es la dirección de vuelta al programa que hace la llamada dirección final del subprograma call = llamar, return = volver Introducción a los Computadores Introducción a los Computadores Lenguaje ensamblador • Otras instrucciones: HALT 11110------NOP 11111------- • Ejemplo bucle: Detener funcionamiento de la UCP hasta recibir interrupción No operación, seguir con la siguiente instrucción • Ejemplo selección: etq1: etq2: fin: LD #10 ; CMP 40 ; BNZ etq2 LD 40 ADD 41 ; BR fin LD 40 ; SUB 41 NOP ; ST 41 Lenguaje ensamblador inicio sentencia SI en la posición 40 está i en la posición 41 está j inicio rama SINO // Equivalente en // pseudolenguaje SI i > 10 ENTONCES j = i+j SINO j = i-j FINSI CLR 40 ; bucle: LD #10 ; SUB 40 BNZ fin LD #3 MUL 41 ; ADD 42 ; ST 42 INC 40 BR bucle fin: NOP ; en la posición 40 está i // Equivalente en inicio sentencia MIENTRAS // pseudolenguaje i = 0 MIENTRAS i<10 HACER a = a+b*3 en la posición 41 está b i = i+1 en la posición 42 está a FINMIENTRAS continuar con la siguiente instrucción continuar con la siguiente instrucción Introducción a los Computadores Lenguaje ensamblador • Ejemplo bucle en MP: Las direcciones de MP están expresadas en decimal. texto del programa 8 bucle-> 9 10 11 12 13 14 15 16 17 18 19 fin-> 20 ... datos del programa 100010101000 000011100010 000000001010 010010101000 101110010100 000011100010 000000000011 010100101001 010000101010 000100101010 011000101000 101000001001 111110111001 ... 40 000000000000 41 001000100011 42 000001000001 ... CLR 40 LD #10 SUB 40 BNZ fin LD #3 MUL 41 ADD 42 ST 42 INC 40 BR bucle NOP [i] [b] [a] ... Introducción a los Computadores Introducción a los Computadores