# Arquitectura de computadoras

La arquitectura de computadoras, también llamada arquitectura de ordenadores en algunos casos, es el diseño conceptual y la estructura operacional fundamental de un sistema de computadoras. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (CPU) trabaja internamente y accede a las direcciones de memoria.
También la arquitectura del computador está basado en tres grandes principios que se aplican a todo dispositivo o componente del computador, estos tres principios son: velocidad, capacidad y tipo de conexión.
También suele definirse como la forma de interconectar componentes de hardware, para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.
La computadora recibe y envía la información a través de los periféricos, por medio de los canales. La CPU es la encargada de procesar la información que le llega a la computadora. El intercambio de información se tiene que hacer con los periféricos y la CPU. Pide considerarse que todas aquellas unidades de un sistema, exceptuando la CPU, se denomina periférico, por lo que la computadora tiene dos partes bien definidas, que son:
* La CPU (encargada de ejecutar programas y que también se considera compuesta por la memoria principal, la unidad aritmético lógica y la unidad de control).
* Los periféricos (que pueden ser de entrada, salida, entrada/salida, almacenamiento y comunicaciones).

## Introducción

La implantación de instrucciones es similar al uso de una serie de montaje en una fábrica de manufacturación. En las cadenas de montaje, el producto pasa a través de muchas etapas de producción antes de tener el producto armado. Cada etapa o segmento de la cadena está especializada en un área específica de la línea de producción y lleva a cabo siempre la misma actividad. Esta tecnología es aplicada en el diseño de procesadores eficientes.
A estos procesadores se les conoce como pipeline processors. Estos están compuestos por una lista de segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de tareas computacionales. Los datos que provienen del exterior se introducen en el sistema para ser procesados. La computadora realiza operaciones con los datos que tiene almacenados en memoria, produce nuevos datos o información para el uso externo.
Las arquitecturas y los conjuntos de instrucciones se pueden clasificar considerando los siguientes aspectos:
* Almacenamiento de operandos en la CPU: dónde se ubican los operadores aparte de la sustractora informativa y sus partes (SI).
* Cantidad de operandos explícitos por instrucción: cuántos operandos se expresan en forma explícita en una instrucción típica. Normalmente son 0, 1, 2 y 3.
* Posición del operando: ¿cualquier operando puede estar en memoria, o deben estar algunos o todos en los registros internos de la CPU?. Cómo se especifica la dirección de memoria (modos de direccionamiento disponibles).
* Operaciones: qué operaciones están disponibles en el conjunto de instrucciones.
* Tipo y tamaño de operandos y cómo se especifican.

## Puertas lógicas

Son las encargadas de procesar la lógica de las instrucciones del sistema. Existen siete tipos básicos diferentes:
* NOT: es la negación de la entrada. Funciona con una sola entrada y una sola salida.
* AND: es la multiplicación binaria de dos entradas y da una sola salida.
* OR: es la suma binaria de dos entradas y da como salida la suma propia o el bit carry de ser necesario.
* XOR: es la suma binaria de dos entradas y da el resultado como salida, sin incluir el bit carry.
* NAND: es la negación de AND. Da una única salida.
* NOR: es la negación de OR. Da una única salida.
* XNOR: es la negación de XOR. Da una única salida.

## Almacenamiento de operandos en la CPU

La diferencia básica está en el almacenamiento interno de la CPU. Las principales alternativas son:
* Acumulador.
* Conjunto de registros.
* Memoria.
Pero antes hay que tomar en cuenta que las informaciones procesadas son de suma importancia.

### Características

* En una arquitectura de acumulador, un operando está implícitamente en el acumulador siempre leyendo e ingresando datos (por ejemplo, una calculadora estándar).
* En la arquitectura de una pila no es necesario nombrar a los operandos ya que estos se encuentran en el tope de la pila (por ejemplo, calculadora de pila HP).
* La arquitectura de registros tiene solo operandos explícitos (es aquel que se nombra) en registros o memoria.

### Ventajas de las arquitecturas

* Pila:
** Modelo sencillo para evaluación de expresiones (notación polaca inversa).
** Instrucciones cortas pueden dar una buena densidad de código.
* Acumulador:
** Instrucciones cortas.
** Minimiza estados internos de la máquina (unidad de control sencilla).
* Registro:
** Modelo más general para el código de instrucciones parecidas.
** Automatiza generación de código y la reutilización de operandos.
** Reduce el tráfico a memoria.
** Una computadora tiene 32 registros, como estándar.
** El acceso a los datos es más rápido y veloz.

### Desventajas de las arquitecturas

* Pila:
** A una pila no se puede acceder aleatoriamente.
** Esta limitación hace difícil generar código eficiente.
** También dificulta una implementación eficiente, ya que la pila llega a ser un cuello de botella es decir que existe dificultad para la transferencia de datos en su velocidad mk.
* Acumulador:
** Como el acumulador es solamente almacenamiento temporal, el tráfico de memoria es el más alto en esta aproximación.
* Registro:
** Todos los operadores deben ser nombrados, conduciendo a instrucciones más largas.