← Volver al inicio

Resumen para el final de Organización del Computador I

Este es un resumen hecho para el final de Organización del Computador I, a rendir con Marcelo Risk. Yo rindo mañana, miércoles 20 de septiembre del 2017; pero supongo que esto puede servirle a cualquiera que vaya a rendir la materia en el futuro, así que lo voy poniendo acá a medida que avanzo con los temas. Es importante detallar que este es mi material de estudio y, como tal, puede que le falte algo o que ciertas cosas no estén explicadas del todo. Como siempre, no me hago responsable si no es el mejor apunte del mundo. Dicho esto, mi temario para el final se divide en cinco secciones: Arquitectura de von Neumann, Entrada/Salida, Memoria, Buses y Caché.

Arquitectura de von Neumann

La arquitectura de una computadora es un conjunto de reglas y métodos que describen la funcionalidad, la organización y la implementación de un sistema informático. Esto puede implicar el diseño de sus instrucciones, de su lógica y de su microarquitectura. Entre las diferentes arquitecturas existentes para un ordenador se encuentra la de von Neumann. Von Neumann amaba Los Álamos, donde se encontraba el laboratorio nacional de Los Álamos. Siempre que tenía un rato aprovechaba para ir ahí a cabalgar y a jugar al tennis con otros colegas, siempre vestido de traje. Allí se empezó a interesar por las computadoras y su aplicación matemática. En 1945 le propuso a su amigo Herman Goldstine, quien había colaborado en el desarrollo de la ENIAC (programada mediante enchufes e interruptores), armar una computadora que tuviera los programas almacenados dentro en una memoria en lugar de tener que ser operados a mano y ambos fueron rápidamente a la universidad de Princeton, donde construlleron la EDVAC. La EDVAC fue la primera computadora multipropósito con arquitectura de von Neumann. Conforme los años fueron avanzando, las capacidades de las computadoras se fueron multiplicando y la máquina que antes ocupaba una habitación pasó a ser un microchip. Es por esto que la Arquitectura de von Neumann, que fue una vez propuesta para computadoras, ahora se considera una arquitectura de procesador.

La arquitectura de von Neumann (o modelo de von Neumann o arquitectura de Princeton) es una arquitectura de procesador basada en la descrita por John von Neumann en su paper de 1945 "First Draft of a Report on the EDVAC" que se conforma de cuatro elementos escenciales: una CPU, memoria, elementos de entrada/salida y buses que interconectan todos estos elementos. Se dice que una computadora es una máquina de von Neumann cuando tanto los datos como el programa se almacenan en una memoria común, lo que produce que una misma instrucción pueda ser dato o comando según cómo se la interprete; cada celda de memoria se indica con un número único denominado "dirección"; y cada programa se ejecuta realizando un proceso secuencial denominado ciclo de instrucción que, por lo general, comienza con la primera palabra almacenada en la memoria.

La CPU

La CPU es la unidad encargada de procesar la información, entendido esto como recibir ciertos datos, operar sobre ellos y entregar otros datos de salida. La CPU también se compone de cinco elementos escenciales, una unidad de control, una ALU, registros y dos registros especiales llamados program counter y instruction register, que pueden a su vez componerse de uno o más registros cada uno.

La unidad de control es el director de orquesta que controla todo lo que pasa dentro del CPU. Es un componente que marca el paso de las instrucciones del CPU, y le indica a la memoria, a la ALU, a los dispositivos de entrada salida y a los registros cómo responder a las instrucciones de un programa.

La ALU, unidad aritmético-lógica, es un componente que realiza, electronicamente, las operaciones lógicas bit-a-bit necesarias para poder realizar operaciones de suma, resta, and-lógico y or-lógico entre números binarios enteros.

Los registros son unidades pequeñas de almacenamiento normalmente fabricadas con tecnología más rápida que la memoria principal, a los que se accede directamente dentro del CPU de manera más veloz. Ademas de los registros multipropósito provistos por la arquitectura, existen dos registros de propósito específico: el program counter, que indica el lugar siguiente a la posición de memoria en donde se encuentra la operación que está siendo ejecutada ahora mismo, y que aumenta luego de cada fetch de instrucción; y el instruction register, en donde se almacena la instrucción (y sus eventuales parámetros) que está siendo ejecutada.

El ciclo de instrucción

El ciclo de instrucción es la serie de pasos que una computadora sigue para ejecutar un programa. El proceso sigue el ciclo fetch, decode, execute (traer, decodificar y ejecutar) durante todo su ciclo de vida.

Fetch: El proceso comienza trayendo de memoria una instrucción y guardándola en el instruction register. La instrucción a traer será aquella que se encuentre en la posición de memoria indicada por el program counter. Finalmente, aumenta el program counter para apuntar a la siguiente palabra (nótese que palabra no indica posición de memoria. Si nuestras posiciones de memoria fueren de la mitad del largo de una palabra, el program counter aumentará en dos tras hacer un fetch en lugar de aumentar solo una unidad).

Decode: En la etapa de decode la unidad de control "decodifica" la instrucción traída, determinando de qué comando se trata y si es necesario o no traer palabras subsiguientes para poder realizar la operación que esta indica. Por ejemplo, sumar dos números requerirá traer más palabras de la memoria para los operandos.

Execute: la computadora ejecuta el comando y vuelve a iniciar el ciclo.

Limitaciones y la arquitectura de Harvard

El tener los datos y los programas almacenados en la misma memoria fue una revolución que posibilitó el desarrollo de las computadoras como las conocemos hoy. Sin embargo, el tener ambas cosas en el mismo lugar produce un cuello de botella: no puede ocurrír extracción común de datos y programa, ya que ambos tipos de dato comparten un mismo bus, así que si un programa quiere operar con datos primero habrá de traer el comando a ejecutar y luego traer los datos, lo que produce que una misma operación lleve más tiempo.

Asimismo, un programa puede reescribirse a sí mismo tomando parte de sí como dato, por lo que puede ser dañino para la ejecución del mismo u otros programas.

La arquitetectura de Harvard (llamada así por la Harvard Mark I, una calculadora multipropósito construida en Harvard en 1944, el mismo año que comenzó el desarrollo de la EDVAC - terminada en 1949) es una arquitectura que propone una separación entre las memorias de datos y programa, dedicando un bus específico para cada una. En el modelo original de la Mark I, el programa se ingresaba a partir de una cinta perforada, mientras que los datos eran ingresados antes de comenzar la ejecución utilizando perillas.


(Perillas y cinta perforada originales de la Harvard Mark I)

Arquitectura de conjunto de instrucciones (ISA)

La ISA - instruction set architecture - es la parte de la arquitectura de una computadora que se relaciona directamente con la programación de la computadora. Define los tipos nativos de datos que la computadora maneja, las instrucciones, los registros, los modos de direccionamiento, la arquitectura de memoria, el manejo de excepciones e interrupciones y el trato con los dispositivos externos de entrada salida.

Una parte muy importante de la ISA es la especificación del conjunto de códigos de operación (opcodes) y los comandos nativos implementados por un procesador particular.

Dispositivos de Entrada/Salida

Para que se pueda dar la comunicación entre un usuario y una computadora, debe existir algún dispositivo que permita ingresar datos en un ordenador y algún dispositivo que presente tales datos a un operador. Estos se denominan dispositivos de entrada/salida. Ejemplos de dispositivos de entrada pueden ser un teclado o una unidad de CD-Rom; mientras que dispositivos de salida pueden ser una impresora o un monitor. Normalmente se los diferencia según si es el sistema quien recibe o quien emite las señales.

En los métodos no DMA, unos componentes llamados módulos de entrada/salida se encargan del movimiento de datos entre la memoria principal y alguna interfaz particular. Las interfaces son unos componentes diseñados específicamente para comunicarse con ciertos tipos de dispositivos, haciéndose cargo del protocolo de comunicación entre la computadora y el dispositivo mencionado.

Para comunicarse con un dispositivo se realiza un procedimiento denominado mapeo de E/S. El mapeo de entrada salida puede ser de dos tipos:

Los dispositivo de entrada salida puede estar constantemente enviando y recibiendo datos. Para reaccionar frente a estos cambios, leer y escribir datos desde y hacia el dispositivo, existen tres métodos:

Como se puede ver, todos los métodos tienen ventajas y desventajas. Queda como ejercicio para el desarrollador decidir cuál usar en base a la situación que se presente.

Buses

Martín del Río, 2017.
Volver