Procesamiento de datos vs procesamiento de instrucciones en el procesador [cerrado]

-2

Lo que hace un procesador con instrucciones y con datos usando ejemplos. ¿Por qué necesita datos si está procesando una instrucción?

    
pregunta deepu

2 respuestas

1

Tomemos un ejemplo de instrucción MOV. MOV A,#01 ; Move 01 in Acc

En este caso, "MOV" es una instrucción y 01 es información para ella.

MOV A,R0  ; Move contents of R0 in Acc

Aquí nosotros "Datos" es el contenido de R0.

Para Summerize, Processor ejecuta instrucciones y para eso requiere ciertos datos.

En C, pasas parámetros a funciones. Se puede tratar como "Datos" necesarios para procesar "Instrucciones".

    
respondido por el Swanand
0

Una nota rápida antes de que comience a responder esta pregunta, voy a utilizar un lenguaje de ensamblaje tipo mips. En este idioma, R0 (o el registro 0) siempre tiene el valor 0, incluso si intenta almacenar un valor diferente en R0. En aras de la simplicidad, todos los demás registros se comportan como usted lo esperaría.

En esencia, la idea es que tengas una instrucción que haga algo. Digamos, por ejemplo, que tienes ADD R1, R2, R3 ¿Qué significa esto? Agregue el contenido del registro R2 al contenido del registro R3 y almacene el número resultante en R1.

Así que en un formato un poco más fácil de leer:

ADD R1, R2, R3 es lo mismo que R1 = R2 + R3

Tiene sentido? ¡Bien!

Entonces, ¿qué hay en R1? La mayoría de las veces, hará algo para poner un valor o "datos" en ese registro. Por ejemplo:

ADDI R1, R0, 10 que es solo R1 = R0 + 10 Dado que R0 es siempre 0, esto colocará el número "10" en el registro R1.

¿Todavía sigues? Entonces el número 10 en este caso se llama "datos inmediatos". Para ver por qué requiere un poco más de explicación sobre cómo se ve la instrucción en la CPU.

Entonces, ADDI R1, R0, 10 cuando se ensambla se convertirá en 0x2001000A , que es binario: 001000 00000 00001 0000000000001010

Para hacerlo un poco más sensible, los primeros 6 bits son el código de operación: así que 001000 == 0x08 == ADDI

Los siguientes 5 bits son donde almacenamos de qué registro estamos leyendo: así que 00000 == 0x00 == R0

Los siguientes 5 bits son donde almacenaremos la respuesta: entonces 00001 == 0x01 == R1

Y los últimos 16 bits son los "datos inmediatos": 0000000000001010 == 0x0A == 10

Comparemos esto con la otra instrucción que estábamos viendo: ADD R1, R2, R3

Cuando esté ensamblado, se verá así: 0x00430820 que es binario 000000 00010 00011 00001 00000 100000

Al igual que antes, los primeros 6 bits son el código de operación: 000000 == 0x00 == ADD

Y al igual que antes, lo haremos en rojo desde el registro definido por los siguientes 5 bits: 00010 == 0x02 == R2

Y leeremos el segundo fragmento de información del registro definido por los siguientes 5 bits: 00011 == 0x03 == R3

Y lo almacenaremos en el registro definido por los siguientes 5 bits: 00001 == 0x01 == R1

¡Los bits restantes contienen información que no importa en este ejemplo!

Entonces, cuando el procesador recibe una instrucción en mips, siempre capturará 32 bits a la vez. El ADDI salió como 0x2001000A , que es exactamente de 32 bits, igual que el ADD.

Por lo tanto, el procesador tomará la información en esos 32 bits y los utilizará como la instrucción que ejecuta. Por lo tanto, sin hacer más trabajo aparte de obtener los 32 bits de instrucción, el "10" en nuestra instrucción ADDI está disponible para el procesador. Dado que el procesador no tiene que hacer más trabajo, está "inmediatamente" disponible, y de ahí el nombre "datos inmediatos".

Pero digamos que teníamos un valor almacenado en la memoria porque, por ejemplo ... un usuario tecleó 346 usando el teclado. Claramente, eso no puede estar ya en el código como "datos inmediatos", tenemos que obtener esos datos de otra parte. Por lo tanto, para estas situaciones (y obviamente muchas otras) tenemos instrucciones que recopilan datos.

Tome el código lw R1, 0x37 Esto irá a la dirección 0x37 en la memoria, obtenga el valor almacenado allí y póngalo en R1. Estos datos se pueden usar en las instrucciones de AGREGAR, tal como lo haría con lo inmediato.

¡Espero que la explicación sea útil porque pasé demasiado tiempo escribiéndola!

    
respondido por el Kit Scuzz

Lea otras preguntas en las etiquetas