- Arquitecturas de procesador
- Arquitectura del conjunto de instrucciones RISC y CISC
- Computación de conjunto de instrucciones complejas (CISC)
- Computación de conjunto de instrucciones reducido (RISC)
El sistema integrado es el corazón y el núcleo de la mayoría de los productos electrónicos disponibles en el mercado. Es la implementación de la ingeniería en la que el hardware se encuentra con el software. Estamos rodeados de un mundo de sistemas embebidos, con minicomputadoras en cerraduras biométricas de puertas, aviones, coches, marcapasos, etc. Estos sistemas limitados, pequeños, inteligentes y potentes nos ayudan en nuestras tareas diarias.
Alguna vez pensó en cómo funciona nuestro cuerpo, el sistema nervioso, el cerebro y la capacidad para realizar múltiples tareas. Si combina todas estas funciones, obtendrá una imagen aproximada de un sistema biológico integrado. Nuestro cerebro esconde el complejo detalle de su funcionamiento que tiene lugar dentro de él, pero nos permite controlarlo al máximo de su potencial. La misma complejidad se aplica al procesador o controlador utilizado en los sistemas integrados. Ocultan detalles complejos y nos proporcionan una interfaz de alto nivel sobre la que trabajar. Para el nivel de abstracción, se puede relacionar cómo el código para sumar dos números en un lenguaje de programación de alto nivel hace que los registros en los chips manejen bits y devuelvan una salida al usuario.
Arquitecturas de procesador
La Unidad Central de procesamiento, referida tanto al microprocesador como al microcontrolador, realiza tareas específicas con la ayuda de una Unidad de Control (CU) y una Unidad Aritmética Lógica (ALU). A medida que las instrucciones se entregan desde la RAM, la CPU actúa con la ayuda de sus dos unidades de ayuda creando variables y asignándoles valores y memoria. Es muy importante saber cómo la CPU realiza toda esta acción con la ayuda de su arquitectura. Si desea saber más sobre cómo funciona un microcontrolador, puede leer este artículo básico sobre microcontroladores.
Cada CPU tiene una memoria asociada para almacenar el programa y los datos. El programa y los datos trabajan con la CPU para obtener la salida. El programa proporciona la instrucción, mientras que los datos proporcionan la información sobre la que se trabajará. Para acceder al programa y a los datos, la CPU usa buses, estos buses son cables, más precisamente estos son los rastros de cables como puede haber visto en las placas de circuito impreso. A lo largo de estos años los microcontroladores y microprocesadores han evolucionado adaptando diversas arquitecturas, en función de la aplicación o los requisitos de diseño la selección del microcontrolador está influenciada por el tipo de arquitectura utilizada en él. Echemos un vistazo a las arquitecturas populares.
Arquitectura de Von-Neumann / Princeton
La forma en que la CPU obtiene acceso al programa y los datos informa sobre la arquitectura de la CPU. Anteriormente, se utilizaba un solo bus para acceder al programa y a los datos. Este tipo de arquitectura se conoce como Arquitectura Von Neumann o más simplemente Arquitectura de Princeton. Un solo bus para obtener el código y los datos significa que se interponen en el camino del otro y ralentizan la velocidad de procesamiento de la CPU porque cada uno tuvo que esperar a que el otro termine la búsqueda. Esta limitación también se conoce como condición de cuello de botella de Von-Neumann.
Arquitectura de Harvard
Para acelerar el proceso se propuso la Arquitectura de Harvard. En esta arquitectura están presentes buses de datos separados para datos y programas. Entonces significa que esta arquitectura propuso el uso de cuatro autobuses
- Un conjunto de bus de datos que lleva los datos dentro y fuera de la CPU.
- Un conjunto de bus de direcciones para acceder a los datos.
- Un conjunto de bus de datos para llevar código a la CPU.
- Un bus de direcciones para acceder al código.
El uso de bus de direcciones y bus de datos separados significó un bajo tiempo de ejecución para la CPU, pero esto tiene el costo de la complejidad en el diseño de la arquitectura. La arquitectura de Von Neumann puede sonar un poco vaga, pero tiene la ventaja de su diseño simple.
La arquitectura de Harvard es mucho más fácil de implementar cuando la CPU y las unidades de memoria comparten el mismo espacio o la RAM y la ROM están integradas (en el chip) con la unidad de procesamiento, como en un microcontrolador donde las distancias están en micrones y milímetros. Sin embargo, la misma arquitectura es difícil de implementar cuando la memoria que contiene el código es externa a la unidad de procesamiento, como en las PC IBM x86. Un conjunto de trazos de cables separados para los datos y la dirección en la placa base haría que la placa fuera compleja y costosa. Entendamos con un ejemplo de procesador.
Un procesador con bus de datos de 64 bits y bus de direcciones de 32 bits necesitaría aproximadamente 100 buses (96 para el bus de datos y direcciones y algunos otros para las señales de control) para la implementación de la arquitectura de Von-Neumann. La misma estructura, si se implementa con la arquitectura de Harvard, costaría a las trazas de doble cable aproximadamente 200 con una gran cantidad de pines saliendo del procesador. Es por la misma razón que no vemos la arquitectura Harvard pura implementada para PC y estaciones de trabajo. En cambio, se usa una arquitectura Harvard modificada en la que se usa la jerarquía de memoria con la memoria caché de la CPU para separar el programa y los datos. La jerarquía de memoria separa el almacenamiento en función de la jerarquía del tiempo de respuesta de los procesos.
Set de instrucciones arquitectura
A medida que el programa (código) se carga en la memoria del sistema (RAM), la CPU lo busca (refiriéndose tanto al microprocesador como al microcontrolador) para actuar sobre los datos, es muy similar cuando damos instrucciones cuando entrenamos al perro para ciertas acciones y comandos. A medida que esas instrucciones actúan sobre ciertos transistores, pasa de un nivel lógico a otro para que eso suceda. Básicamente, con la ayuda de instrucciones, el programador humano se comunica con el procesador. Cada CPU tiene su propio conjunto de instrucciones, una colección de instrucciones basadas en su arquitectura y capacidades.
La CPU entiende estas instrucciones en la combinación de 0 y 1, que también se conocen como código de operación. Para un programador humano, es realmente difícil recordar la combinación de 0 y 1 para cada instrucción asociada con la CPU. Para facilitar el trabajo de un programador humano, contamos con interfaces de alto nivel de estas instrucciones y el compilador las convierte en forma de ceros y unos para su procesamiento. Además, en el conjunto de instrucciones de cada CPU, tiene un número limitado de instrucciones que puede comprender.
Rendimiento de la CPU
Es posible que haya escuchado el término frecuencia de reloj de la CPU relacionado con el rendimiento de la CPU. Las CPU generalmente tienen una frecuencia de reloj en MHz (Mega-Hertz) o GHz (Giga-Hertz) como una frecuencia de reloj de 25 GHz. El número asociado con la frecuencia del reloj indica cuántas veces el reloj dentro de la CPU marca en ciclos por segundo. La practicidad de la frecuencia de reloj puede entenderse por el hecho de que las instrucciones se ejecutan en función de los ciclos de reloj de la CPU, que es proporcional al número de programas que la CPU puede ejecutar a la vez.
El rendimiento de la CPU depende del número de instrucciones escritas en el programa, más instrucciones, más tiempo que tarda la CPU en ejecutarlas. También depende del número de ciclos de reloj en el que se ejecuta cada instrucción, ciertas instrucciones necesitan más ciclos de reloj para ejecutarse que otras, por lo que retrasan el rendimiento de la CPU. Las instrucciones de un programa y los ciclos necesarios para realizar cada instrucción son inversamente proporcionales entre sí. Cambiar uno afectará al otro. Este es el punto donde la industria de las CPU está dividida.
Arquitectura del conjunto de instrucciones RISC y CISC
Como se dijo anteriormente, la ejecución de un programa y el rendimiento de la CPU depende del número de instrucciones en un programa en el que las instrucciones se proponen a esa CPU en particular como parte del conjunto de instrucciones y el segundo factor es el número de ciclos de reloj en que se ejecuta cada instrucción. Según estos dos factores, actualmente hay dos conjuntos de instrucciones disponibles. El primero de los cuales es Computación de conjunto de instrucciones complejo (CISC), mientras que el otro es Computación de conjunto de instrucciones reducido (RISC). Analicemos cada una de estas arquitecturas en detalle para comprender la diferencia entre la arquitectura RIC y CISC.
Computación de conjunto de instrucciones complejas (CISC)
CISC son las siglas de Complex Instruction Set Computing. El motivo principal de CISC es reducir la cantidad de instrucciones que ejecuta un programa, esto se hace combinando muchas instrucciones simples como modo de dirección, carga, etc. y para formar una sola instrucción compleja. La instrucción CISC incluye una serie de instrucciones simples, así como algunas instrucciones especiales que requieren más de un ciclo de reloj para ejecutarse. Las instrucciones CISC pueden trabajar directamente en la memoria sin la intervención de registros, lo que significa que elimina la necesidad de algunas instrucciones básicas como la carga de valores y el requisito de memoria (RAM). Las instrucciones CISC enfatizan más en el hardware que en el software, lo que significa que en lugar de poner la carga en los compiladores,CISC utiliza transistores como hardware para decodificar e implementar instrucciones. Sin embargo, como la instrucción es compleja y consta de varios pasos, se ejecutan en más ciclos de reloj.
Una analogía sencilla de relacionarse es cuando se le pide que abra el libro y leer la 3 rd 2 del capítulo nd página. En esta serie de actividades, realiza varios pasos, como buscar el libro de su bolso, luego barajar la página hasta el capítulo 3 y luego ir a la segunda página del capítulo y luego comenzar a leer. La serie de un paso si se combina en una sola instrucción de lectura de la página 44 (que es el número de la 2ª página del 3º capítulo), obtenemos una instrucción CISC.
Computación de conjunto de instrucciones reducido (RISC)
El primer chip integrado fue diseñado por Jack Kilby en 1958, que era un oscilador y en 1970 salió el primer microprocesador comercial de Intel. Aunque al inicio de los procesadores no existía CISC. Pero con las grandes demandas informáticas, la arquitectura CISC se estaba volviendo más compleja y difícil de manejar. Un rediseño total de la arquitectura CISC conocida como RISC salió de IBM por John Coke. Por tanto, para diferenciar entre las dos arquitecturas se introdujeron los términos RISC y CISC.
RISC significa computación de conjunto de instrucciones reducido. El motivo principal de RISC fue introducir uniformidad en el tamaño y la ejecución de las instrucciones. Esto se hizo mediante la introducción de un conjunto de instrucciones simples que podrían ejecutarse como una instrucción por ciclo, esto se hace rompiendo instrucciones complejas como cargar y almacenar en diferentes instrucciones, donde cada instrucción toma aproximadamente un ciclo de reloj para ejecutarse. La arquitectura RISC incluye instrucciones simples del mismo tamaño que pueden ejecutarse en un solo ciclo de reloj. Las máquinas basadas en RISC necesitan más RAM que CISC para mantener los valores mientras carga cada instrucción en los registros. La ejecución de una sola instrucción por ciclo le da a las máquinas basadas en RISC la ventaja de la canalización(La canalización es el proceso en el que se carga la siguiente instrucción antes de que se ejecute la primera, esto aumenta la eficiencia de la ejecución). La arquitectura RISC enfatiza