Saltar al contenido principal
LibreTexts Español

1.2: Comparaciones de Arquitecturas de Computadoras

  • Page ID
    80685
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    Esta monografía es la primera de una serie de monografías que cubrirán diferentes tipos de CPU, donde las dos grandes diferencias entre los tipos de CPU es el formato de dirección de las instrucciones, y cómo se divide la instrucción y la memoria de datos para el procesador. En esta siguiente sección se tratará el formato de dirección de las instrucciones. La siguiente sección cubrirá diseños donde se combinan instrucción y memoria de datos (arquitectura de Von Neumann) versus instrucción separada y memoria de datos (arquitectura Harvard).

    1.2.1 Arquitectura de dirección cero, uno y dos/tres direcciones

    La principal diferencia entre las arquitecturas de computadoras de dirección 0, 1 y 2/3 es de dónde provienen los operandos para la ALU. En esta sección se esbozará cada una de estas arquitecturas.

    Tenga en cuenta que en todas estas arquitecturas, los operandos pueden provenir de registros/memoria, o los operandos pueden ser parte de la instrucción misma. Por ejemplo, el valor utilizado en la instrucción add A en una computadora de una dirección proviene de la celda de memoria en una dirección correspondiente a la etiqueta A, y la instrucción agrega el valor en la ubicación de memoria A al $ac. En la instrucción addi 5 el valor del operando se incluye en la instrucción, y se denomina valor inmediato. En esta serie de monografías los operadores que utilicen un valor inmediato se añadirán con una “i”. Por ejemplo, como se muestra arriba, la instrucción add usa un valor de memoria, y el addi usa un valor inmediato.

    1.2.1.1 Arquitectura 0-Dirección

    Al discutir la arquitectura de direcciones de una computadora, la pregunta central es ¿cómo se recuperan los argumentos a la ALU y dónde se almacenan los resultados de la ALU? Una arquitectura de dirección 0 recupera (hace estallar) los dos argumentos de la parte superior de una pila de operando, realiza la operación y luego almacena (empuja) el resultado de nuevo en la pila de operando. Los dos operandos a la ALU están implícitos como los dos operandos en la parte superior de la pila, y la operación, en este caso agregar, no especifica ningún operandos. Debido a que el operador no toma operandos explícitos, se incluyen 0 direcciones como parte de la operación y esto se denomina arquitectura de dirección 0. Tenga en cuenta que una arquitectura de dirección 0 a menudo se denomina arquitectura de pila porque usa una pila para los operandos a/desde la ALU.

    Figura 1-5: Arquitectura de dirección 0

    Screen Shot 2020-07-02 at 6.32.49 PM.png

    Al escribir código de ensamblaje para esta arquitectura, los operandos se introducen primero en la pila (desde la memoria o valores inmediatos) usando dos operaciones de inserción. Se ejecuta la operación, que consiste en sacar los dos operandos de la pila, ejecutar la ALU y empujar el resultado de nuevo a la pila. Luego, la respuesta se almacena en la memoria mediante una operación pop. El siguiente programa, que agrega el valor de la variable A y el valor 5, luego vuelve a almacenar el resultado en la variable B, ilustra un programa simple de direcciones 0.

    Program 1-1: 0-address program to add two numbers
    
     PUSH A
     PUSHI 5
     ADD
     POP B
    

    Históricamente ha habido computadoras implementadas usando arquitecturas de dirección 0, como las series Burroughs 6500 y 7500, pero rara vez se usa en arquitecturas de hardware modernas.

    Sin embargo, la mayoría de los lenguajes modernos que se ejecutan en máquinas virtuales (VM), como la máquina virtual Java (JVM) o el tiempo de ejecución de lenguaje común de.Net (CLR), implementan arquitecturas de dirección 0 o pila.

    1.2.2 Arquitectura de una dirección

    En una arquitectura de una dirección se mantiene en la CPU un registro especial, llamado Acumulador o $ac. El $ac es siempre un operando de entrada implícito a la ALU, y también es el destino implícito del resultado de la operación ALU. El segundo operando de entrada es el valor de una variable de memoria o un valor inmediato. Esto se muestra en el siguiente diagrama.

    Programa 1-2: arquitectura de una dirección

    Screen Shot 2020-07-02 at 6.35.48 PM.png

    El siguiente es un programa de computadora simple de una dirección para agregar el valor 5 y el valor de la variable A, y almacenar el resultado nuevamente en la variable B.

    Program 1-3: one-address program to add two numbers
    
    CLR //SettheACto0
    ADDI 5 // Add 5 to the $AC. Since it was previously 0, this loads 5
    ADD A // Add A+5, and store the result in the $AC
    STOR B // Store the value in the $AC to the memory variable B
    

    Debido a que solo se especifica un valor en la instrucción del operador ALU, este tipo de arquitectura se denomina arquitectura de una dirección. Debido a que una arquitectura de una dirección siempre tiene un acumulador, también se le llama arquitectura de acumulador.

    Históricamente, muchas de las primeras CPU usaban diseños de una dirección, incluidos Intel 8080 y PDP-8, usaban arquitecturas de acumulador. Debido a su simplicidad y pueden ser más rápidos que otras arquitecturas, algunos diseños de microcomputadoras aún utilizan una arquitectura de acumulador, aunque la mayoría de las computadoras implementan diseños de registro de propósito general.

    1.2.3 Dos o tres - Arquitectura de direcciones

    Las arquitecturas de dos direcciones y tres direcciones se denominan arquitecturas de registro de propósito general. Los diseños de dos direcciones y tres direcciones operan de manera similar. Ambas arquitecturas tienen cierto número de registros de propósito general que se pueden utilizar para seleccionar las dos entradas a la ALU, y el resultado de la operación ALU se escribe de nuevo en un registro de propósito general. La diferencia está en cómo se especifica el resultado de la operación ALU (el registro de destino). En una arquitectura de tres direcciones los 3 registros son el destino (donde escribir los resultados de la ALU), R d, y los dos registros de origen que proporcionan los valores a la ALU, R s y R t. Esto se muestra en la siguiente figura.

    Figura 1-6: Arquitectura de 3 direcciones

    Screen Shot 2020-07-02 at 6.38.58 PM.png

    Una arquitectura de 2 direcciones es similar a una arquitectura de 3 direcciones, y la única diferencia es que solo se especifican 2 registros en la instrucción, siendo el primero utilizado tanto para el destino de la operación como para la primera fuente a la ALU.

    Figura 1-7: Arquitectura de 2 direcciones

    Screen Shot 2020-07-02 a las 6.42.00 PM.png

    Como se muestra en los diagramas, la CPU selecciona dos de los registros de propósito general los valores a enviar a la ALU, y se realiza otra selección para escribir el valor de la ALU de nuevo a un registro. En este diseño, todos los valores pasados a la ALU deben provenir de un registro de propósito general, y los resultados de la ALU deben ser almacenados en un registro de propósito general. Esto requiere que se acceda a la memoria mediante operaciones de carga y almacenamiento, y el nombre correcto para una computadora de dos o tres direcciones es una “computadora de carga/tienda de dos o tres direcciones”.

    Los dos programas siguientes ejecutan el mismo programa, B=A+5, como en los ejemplos anteriores. El primer ejemplo usa el formato de 3 direcciones y el segundo usa el formato de 2 direcciones.

    Program 1-4: 3-address program for adding two numbers
    
    LOAD  $R0, A
    LOADI $R1, 5
    ADD   $R0, $R0, $R1
    STORE B,   $R0
    
     Program 1-5: 2-address program for adding two numbers
     
    LOAD  $R0, A
    LOADI $R1, 5
    ADD   $R0, $R1
    STORE B,   $R0
    

    This page titled 1.2: Comparaciones de Arquitecturas de Computadoras is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Charles W. Kann III via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.