¿Que es la arquitectura de la computadora? Se trata del conjunto de estructuras tanto físicas como lógicas que influyen de manera directa en las funciones y diseño del Hardware de una máquina, teniendo estas características, también influencia en el Software; siendo el objetivo primordial de la arquitectura el aumento del rendimiento de las computadoras - Elementos básicos de la arquitectura de la computadora A inicios de 1800, Charles Babbage, profesor de la Universidad de Cambridge, fue el primero en idear las variables involucradas en los sistemas mecánicos de la época y define los 3 elementos que intervienen: la máquina, el programa y el artífice ó programador, de allí que los elementos que intervienen para que el sistema funcione son los siguientes: 1.- Humanware: es el elemento humano, quién tienen una gran gama de funciones en general, entre ellas la de controlar el funcionamiento del equipo, manejar las operaciones, crear el Software para la máquina, reparar los equipos; de allí que se puede especializar en ciertas ramas como programador, diseñador de gráficos, operador capturista, Gamer, administrador de bases de datos, soporte Hardware, etc. 2.- Software: se trata del conjunto de utilidades, sistemas operativos, suites, datos, etc., lo que de manera común se le denomina parte intangible de la computadora y que se encuentra basada en interpretaciones de ceros y unos (bits). 3.- Hardware: se trata del soporte físico del equipo, no solamente de almacenamiento, sino en general toda parte mecánica y electromecánica que tenga una función en el dispositivo, tal como el disco duro, el ratón, los puertos, etc. - Arquitectura de Von Neumman En 1945 aproximadamente, se construye una computadora basada en el uso de tecnología de bulbos denominada ENIAC ("Electronic Numerical Intergator and Calculator"), que pesaba cerca de 30,000 Kg, se instaló en una gran habitación y requirió de gran ventilación. Bien, esta gran máquina funcionaba a base de estar conectando y desconectando cables según la función que se quería que realizara, esta función de "recablear", es sinónimo de programar pero era muy complicado el proceso. En 1947 el matemático John Von Neumann ideó una solución que evitaría el "recablear" la ENIAC, la cuál consistía en introducir las operaciones por medio de tarjetas perforadas, por lo que un programa previamente "almacenado" y en las tarjetas, se podía mantener latente en memoria para su uso. Este modelo permite que las instrucciones se encuentren residentes en una memoria listas para ser leídas y ejecutadas. Figura 4. Diagrama de la arquitectura de Von Neumann + Memoria principal: se trata de un espacio de almacenamiento temporal de instrucciones y datos, ordenada de manera reticular para localizar de manera sencilla mediante direcciones, dividida en dos partes una para trabajo y otra permanente. En términos modernos, es la memoria RAM que actualmente utilizamos en nuestros equipos. + Unidad aritmética: encargada de realizar todas las actividades matemáticas y de decisión lógicas, cada dato lo recibe de la memoria principal y en ella misma almacena. En términos modernos, es una sección dentro de los microprocesadores. + Unidad de control: controla las señales, lee instrucciones de la memoria y ejecuta las órdenes, también almacena direcciones de la siguiente instrucción que requiere. En términos modernos, es otra sección dentro de los microprocesadores. + Unidad de E/S: (entrada/salida) permite la comunicación con otros dispositivos externos y el compartir datos. En términos modernos, son los puertos de la computadora. Es importante mencionar que lo anterior es un modelo básico, no hay que olvidar que también hacen falta otros elementos que no entran dentro de la clasificación de Neumann pero que también son importantes como la fuente de suministro de electricidad y la placa base, además de otros secundarios como la unidad de soporte Hardware (gabinete), los ventiladores, etc. - Arquitectura multiusuario A inicios de 1970, basándose en la arquitectura de Non Neumann, se le realiza una mejora, integrando un DMA (Direct Access Memory) ó acceso directo a memoria, la cuál permite que los dispositivos se comuniquen de manera directa con la memoria sin la necesidad de la intervención del microprocesador, por lo que este último puede entonces dedicarse a otras actividades y se libera de carga de trabajo, con ello se vuelve mas eficiente el sistema. De este modo el procesador asigna tiempos a varios usuarios y cada uno percibe que que trabaja de manera exclusiva con Figura 5. Diagrama de la arquitectura un equipo. multiusuario El explorador no admite los marcos flotantes o no está configurado actualmente para mostrarlos. - Arquitectura multiproceso Durante los años 70, se desarrolla un tipo nuevo de arquitectura denominada multiproceso, en la cuál se asignan tiempos a los procesos los cuáles pueden permanecer en varios estados como "modo espera", "modo ejecución", "modo cancelación" y "fin de proceso". El modo multiproceso necesita de una gran cantidad de memoria física disponible en el equipo. Figura 6. Diagrama de la arquitectura multiproceso - Arquitectura basada en memoria virtual Debido al alto costo relativo de la memoria y que la arquitectura multiproceso necesita de grandes cantidades de memoria disponible, se opto por un sistema de emulación de la misma, utilizado el espacio libre de dispositivos como discos duros ó disquetes (actualmente un ejemplo muy popular es la función del Software ReadyBoost de Microsoft® Windows Vista que permite utilizar el espacio disponible en memorias USB ó unidades SSD). Figura 7. Diagrama de la arquitectura basada en memoria virtual - Arquitectura de las redes de datos LAN A finales de la década de los anos 70 hasta la fecha en las redes mas avanzadas, se utiliza esta arquitectura que interconecta los equipos entre sí ó los concentra en uno principal llamado servidor ó Host. Esta arquitectura permite que se compartan recursos tanto Hardware como Software y reduce costos de operación. Figura 8. Diagrama de la arquitectura de redes La arquitectura Von Neumann realiza o emula los siguientes pasos secuencialmente: 1) Obtiene la siguiente instrucción desde la memoria en la dirección indicada por el contador de programa y la guarda en el registro de instrucción. 2) Aumenta el contador de programa en la longitud de la instrucción para apuntar a la siguiente. 3) Descodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el resto de componentes del ordenador para realizar una función determinada. 4) Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa, permitiendo así operaciones repetitivas. 5) Regresa al paso N° 1. Conclusión: * La mayoría de las computadoras todavía utilizan la arquitectura Von Neumann, propuesta a principios de los años 40 por John Von Neumann. * La arquitectura Von Neumann describe a la computadora con 4 secciones principales: la unidad lógica y aritmética (ALU), la unidad de control, la memoria, y los dispositivos de entrada y salida (E/S). * En este sistema, la memoria es una secuencia de celdas de almacenamiento numeradas, donde cada una es un bit, o unidad de información. La instrucción es la información necesaria para realizar, lo que se desea, con la computadora. Las celdas contienen datos que se necesitan para llevar a cabo las instrucciones, con la computadora. * El tamaño de cada celda y el número de celdas varía mucho de computadora a computadora, y las tecnologías empleadas para la memoria han cambiado bastante; van desde los relés electromecánicos, tubos llenos de mercurio en los que se formaban los pulsos acústicos, matrices de imanes permanentes, transistores individuales a circuitos integrados con millones de celdas en un solo chip. ¿Cómo funciona la computación actual?: funcionamiento de la arquitectura de Von Neumann comentarios 10 Guardar Compartir en Facebook Twitter Google+ E-mail Von Neumann describió el fundamento de todo ordenador electrónico con programas almacenados. Describía, a diferencia de como pasaba anteriormente, como podía funcionar un ordenador con sus unidades conectadas permanentemente y su funcionamiento estuviese coordinado desde la unidad de control (a efectos prácticos es la CPU). Aunque la tecnología ha avanzado mucho y aumentado la complejidad de la arquitectura inicial, la base de su funcionamiento es la misma y probablemente lo seguirá siendo durante mucho tiempo. El artículo viene acompañado de una representación gráfica del funcionamiento. Antes de entrar en los detalles de las unidades tenemos que conocer lo siguiente: Registros: es el lugar donde se almacenan temporalmente los datos que están en movimiento para procesarlos. En la representación de la imagen del principio podéis ver que son los registros. Buses: son las uniones entre las distintas unidades, la memoria y los periféricos. Unidad de proceso central (CPU) Es la unidad encargada de controlar y gobernar todo el sistema que comprende una computadora. La CPU consiste en un circuito integrado formado por millones de transistores, que está diseñado para poder procesar datos y controlar la máquina. Como ya sabéis, es un factor clave para la potencia de la computadora. La CPU dispone de dos unidades en su interior: la unida de control y la unidad aritmético-lógica. Unidad de control La unidad de control se encarga de leer las instrucciones (de los programas almacenados en la memoria) y se encarga de enviar las ordenes a los componentes del procesador para que ejecuten las instrucciones. El proceso empieza cuando llega una instrucción al registro de instrucciones (llega como una cadena de bits con distintas partes, referidas a la propia instrucción y a los datos que se usarán). Posteriormente el decodificador interpreta la instrucción a realizar y como deben de actuar los componentes del procesador para llevarla a cabo. Esta acción se realiza mediante el secuenciador que envía micro-órdenes marcadas por el reloj (que genera pulsos de forma constante, se suele expresar su velocidad en gigahercios o GHz, para los procesadores actuales). Unidad Aritmético Lógica (ALU) La unidad aritmético lógica es la encargada de realizar todas las operaciones aritméticas (sumas, multiplicaciones…) y lógicas (comparaciones). Esta unidad puede tener distintos diseños, el de la imagen superior muestra el diseño más básico (donde el acumulador vuelve a usarse en la operación), en la actualidad lo normal es que el acumulador no se mezcle con los registros de entrada. El funcionamiento con el diseño que estamos analizando (el básico) comienza cuando le llega al registro de entrada un dato (una cadena de bits que representan un número), posteriormente el circuito operacional (en la imagen se representa como “ALU” y coloreado azul) y se procesa junto al contenido del acumulador y posteriormente se deposita de nuevo en el acumulador. Repitiendo esta acción se generan los cálculos. Este proceso se ve claramente en la representación que hay más abajo. Memoria principal La memoria principal en la arquitectura inicial era directamente la RAM, pero esto ha evolucionado y se han añadido memorias caché e implementado algoritmos que predicen que datos vamos a usar más frecuentemente. La memoria RAM es bastante sencilla, en comparación con la CPU, se podría decir que es una tabla, que contiene la dirección (o lugar) donde está cierto dato y el contenido del propio dato. La memoria dispone de un registro de direcciones (RDM) y un registro de intercambio de memoria (RIM o registro de datos). En el registro de direcciones se almacena la dirección en la que se almacenará o leerá un dato, y en el registro de intercambio de memoria se almacena ese dato leído o que se almacenará. Cuando hablamos de direcciones de memoria a muchos os sonará de los “punteros” de C, y es por esto que es esencial conocer la arquitectura de Von Neumann antes de aprender a programar en ciertos lenguajes que actúan a más bajo nivel. La unidad de control contiene el registro contador de programa, que contiene la dirección de memoria de la siguiente instrucción, que se incrementa tras realizar una instrucción y así va recorriendo la memoria y ejecutando el programa. Buses Todos estos elementos se comunican entre si a través de buses, ya sea para manejar las acciones a realizar por la máquina o para mover datos. Hay tres tipos de buses. El bus de datos perite el intercambio de datos (ya sean instrucciones o datos) con el resto de elementos de la arquitectura. Es decir, mediante el bus de datos la unidad de control recibe las instrucciones y la ALU los datos desde la memoria, al igual que también los envían por este medio. El bus de instrucciones transmite las direcciones de memoria que van a ser usadas desde la CPU, para poder seleccionar los datos que serán usados. El bus de control es el que transporta las ordenes generadas por la CPU para controlar los diversos procesos de la máquina. Funcionamiento de la arquitectura Para ver cómo funciona la arquitectura he creado una representación documentada del proceso. Este diseño de la arquitectura, como ya he comentado, es el básico (con acumulador como registro de entrada) y el ancho de los datos es de 8 bits. Las instrucciones están formadas por dos bloques de 4 bits, los primeros para instrucciones y los últimos para la dirección de la memoria. Siempre que se usa en una instrucción un número está destinado a la dirección de memoria, donde se usa el verdadero número que se usará para una operación. Actualmente se usan anchos de 32, 64 o 128 bits en computadoras, y no tiene porqué seguir el mismo patrón. Seguidamente voy a exponer varios patrones que se pueden dar, a fin de completar un poco más la representación que es muy simple al disponer solo de 8 bits. # Tal como aparece en la representación 0111 0011 +------+------+ | 0111 | 0011 | +------+------+ | | Dirección de memoria a usar | Instrucción # Ejemplo con 16 bits y varios registros 0011 1010 1001 0101 +------+--------+--------+ | 0011 | 101010 | 010101 | +------+--------+--------+ | | | Registro de entrada 2 | | Registro de entrada 1 | Instrucción # Ejemplo con 32 bits, varios registros y lugar a almacenar resultado 0011 1010 1001 0101 0011 0110 1110 0101 +----------+----------+----------+----------+ | 00111010 | 10010101 | 00110110 | 11100101 | +----------+----------+----------+----------+ | | | | Dirección de destino del resultado | | | Registro de entrada 2 | | Registro de entrada 1 | Instrucción Nota: cada procesador es distinto, por lo que quizás alguno de los ejemplos sea verídico o similar a alguno en uso, pero no tiene porqué. Como había dicho, aquí tenemos la simulación documentada de como funciona la arquitectura de Von Neumann, que podéis ver con mayor tamaño también. (Es más cómodo pasar al siguiente paso pulsando enter). Resumen Aunque es un poco difícil de comprender a la primera es esencial conocer las bases de la computación cuando uno se dedica a la programación, y así llegar a comprender como afecta nuestros programas a la interacción del sistema. Aunque actualmente muchos lenguajes nos abstraen de todo esto, pero eso ya sería entrar en arquitectura del software.