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.
- 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.
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.
- 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.
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.
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:
- Dispositivos de entrada
- Dispositivos de Entrada/Salida
- Dispositivos de salida
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