Proyectos de Vida

Proyectos de Vida

lunes, 19 de septiembre de 2011

ARQUITECTURA DEL COMPUTADOR








Se puede definir la arquitectura de computadores como el estudio de la estructura, funcionamiento y diseño de computadores. Esto incluye, sobre todo a aspectos de hardware, pero también afecta a cuestiones de software de bajo nivel.
Computador, dispositivo electrónico capaz de recibir un conjunto de instrucciones y ejecutarlas realizando cálculos sobre los datos numéricos, o bien compilando y correlacionando otros tipos de información.


  • ENTRADA Y SALIDA
  • Funciones que realiza
  • Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos de entrada/salida:
    • Direccionamiento o selección del dispositivo que debe llevar a cabo la operación de E/S.
    • Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido).
    • Sincronización y coordinación de las operaciones.
    Esta última función es necesaria debido a la deferencia de velocidades entre los dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes diferentes).
    Se define una transferencia elemental de información como la transmisión de una sola unidad de información (normalmente un byte) entre el procesador y el periférico o viceversa. Para efectuar una transferencia elemental de información son precisas las siguientes funciones:
    • Establecimiento de una comunicación física entre el procesador y el periférico para la transmisión de la unidad de información.
    • Control de los periféricos, en que se incluyen operaciones como prueba y modificación del estado del periférico. Para realizar estas funciones la CPU gestionará las líneas de control necesarias.
    Definiremos una operación de E/S como el conjunto de acciones necesarias para la transferencia de un conjunto de datos (es decir, una transferencia completa de datos). Para la realización de una operación de E/S se deben efectuar las siguientes funciones:
    • Recuento de las unidades de información transferidas (normalmente bytes) para reconocer el fin de operación.
    • Sincronización de velocidad entre la CPU y el periférico.
    • Detección de errores (e incluso corrección) mediante la utilización de los códigos necesarios (bits de paridad, códigos de redundancia cíclica, etc.)
    • Almacenamiento temporal de la información. Es más eficiente utilizar un buffer temporal específico para las operaciones de E/S que utilizan el área de datos del programa.
    • Conversión de códigos, conversión serie/paralelo, etc.
  • Dispositivos externos
  • Una de las funciones básicas del computador es comunicarse con los dispositivos exteriores, es decir, el computador debe ser capaz de enviar y recibir datos desde estos dispositivo. Sin esta función, el ordenador no sería operativo porque sus cálculos no serían visibles desde el exterior.
    Existe una gran variedad de dispositivos que pueden comunicarse con un computador, desde los dispositivos clásicos (terminales, impresoras, discos, cintas, cte.) hasta convertidores A/D y D/A para aplicaciones de medida y control de procesos, De todos los posibles periféricos, algunos son de lectura, otros de escritura y otros de lectura y escritura (es importante resaltar que este hecho siempre se mira desde el punto de vista del proceso). Por otra parte, existen periféricos de almacenamiento también llamados memorias auxiliares o masivas.
    La mayoría de los periféricos están compuestos por una parte mecánica y otra parte electrónica. Estas partes suelen separarse claramente para dar una mayor modularidad. A la componente electrónica del periférico se le suele denominar controlador del dispositivo o, también, adaptador del dispositivo. Si el dispositivo no tiene parte mecánica (como, por ejemplo, la pantalla de un terminal), el controlador estará formado por la parte digital del circuito. Frecuentemente los controladores de los dispositivos están alojados en una placa de circuito impreso diferenciada del resto del periférico. En este caso es bastante habitual que un mismo controlador pueda dar servicio a dispositivos de características similares.
    El principal problema planteado por los periféricos es su gran variedad que también afecta a las velocidades de transmisión. Por tanto, el mayor inconveniente que encontramos en los periféricos es la diferencia entre sus velocidades de transmisión y la diferencia entre éstas y la velocidad de operación del computador.
  • Uso de interrupciones
  • Un computador debe disponer de los elementos suficientes para que el programador tenga un control total sobre todo lo que ocurre durante la ejecución de su programa. La llegada de una interrupción provoca que la CPU suspenda la ejecución de un programa e inicie la de otro (rutina de servicio de interrupción). Como las interrupciones pueden producirse en cualquier momento, es muy probable que se altere la secuencia de sucesos que el programador había previsto inicialmente. Es por ello que las interrupciones deber controlarse cuidadosamente.
    De esta forma, podemos resumir todos las etapas seguidas ante una interrupción en un sistema dotado de vectorización. Estos pasos son los siguientes:
  • El dispositivo envía la solicitud de interrupción mediante la línea INTR.
  • El procesador termina la ejecución de la instrucción en curso y analiza la línea de petición de interrupción, INTR. Si esta línea no está activada continuará normalmente con la ejecución de la siguiente instrucción, en caso contrario se pasa a la etapa siguiente.
  • La CPU reconoce la interrupción, para informar al dispositivo de ello, activa la línea de reconocimiento de interrupción, INTA.
  • El dispositivo que reciba la señal INTA envía el código de interrupción por el bus de datos.
  • La CPU calcula la dirección de memoria donde se encuentra la rutina de servicio de interrupción (vector de interrupción).
  • El estado del procesador, y en particular el contador de programa, se salva en la pila de la misma forma que en una llamada a procedimiento.
  • La dirección de la rutina de servicio de interrupción se carga en el contador de programa, con lo que se pasa el control a la citada rutina.
  • La ejecución continúa hasta que el procesador encuentre la instrucción de retorno de interrupción.
  • Cuando se encuentre la instrucción de retorno de interrupción se restaura el estado del procesador, en especial el contador de programa, y se devuelve el control al programa interrumpido.
  • Normalmente la primera instrucción de la rutina de servicio tendrá como fin desactivar las interrupciones para impedir el anidamiento, por otra parte, antes de devolver el control al programa interrumpido se volverán a habilitar si es necesario.
  • Tipos
        • Dispositivos de entrada
    Estos dispositivos permiten al usuario del ordenador introducir datos, comandos y programas en la CPU. El dispositivo de entrada más común es un teclado similar al de las máquinas de escribir. La información introducida con el mismo, es transformada por el ordenador en modelos reconocibles. Otros dispositivos de entrada son los lápices ópticos, que transmiten información gráfica desde tabletas electrónicas hasta el ordenador; joysticks y el ratón o mouse, que convierte el movimiento físico en movimiento dentro de una pantalla de ordenador; los escáneres luminosos, que leen palabras o símbolos de una página impresa y los traducen a configuraciones electrónicas que el ordenador puede manipular y almacenar; y los módulos de reconocimiento de voz, que convierten la palabra hablada en señales digitales comprensibles para el ordenador. También es posible utilizar los dispositivos de almacenamiento para introducir datos en la unidad de proceso. Otros dispositivos de entrada, usados en la industria, son los sensores.
        • Dispositivos de Entrada/Salida
    Los dispositivos de almacenamiento externos, que pueden residir físicamente dentro de la unidad de proceso principal del ordenador, están fuera de la placa de circuitos principal. Estos dispositivos almacenan los datos en forma de cargas sobre un medio magnéticamente sensible, por ejemplo una cinta de sonido o, lo que es más común, sobre un disco revestido de una fina capa de partículas metálicas. Los dispositivos de almacenamiento externo más frecuentes son los disquetes y los discos duros, aunque la mayoría de los grandes sistemas informáticos utiliza bancos de unidades de almacenamiento en cinta magnética. Los discos flexibles pueden contener, según sea el sistema, desde varios centenares de miles de bytes hasta bastante más de un millón de bytes de datos. Los discos duros no pueden extraerse de los receptáculos de la unidad de disco, que contienen los dispositivos electrónicos para leer y escribir datos sobre la superficie magnética de los discos y pueden almacenar desde varios millones de bytes hasta algunos centenares de millones. La tecnología de CD-ROM, que emplea las mismas técnicas láser utilizadas para crear los discos compactos (CD) de audio, permiten capacidades de almacenamiento del orden de varios cientos de megabytes (millones de bytes) de datos. También hay que añadir los recientemente aparecidos DVD que permiten almacenar más de 4 Gb de información.
        • Dispositivos de salida
    Estos dispositivos permiten al usuario ver los resultados de los cálculos o de las manipulaciones de datos de la computadora. El dispositivo de salida más común es la unidad de visualización, que consiste en un monitor que presenta los caracteres y gráficos en una pantalla similar a la del televisor. Por lo general, los monitores tienen un tubo de rayos catódicos como el de cualquier televisor, aunque los ordenadores pequeños y portátiles utilizan hoy pantallas de cristal líquido (LCD, acrónimo de Liquid Crystal Displays) o electroluminiscentes. Otros dispositivos de salida más comunes son las impresoras, que permiten obtener una copia impresa de la información que reside en los dispositivos de almacenamiento, las tarjetas de sonido y los módem. Un módem enlaza dos ordenadores transformando las señales digitales en analógicas para que los datos puedan transmitirse a través de las líneas telefónicas convencionales.




    hardware y software

    

    Conceptos básicos.

    Día con día las computadoras ganan terreno en las actividades humanas, ya sea como una herramienta para quien las realiza o como un substituto de éste. La capacidad de un computador para realizar cálculos, procesar datos, generar información e inlcusive simular procesos y eventos naturales o artificiales las convierten en herramientas universales únicamente limitadas por su propia capacidad. Este límite es el principal impulsor de la creciente demanda sobre computadores cada vez más poderosos y de mayores prestaciones.
    Las computadoras están presentes en todas nuestras actividades cotidianas, permitiéndonos hacer más rápido las tareas e inclusive incorporando una mayor cantidad de datos. Sin embargo, para la mayoría de nosotros pasan desapercibidas muchas otras actividades que demandan una velocidad y capacidad de manejo de datos mucho muy por arriba de lo necesitamos para nuestras labores diarias. Actividades que pertenecen a disciplinas académicas, a labores industriales, económicas o de la milicia requieren manejar grandes volúmenes de datos, procesarlos a través de inmunerables o complejos cálculos y obtener resultados en razonables lapsos de tiempo. Por ejemplo, podemos mencionar el análisis estructural, predicción meteorológica, investigaciones nucleares y de alta energía, diagnóstico médico, simulaciones para fluidos (aerodinámica o hidrodinámica), inteligencia artificial y sistemas expertos, navegación y detección, defensa, ingeniería química y genética, socioeconomía, y muchas otras más. En todos estos casos, la creciente demanda por manejar volúmenes de datos cada vez mayores, con mayor precisión o más rápidamente llega a sobrepasar pronto las capacidades de los computadores disponibles. Se busca entonces que la construcción de mejores computadores logren avances subtanciales en su rendimiento.
    El logro de un elevado rendimiento no depende solamente de hacer que el computador funcione cada vez más rápido. Principalmente, la mejora en el rendimiento del computador se obtendrá de mejoras en la "arquitectura" de éste y en el desarrollo de nuevas técnicas de procesamiento. El concepto de arquitectura de un computador se refiere a la integración de su estructura física con su estructura lógica. Se utiliza el término "arquitectura" para enfatizar la síntesis de elementos de ingeniería y ciencias exáctas con elementos estéticos y de funcionalidad práctica, de la misma manera en que un arquitecto combinará las técnicas y conocimientos de la ingeniería con la apreciación artística e integración de su obra con su entorno. Lo que el arquitecto realiza no sólo debe mantenerse en pie durante el tiempo sino que también debe permitir cumplir el objetivo para el cual fue construido y resultar del agrado para quien lo use.
    Así la disciplina dedicada a la construcción, estudio y aplicación de los computadores recibe el nombre de Arquitectura de Computadores y puede ser dividida en cinco partes fundamentales: entrada y salida, comunicaciones, control, procesamiento y almacenamiento. Esta es de interés tanto para los ingenieros en electrónica y computación, dedicados al diseño de hardware, como para los científicos en computación e ingenieros de software, dedicados al diseño de programas. Asimismo, la arquitectura de computadores es un concepto que integra software, hardware, algoritmos y lenguajes de programación para el procesamiento de datos y la generación de información.
    El diseño y construcción de computadores es frecuentemente visto como labor de un ingeniero más que de un científico. Sin embargo, las demandantes necesidades de equipos de cómputo cada vez más veloces y poderosos requiere de la aplicación práctica de diversos conceptos teóricos. Tales necesidades, involucran computadores individuales (uniprocesadores), computadores compuestos (multiprocesadores) y supercomputadores.
    Por la complejidad con la que se encuentran interrelacionados los elementos físicos y lógicos que integran a un computador es imposible considerar únicamente a los de un tipo durante la fase de diseño. Tan importante es el hardware que permite realizar lo que deseamos como el software que nos permite expresarlo y controlarlo. En la arquitectura de computadores una computadora es vista como un sistema de cómputo y como tal se requiere de un amplio conocimiento de las estructuras de hardware y software junto con las estrechas interacciones con los algoritmos usados (para el cálculo o asignación de recursos).
    En el diseño de una computadora existen varios elementos que se toman en cuenta, medidos principalmente en términos de desempeño y costo. Métricas secundarias son la tolerancia a fallas, funcionalidad, y factores ambientales (tamaño, enfriamiento y ruido). Por supuesto, esto sin perder de vista el objetivos principales como son el diseño de computadores potentes y de costo razonable, permitir la realización de programas eficientes que resulevan un problema computacional, y ofrecer las interfaces adecuadas para el usuario.
    Finalmente, y considerando todo lo expuesto hasta este momento, veremos que en un curso de esta naturaleza los objetivos deben cubrir la presentación de todo el conocimiento necesario para el diseño de una nueva computadora o mejorar una ya existente y el desarrollo de algoritmos eficientes tanto para la solución de problemas como para que hagan el mejor uso del hardware disponible.
    El desarrollo de dispositivos de cálculo no se limita al siglo XX. Mucho antes de la aparición de los primeros computadores electrónicos hubo calculadores electromecánicos y, mucho, mucho antes que éstos existieron dispositivos mecánicos. Para una cronología detallada sugeriremos que se consulte la Historia de la Computación e Informática. Aquí sólo mencionaremos de manera genérica la clasificación cronológica dada por las características tecnológicas. Es importante considerar que la tecnología no cambia de la noche a la mañana, ni siquiera de un año para otro. La adopción de nueva tecnología es un proceso que toma tiempo y dependiente de la substitución de la anterior. En la siguiente clasificación cronológica los periodos descritos aparecen superpuestos por esta razón y los periodos están delimitados por el tiempo en el que se asume la tecnología característica dominaba el mercado.

    La prehistoria (5000 a.c. - 1650).

    Los primeros dispositivos de cálculo desarrollados por el hombre consistieron de cuentas y huesos usados para la contabilización (numeración) de objetos de uso cotidiano (animales, personas, utensilios, etcétera). El desarrollo de la aritmética y las actividades del ser humano (científicas, comerciales y de navegación) obligaron al desarrollo de métodos de conteo, cálculo y registro más rápidos y permanentes como las tablillas de arcilla y el ábaco. Los primeros algoritmos comienzan a desarrollarse y a escribirse. Para finales de esta era las primeras reglas de cálculo comienzan a aparecer.

    La era mecánica (1620-1940).

    Durante este periodo las reglas de cálculo son perfeccionadas. Con el desarrollo de los primeros dispositivos mecánicos destinados a la relojería y juguetes, a partir del primer cuarto del siglo XVII comienzan a desarrollarse las primeras reglas de cálculo mecánicas o calculadoras. Para finales del siglo XIX y primer cuarto del siglo XX los primeros dispositivos electromecánicos comienzan a aparecer.

    La primera generación (1938-1953).

    Con la aparición de los primeros computadores analógicos y discretos electromecánicos en 1938 y 1939, y posteriormente electrónicos en 1946, se marca el inicio de la primera generación de computadores. Los relés electromecánicos son usados como dispositivos de conmutación durante los años 40 y posteriormente son reemplazados por las válvulas de vacío (bulbos) durante los años 50. Además de los elementos de conmutación usados, estos equipos se caracterizaban por estar interconectados por cables aislados.
    La estructura del procesador era bit-serie, lo que obligaba a que la aritmética se efetuara bit a bit y sin punto flotante. En estos computadores sólo se empleaba el lenguaje máquina codificado en binario. Con la aparición del concepto de programa almacenado con la EDVAC se pudo liberar al usuario de las molestias de programación de bajo nivel, que implicaban, literlmente, el re-alambrado de todo el equipo. Para finales de esta era los equipos como el IBM 701 empleaban memoria de tubo Williams, tambores y cintas magnéticas.

    La segunda generación (1952-1963).

    El primer computador digital transistorizado, el Tradic (Transistorized Digital Computer) fue construido por los laboratorios Bell en 1954, el cual hizo uso de las memorias de núcleo de ferrita y corrientes coincidentes. Los lenguajes ensambladores siguieron utilizándose hasta la aparición de lenguajes de alto nivel como el Fortan (1957), Cobol (1959) y Algol (1960). En esta etapa también hacen su aparición los primeros circuitos impresos.
    En 1959, Sperry Rand e IBM presentan e inician, respectivamente, sistema y proyecto, en computadores con incrementos de rendimiento atribuibles a la arquitectura. El primer computador científico transistorizado, el IBM 1620 estuvo listo para 1960. Los paquetes de disco intercambiables se introdujeron hasta 1963. El modo usual de procesamiento era por lotes procesando secuencialmente los programas.
    Durante este etapa IBM lleva a cabo la reingeniería de su sistema IBM 709 para emplear la tecnología de transistores. El resultado, la IBM 7090 era capaz de efectuar casi 5x105 adiciones por segundo y fue tan exitoso que se vendieron alrededor de 400 unidades.

    La tercera generación (1962-1975).

    Con la aparición de los circuitos integrados de pequeña escala (SSI, Small-Scale Integration) y su posterior utilización se marca el inicio de la tercera generación de computadoras. También, los circuitos impresos multicapa comienzan a ser utilizados. Hacia 1968 los computadores más rápidos comienzan a substituir las memorias de ferrita por memorias de estados sólido. Los lenguajes de programación de alto nivel reciben un fuerte impulso con el desarrollo de compiladores inteligentes.
    La multiprogramación se introduce como una forma de permitir la ejecución simultánea de varios programas intercalados en las operaciones de E/S. Los sistemas operativos de tiempo compartido estuvieron disponibles a finales de los años 60 y los primeros computadores vectoriales aparecieron al inicio de los 70. El concepto de memoria virtual aparece haciendo uso de sistemas de memoria jerárquicamente estructurados.

    La cuarta generación (1972-actualidad).

    Los computadores de la presente generación comenzaron haciendo uso de tecnología LSI (Large-Scale Integration) y con los avances en el desarrollo de circuitos integrados de alta densidad hoy en día hacen uso de circuitos VLSI (Very Large-Scale Integration). Los lenguajes de programación se han expandido para manejar y expresar diferentes estructuras y conceptos temporales y espaciales. Los computadores comerciales hacen uso de un alto grado de multiprocesamiento a traves de varios procesadores y segmentación encauzada para obtener incrementos substanciales de rendimiento y capacidades de cómputo. A inicios de la década de los 80 el concepto del procesamientoen paralelo masivo hace su aparición.

    Tendencias y futuros desarrollos.

    El fracaso del proyecto japonés del desarrollo de una nueva generación de computadores ha dejado entrever que la tecnología actual, si bien nos podrá proporcionar computadores más veloces durante algunos años más, resulta impráctica para la demanda de tareas computacionalmente más complejas. Hemos evolucionado del cálculo aritmético automatizado al procesamiento de información pasando por el procesamiento de datos. Inclusive ya podemos entrever que estamos haciendo avances en el procesamiento del conocimiento. Sin embargo, las evidencias indican que las tecnologías y técnicas desarrolladas resultarán poco prácticas para la consecuencia lógica a la que nos lleva el desarrollo evolutivo de nuestro desarrollo informático y computacional.
    En los años venideros requeriremos que nuestros computadores sean capaces de tratar problemas computacionalmente mucho más complejos y demandantes y que, posiblemente, deban ser capaces de tratar con conocimiento más que con información. Una de las metas que ha sido perseguida desde la aparición de los primeros ingenios mecánicos, el desarrollo de una consciencia, podría ser realidad bajo los nuevos desarrollos.
    Actualmente se están siguiendo muchos caminos. La descendencia directa del desarrollo computacional tradicional se enfoca actualmente en proyectos de computadores masivamente paralelos (arreglos de procesadores, flujo de datos, redes neuronales). Sin embargo, los avances en otras disciplinas han abierto nuevas ramas de investigación como son la lógica difusa (fuzzy sets), el cómputo molecular, y el cómputo cuántico.
    La base de tecnológica actual para el diseño y construcción de equipo de cómputo y control automatizado es una rama de la electrónica que recibe el nombre de electrónica digital.
    Los impulsos eléctricos que alimentan a los componentes y circuitos digitales son se¤ales discretas.
    .

    No hay comentarios:

    Publicar un comentario