¿Registro de instrucciones? ¿Cuál es su propósito / cómo está conectado? (Y que pasa despues)

1

Así que estoy aprendiendo la arquitectura de la computadora SAP 1. La mayoría de las cosas me dan bastante bien, pero por lo que entiendo: (Vamos a pretender que es un 8bit y la dirección es de 4 bits y el código de operación es de 4bit) enlace

^^ es la guía im? pasando un poco)

El contador de programas obtiene la siguiente DIRECCIÓN para el programa que ALMACENA en el MAR (Registro de direcciones de memoria), (por lo tanto, los últimos 4 bits), por lo que MAR solo debe ser capaz de contener 4 bits (1/2 byte) ¿correcto? (O bien, el MAR almacena un byte completo ......)

A continuación, almacena esto en la RAM (a través de un multiplexor), en la guía de 16 bytes, por lo que el multiplexor elige la dirección en la que se almacenará. (¿Está almacenando 4 bits u 8 bits? ... Parece que solo almacenaría los 4 bits del MAR). Si es así ... ¿por qué existe la memoria RAM? No podía el MAR simplemente almacenar todo. Pero el sitio web de arriba muestra la RAM que genera 8 bits?

Desde allí, el registro de instrucciones almacena los 4 bits de DIRECCIÓN y luego los 4 bits de OPCODE ¿Correcto? Entonces, los 4 bits de OPcode entran en la matriz de control que le dice qué hacer y los otros 4 bits (la dirección) van a dónde? ¿Cuál es el punto de los 4 bits de DIRECCIÓN? ¿Cuál es nuestro próximo paso?

¿Entraría en el acumulador? ¿Para qué?

Como pueden ver, estoy un poco atascado en lo que sucede a continuación. Realmente quiero entender esto, pero estoy atascado.

    
pregunta

2 respuestas

2

Ese instructivo es un poco confuso. Será mejor que seleccione un libro real de la gran lista .

Sin entrar en una discusión sobre varias arquitecturas que simplemente conducirían por el agujero del conejo, usaré la arquitectura descrita en el instructivo y trabajaré con un ejemplo de un programa de adición simple.

A continuación se muestra la memoria RAM como se describe. A la izquierda están las 16 direcciones. Cada dirección contiene un byte. Este byte puede ser datos (demarcados como D ) o una instrucción que consiste en un código de operación ( O ) y una dirección ( A ).

1111 DDDDDDDD
1110 DDDDDDDD
1101 DDDDDDDD
1100 DDDDDDDD
1011 DDDDDDDD
1010 DDDDDDDD
1001 DDDDDDDD
1000 DDDDDDDD
0111 OOOOAAAA
0110 OOOOAAAA
0101 OOOOAAAA
0100 OOOOAAAA
0011 OOOOAAAA
0010 OOOOAAAA
0001 OOOOAAAA
0000 OOOOAAAA

El contador de programa (PC) comienza en cero. Esto le indica al procesador que obtenga el byte en la dirección 0000 de la RAM y lo trate como una instrucción. Por lo tanto, el procesador obtiene el byte en el registro de instrucciones (IR). Los cuatro bits superiores de los datos recuperados van a la "matriz de control" y los cuatro bits inferiores al MAR. Esta división ocurre cada vez que se busca una instrucción.

Nota: esos términos en particular no son lo que yo consideraría típicos (al menos en mi experiencia) pero los usaremos para este ejemplo.

El procesador obtiene la instrucción en la dirección 0000 desde PC = 0000 . Nuestro primer código de operación dirá, "mueva los datos que están en la dirección 1000 al acumulador" (usaré prosa en lugar de confundir las cosas seleccionando un sabor particular del lenguaje ensamblador).

Así que el procesador obtiene los datos en la dirección 1000 (digamos que es el número 2) y los mueve al acumulador (ACC). Ahora ACC = 2. El contador del programa se incrementa automáticamente, por lo que PC = 0001 .

La siguiente instrucción en la dirección 0001 dice: "agregue los datos que están en el acumulador a los datos en la dirección 1001 y guárdelos nuevamente en el acumulador". Así que el procesador toma lo que está en el acumulador y lo alimenta en un lado de la Unidad de lógica aritmética (ALU). El procesador toma los datos que están en la dirección 1001 (digamos que es el número 3) y los introduce en la otra mitad de la ALU. La ALU realiza la adición de los dos números y la salida (el número 5) se almacena en el acumulador. Ahora ACC = 5. El contador del programa nuevamente se incrementa automáticamente, por lo que PC = 0010 .

La última instrucción de nuestro pequeño programa en la dirección 0010 dice: "almacena lo que hay en el acumulador en la dirección 1010 ". El procesador toma lo que está en el acumulador y lo almacena en la dirección 1010 . Así que ahora la dirección RAM 1010 = 5.

Esperemos que el ejemplo sea un poco más claro de lo que está pasando. Varias arquitecturas manejan las cosas de formas ligeramente diferentes. Pero el flujo básico suele ser similar.

A continuación se muestra un diagrama de los registros básicos y los circuitos de control de la mayoría de los procesadores. Hay algunos registros más de los que hemos estado discutiendo. Puede ignorarlos por el momento para los fines de esta discusión o leer más sobre ellos en su tiempo libre. Esperemos que la ayuda visual ayude a aclarar un poco las cosas.

A continuación se muestra el flujo de cada paso que toma un procesador. Primero obtiene una instrucción y luego esa instrucción le dice que extraiga datos para operar desde la RAM.

Step 1. [Address]        PC  -> MAR -> RAM  
Step 2. [Instruction]    RAM -> MDR -> IR  
Step 3. [Address]        IR  -> MAR -> RAM  
Step 4. [Data]           RAM -> MDR -> ACC (or R0, etc.)  
    
respondido por el embedded.kyle
5

Ya que hay 16 bytes en la RAM, necesita 4 bits de información de dirección para especificar de manera única una de las ubicaciones de la RAM. Por lo tanto, el MAR es de 4 bits de ancho. El MAR no almacena nada en la RAM, solo proporciona una dirección. Aunque la RAM tiene solo 4 líneas de dirección, tiene 8 líneas de datos, porque cada "dirección" en la RAM contiene un byte completo. Entonces, el MAR selecciona uno de los 16 bytes en la RAM y el contenido de esa ubicación aparece en el bus de salida de datos de la RAM. Son estos datos los que entran en el IR. No es necesario que los 4 bits de dirección entren en el IR, ya que el procesador ya sabe qué valor se quedó en el MAR. Los 8 bits de la RAM, que se han cargado en el IR, hacen que el procesador haga algo que puede o no hacer que ocurra algo en el acumulador.

    
respondido por el Joe Hass

Lea otras preguntas en las etiquetas