You are on page 1of 7

Organizacin Estructurada de la Computadora Los circuitos elecrnicos de una computadora puden reconocer y ejecutar directamente un set simple de instrucciones

en las que se debern convertir todos los programas antes de ser ejecutados. Estas instrucciones forman un lenguaje que permite comunicarnos con la computadora. Este lenguaje se lo conoce como Lenguaje Mquina, y es lo ms simple posible. Dada la simplicidad de estos lenguajes resulta difcil y tedioso programar en ellos. Esta observacin ha llevado, en el transcurso del tiempo, a estructurar las computadoras en una serie de abstracciones. El problema puede ser atacado fundamentalmente de dos maneras, ambos casos implican definir un nuevo set de instrucciones que sea mas familiar para el programador que el set de instrucciones mquina. Estas instrucciones constituyen un nuevo lenguaje L1, as como las instrucciones construidas en hardware forman un lenguaje L0. Uno de los mtodos de ejecutar un programa escrito en L1 es reemplazar primero cada instruccin en L1 por la secuencia equivalente en L0. La computadora ejecuta luego un nuevo programa L0 en lugar del viejo L1. Durante la ejecucin, ser el nuevo programa generado en L0 el que est corriendo y est a cargo del control de la computadora. Esto se denomina translation. La otra tcnica es escribir un programa en L0 que toma al programa L1 como dato de entrada, examina en orden cada instruccin ejecutando la secuencia equivalente de L0 directamente. Esto no requiere la generacin de un nuevo programa en L0. Esto se denomina interpretation y el programa que lo realiza se llama intrprete. Mas que pensar en trminos de traduccin o interpretacin, es a menudo mas conveniente imaginar la existencia de una mquina virtual cuyo lenguaje sea L1. Si esa mquina se puede construir en forma econmica, no habra necesidad de tener a L0. En otras palabra, la gente podr escribir programas para la mquina virtual cmo si esta realmente existiera. Para que la traduccin o la interpretacin sea prctica L0 y L1 no deben ser muy diferentes. Esto significa que L1, aunque mejor que L0, an estar lejos de ser el lenguaje ideal para las aplicaciones. La solucin lgica es inventar un nuevo lenguaje L2, con su set de instrucciones, que sea ms orientado a la gente y menos a la mquina de lo que lo es L1. La creacin de una serie de nuevos lenguajes, cada uno ms complejo que su predecesor, podr ir indefinidamente hasta que el ideal sea alcanzado. Podramos mencionar un nivel adicional, por debajo de L0, un device level donde se trabaja con transistores. El nivel 0, el Digital Logic Level, sera el verdadero lenguaje mquina, que trabaja con compuertas con input y output digital (0s y 1s). El nivel 1, el Microarchitecture Level, tendr un conjunto de registros y una ALU, conectados con un data path a traves del cual fluyen los datos. En algunas mquinas el data path es controlado por un microprograma, que ser el intrprete de las intrucciones del nivel 2; en otras, el control se da por hardware. Las computadoras del tipo RISC (Reduced Instruction Set Computer) no tienen nivel de microprogramacin. En estas el nivel mquina convencional es llevado a cabo directamente por la electrnica. Aunque inicialmente se pensaba que lo importante era que las instrucciones se ejecuten rpidamente, se dieron cuenta que la clave para una buena performance era que las instrucciones se empezaran, issued, rpidamente. Cunto tarde la instruccin en terminar su ejecucin importar menos que cuntas instrucciones puedo comenzar por segundo. El nivel 2, llamado Instruction Set Architecture Level, que consiste en la serie de instrucciones que sern interpretadas por el microprograma o el circuito de hardware. El nivel 3, llamado Operating System Machine Level, es en general un nivel

hbrido. Hay un set de instrucciones, una organizacin de memoria diferente, la posibiladad de correr dos o ms programas de forma concurrente, y otras caractersticas. Las nuevas operaciones incluidas en el nivel 3 sern llevadas a cabo por el intrprete del nivel 2, llamado el sistema operativo. Aquellas instrucciones del nivel 3 idnticas a las del nivel 2 sern llevadas a cabo por el microprograma (o hardwired control). El nivel 4, llamado el Assembly Language Level, es en realidad una forma simblica de los lenguajes subyacentes. Los programas en lenguaje ensamblador son traducidos primero a nivel 2 o 3 y luego interpretados por la mquina virtual o real adecuada. El programa que realiza la traduccin se denomina Assembler. El nivel 5 consiste de lenguajes diseados para ser usados por los programadores. Se los conoce como lenguajes de alto nivel. Los programas escritos en estos lenguajes, generalmente se traducen a nivel 3 o 4 por traductores conocidos como Compiladores, aunque en ocasiones son interpretados, como Java. El nivel 6 consiste en un conjunto de programas diseados para mquinas orientadas especficamente a ciertas aplicaciones. Todava estn desarrollo. Los niveles 1, 2 y 3 no fueron diseados para uso directo del programador, sino que fueron creados para que corran los intrpretes y traductores necesarios para soportar los niveles superiores (se entienden en 0s y 1s). Los niveles 4 en adelante, fueron pensados para los programadores de aplicaciones (se entienden con nombres memnicos naturales para el programador). Los niveles 2 y 3 son siempre interpretados, en cambio, los niveles iguales o mayores a 4 son usualmente, aunque no siempre, traducidos. Evolucin de las Mquinas Multinivel Las primeras, remontndose a los 1940's, tenan solo dos niveles: el ISA (L2) en el cual se realizaba la programacin y digital lgico (L0) donde eran ejecutados. Estos eran complicados, difciles de construir y poco confiables. En 1951, Wilkes sugiere la idea de disear una computadora en tres niveles, en camino a simplificar drsticamente el Hardware. La mquina tendra un intrprete propio, microporgramado, incambiable, cuya funcin seria ejecutar los programas del nivel ISA. Ya en los 70's la idea de hacer que en nivel ISA sea interpretado por un microprograma result dominante y los diseadores se dieron cuenta que podan agregar nuevas instrucciones extendiendo el microprograma. Es decir, podan agregar hardware programando (ej. Inc Reg A). La microprogramacin sustent el auge de las arquitecturas CISC (Complex Instruction Set Computer). En esos tiempos, la memoria era escasa, luego el inters por almacenar instrucciones poderosas. Con la aparicin de las memorias semiconductoras se fue superando la cuestin de capacidad y velocidad. Por otro lado, los microprogramas tubieron problemas de velocidad, lo que los tornaron inviables. Finalmente, unos investigadores se dieron cuenta que elminando el microprograma, reduciendo el set de instrucciones y haciendo que el restante de las instrucciones se ejecuten directamente (hardwired control) se poda aumentar la velocidad. Como conclusin de esto se produce un reeplanteo de las arquitetcuras, surgiendo la filosofa RISC (Reduced Instruction Set Computer). Las reglas de diseo RISC son sencillas: todas las instrucciones son ejecutadas directamente por el hardware, nuna interpretadas; hay que maximizar la cantidad de instrucciones que pueden ser iniciadas (issued); la sinstrucciones deberan ser fcil de decodificar (de formato fijo y regular, con un pequeo nmero de campos); slo las instrucciones Load y Store tendrn acceso a memoria; hay que proveer muchos registros (los necesarios). Adems, en esa poca, el programador tena que lidiar con la mquina manualmente, lo cual induca a que la computadora estuviera mucho tiempo ociosa. Alrededor de 1960, se trat de reducir este tiempo perdido automatizando la tarea de operacin. Un programa llamado Sistema Operativo se mantena en la computadora

todo el tiempo de manera tal que el programador suministraba ciertas tarjetas de control junto con su programa para ser interpretados. En los aos siguientes los Sistemas Operativos se tornaron ms y ms sofisticados, incorporando nuevas caractersticas al nivel ISA, hasta que empez a tener la apariencia de un nuevo nivel. Alguna de las instrucciones del nuevo nivel idnticas a las del nivel ISA, pero otras, particularmente instrucciones de Input/Output, fueron completamente distintas. Las nuevas instrucciones son conocidas actualmente comp System Call. Generaciones Las computadoras de la generacin cero eran mecnicas y relativamentes simples. El estmulo por las computadoras electrnicas surgi con las Segunda Guerra Mundial, el COLOSSUS fue la primer computadora electrnica digital. La primera generacin (1945-1955), funcionaba con tubos al vaco. Es en esta poca que surge la IAS machine de John Von Neumann. Una cosa que result evidente para Von Neumann era que programar computadoras con un gran nmero de cables y llaves, tal cual era la metodologa empleada en esa poca, adems de tedioso era inflexible. El imagin que el programa podra ser almacenado en la memoria de la computadora en forma digital, junto con el dato. Adems, que la aritmtica decimal podra reemplazarse por aritmtica binaria. Esquemticamente este modelo sera:

La segunda generacin (1955-1965) se desarroll en funcin de los transistores creados por Bell Labs. Aqu es cuando surge la PDP-1 que luego llev a la PDP-8, que introdujo un nuevo concepto: el bus. Tambin surgi la 6600 de CDC, que tena varias unidades funcionales que podan trabajar en paralelo; aunque utilizarla a su mximo potencial requera una programacin cuidadosa, se poda lograr hasta 10 instrucciones ejectuadas a la vez. La tercera generacin (1965-1980) se di gracias a los circuitos integrados que permitan docenas de transistores en un mismo chip. Esto permiti cosntruir computadoras que eran ms pequeas, ms rpidas y ms baratas que sus predecesoras. Es ac cuando surge la idea de familias de mquinas. Debido a la incompatibilidad de los modelos 7094 y 1401, IBM decidi generar una lnea System/360 tanto para uso cientfico como comercial. La 360 innov con multiprogramming, tener ms de un programa en memoria a la vez, y la emulacin de otras computadoras. La cuarta generacin (1980 en adelante) se bas en los Very Large Scale Integration. Gracias a los VLSI, los costos bajaron, y surgieron las computadoras personales. La Unidad Central de Proceso La computadora, tal cual esta organizada hoy da, no difiere mucho del modelo que concibi Von Neumann. Las principales diferencias es que usa Registros en ves de un Acumulador. Los componentes estn unidos por u bus, que es una coleccin de cables para transmitir datos de direcciones, datos y seales de control. Los buses pueden ser externos al CPU, conectndolo a memoria y perifricos de I/O, e internos. La Central Procesing Unit es el cerebro de la computadora. Su funcin es ejecutar

programas almacenados en memoria, buscando instrucciones, examinando las mismas y ejecutando una tras otra. Est compuesta de distintas partes. La Unidad de Control es la responsable de organizar las distintas tareas del CPU, se encargar del fetch de instrucciones y la decodificacin. La ALU realiza las operaciones aritmticas necesarias en la ejecucin de instrucciones. El CPU contiene adems una pequea memoria rpida usada en el almacenamiento de resultados temporarios y de cierta informacin de control. Esta memoria consiste en un dado nmero de registros, cada uno con una cierta funcin. El ms importante es el PC, Program Counter, que guardar la direccin de la prxima instruccin. Otro registro importante es el IR, Instruction Register, el cual guarda la instruccin que se trae de memoria para ser ejecutada. Hay dos categoras de registros: los internos, que el software no ve y se usan para soperte del sistema; y los generales que si los ve el software. Al nivel del CPU podemos distinguir dos sistemas: el Data Path, parte pasiva, que involucra registros, ALU y buses internos; y el Control Path, parte activa, que determina la secuencias de accioneas a ejecutar sobre el Data Path. Ejecucin de Instrucciones: El CPU ejecuta cada instruccin en una serie de pasos: 1. Fetch: Bsca la prxima instruccin en memoria memoria y se carga en el IR (l CPU dialoga solamente con memoria). 2. Cambia el PC para apuntar a la prxima instruccin. 3. Decode: Determina el tipo de instruccin de la que acaba de traer. 4. Si la instruccin usa datos en la memoria, determina donde esta, clculo de la direccin efectiva. 5. Busca el dato, si lo hubiera, y lo transfiere a un registro interno. 6. Execute: Ejecuta la instruccin. 7. Almacena el resultado en el lugar adecuado (esto ser etapa Mem o WB). 8. Vuelve al paso 1 para comenzar a procesar la prxima instruccin. Esta secuencia es reconocida como Fetch-Decode-Execute Cycle. Las instrucciones las podemos dividir en tres categoras: registro-memoria, registroregistro, memoria-memoria. Registro-memoria permite que palabras de memoria sean transferidas, cargadas, en registros, los que podrn ser usados posteriormente como operandos en la ALU. Las registro-registro normalmente buscan operandos en los registros, los transfieren a la ALU, esta los opera y luego se realiza el almacenamiento del resultado en un dado registro. Memoria-memoria, busca sus operandos en memoria, realiza la operacin y luego retorna el resultado a memoria. Memoria Es un conjunto de celdas o locaciones con una direccin que est fijada (address). La celda es la menor unidad a la que puedo direccionar. Si la direccin tiene M bits, el mximo nmero de celdas resulta 2M. El nmero M tiene que ver con el mximo nmero de celdas a direccionar directamente en memoria y es independiente del nmero de bits por celda. En los ltimos aos se estandariz que una celda de 8 bits se define como byte. Los bytes, a su vez, se agrupan en palabras. En general las intrucciones operan con palabras (conj. de byes). La memoria se la refiere en al jerga como RAM, Random Access Memory (cada vez es menos random). Cualquiera que sea la locacin a la que accede, el tiempo ser el mismo, independientemente de los accesos previos. Otro tipo de acceso es el Acceso Directo, este se diferencia del RAM, a pesar de que ambos buscan directamente la locacin deseada, en el hecho que el tiempo de acceso depender de qu estoy accediendo y qu contenido acced previamente. Un tercer tipo de acceso es el secuencial, que recorre todas las locaciones hasta encontrar la deseada. Una cuestin a considerar es con que granularidad se direcciona en la memoria, tpicamanete, se direcciona al byte. Una direccin ser entonces un puntero a un byte

de memoria. Los bytes en memoria podrn ser numerados, direccionados dentro de la palabra, de izquierda a derecha o viceversa.

Si se direcciona de izq. a derecha se trata de Big Endian; si en cambio, es de derecha a izq. se trata de Little Endian. La complicacin surge en el momento en que las computadoras dejan de estar aisladas y se comunican con diferente ordenamiento al byte, esto llevar a una mezcla de datos. La solucin no es simple, un modo sera que para la transmisin se usara una forma considerada estndar, asumida por todas las mquinas. Esto resultar innecesario en algunos casos, dado que las dos mquinas podran usar el mismo ordenamiento, distinto al estndar. Otra solucin, ineficiente, sera incluir un encabezamiento que indique el tipo de dato y cun largo es. Esto posibilita que el Receptor realice la conversin necesaria. Deteccin y Correccin de Errores En los procesos de almacenamiento, transmisin, escritura de datos se pueden producir errores. Con la deteccin de errores aseguramos la integracin de la informacin (sirve para no seguir adelante en la ejecucin si sabe el dato es errneo); con la correccin hay una tolerancia al fallo. Si se aplica deteccin o deteccin y correccin depender de las circunstancias. Si los valores vlidos difieren en un solo bit, no es posible la deteccin del error. Capacidad de deteccin de errores (D): uno menos de lo que no siempre podr ser detectado. Capacidad de correccin de errores (C): uno menors de lo que no siempre podr ser corregido. Distancia mnima de un cdigo (M): la menor cantidad de bits en los que difieren dos datos vlidos. M-1=D+C DC Claramente, cuanto mayor sea la distancia mnima mayor ser la capacidad de deteccin/correccin. La distancia de un cdigo se aumenta agregando bits redundantes al dato. Bit de Paridad, D=1 Se agrega un bit de paridad al dato para mantener la paridad con la que se trabaja. Se puede trabajar con paridad par que es un dato compuesto por un nmero par de 1s o con paridad impar que es un dato compuesto por un nmero impar de 1s. Para la paridad par: P=b1 b2 ... bn Para la paridad imapr: P=(b1 b2 ... bn)` Cdigo Hamming, M=3, D=C=1 o D=2 La idea es agregar bits redundantes m a un dato de n bits tal que esos bits redundantes se puedan construir en un puntero al bit errneo. 2mn+m+1 Asumiendo m bits redundantes se arma el dato compuesto, codeword,

numerando las posiciones desde 1 en adelante. Las posiciones potencia de dos se reservan para los bits del cdigo, los de los datos se distribuyen en las otras.

El conjunto de los distintos ci corresponden a la paridad par (o impar) sobre la posicin el conjunto de bits en cuya posicin en binario interviene i. Se calculan en funcin de los datos y se almacena el codeword resultante. Por ejemplo, para paridad par se tendr: c0 = b0 b1 b3 b4 b6 = {3, 5 , 7, 9, 11} c1 = b0 b2 b3 b5 b6 = {3, 6, 7, 10, 11} c2 = b1 b2 b3 b7 = {5, 6, 7, 12} c3 = b4 b5 b6 b7 = {9, 10, 11, 12} Al momento de recuperar el dato se recalculan los ci` y se construye un puntero p={pi con pi=ci ci`}, si no hubo error el puntero ser cero, sino apuntar a la posicin del error. Si el bit errado est en el dato, claramente afectar al cdigo para revelar su posicin; si es un bit del cdigo, slo ese bit no coincidir. El cdigo Hamming podr detectar 2 errores, ya que el puntero nunca ser cero en ese caso (implicara que los errores se cancelan, cosa que es imposible). No podr detectar 3 errores ni corregir los dos detectados. Cdigo Hamming Extendido, M=4, D=3 o D=2 C=1 Idntico al cdigo Hamming, pero se agrega un bit de paridad al codeword. Se darn as 3 casos: No hay error: el bit de paridad es 0 y el puntero es 0. Hay un bit en error: fall el bit de paridad, entonces reviso el puntero, si es cero el error est en el mismo bit de paridad, si el puntero no es cero corrijo mi error con Hamming. Hay dos bit en error: el bit de paridad estar bien, pero el puntero ser distinto de cero. En este caso informo, no corrijo. Vertical Redundancy Checking (VRC) Lo visto hasta ahora se refiere como Longitudinal Redundancy Checking, ya que el codeword incrementa el ancho del dato. Un escenario donde se produzca una rfaga, burst, de bits de error, es decir, una secuencia con un bit inicial y final cuyas posiciones intermedias podran (o no) estar alteradas. La idea sera organizar el bloque en k filas y n columnas; y agregar, al final una fila extra con el checksum que se corresponde con la paridad de cada columna. Si el burst tiene longitud n o menor ser detectado, ante longitudes mayores el resultado ser incierto. Combinando LRC y VRC se podra llegar a corregir el bt de error. VRC slo detectara un nico burst. Cyclic Redundancy Checking (CRC) Se defini burst de error de longitud x. La idea es adems que la separacin entr 2 bursts de error deber ser x o ms bits sin error. El CRC tambin es conocido como Polynomial Code. La cadena de bits se asocia a coeficientes de un polinomio de k trminos (desde Xk-1 a X0). La divisin se desarrolla de la forma conocida salvo que la resta se trabaja en modulo 2 (con xor) y las magnitudes del divisor y dividendo no cuentan en la determinacin de si est o no contenido el divisor en el dividendo. Todo lo que interesa es el n de bits del divisor el cual comienza con 1 sea igual al n de bits del dividendo, el cual para la comparacin se requiere empiece con 1. Transmisor y Receptor coinciden de antemano en un polinomio generador G(X) de grado r con r+1 bits y la restriccin de que tanto el bit de mayor orden como menor

orden sea 1. A partir de un frame M(X) de m bits, dato a transmitir, la idea es incorporar el checksum al final del frame de manera tal que resulte divisible por G(X). Si en el receptor al dividir por G(X) a este frame con checksum da un resto distinto de 0, se detecta error de transmisin. En caso de producirse uno o varios errores de transmisin, el frame recibido se ver como T(X)+E(X) donde el polinomio E(X) tendr un 1 en aquellas posiciones que se produjo un error. La deteccin del burst depender de si G(X) divide o no a E(X). Si G(X) es al menos de dos bits (r=1), es claro que detecta un bit de error. Dado que la longitud de E(X) es menor que la cantidad de bits de G(X), el resto ser distinto de 0 para cualquier burst de error de longitud menor o igual a r. La posibilidad de no detectar error depende de la coincidencia de las posiciones internas de los r-1 bits, luego, la posibiladad de no ser detectado, asumiendo igual probabilidad en las distintas posisiones es 2-r+1. La posibilidad de detectaro es 1-2-r+1, se da con longitud de burst r+1. El xor trata a los 0s ya los 1s por igual, a diferencia del AND y el OR, de aqu el a analizar el caso de igual longitud, si el dividendo es igual a G(X) el resto ser cero y el burst no se detecta. Algoritmo CRC: Si G(X) es de grado r agregar r 0s a la derecha de M(x), el cual contendr de tal forma m+r bits. Dividimos el polinomio nuevo (Xr.M(X)) por G(X) usando el esquema visto. El resto (R(X)), que tendr un n bits (nr), constituye el checksum de M(X). As, el Transmited Frame T(X)=M(X)R(X).

You might also like