Circuitos Digitales II

32
Circuitos Digitales Circuitos Digitales II II Alineamiento en Memoria y Ejecución de un Alineamiento en Memoria y Ejecución de un programa programa Semana No.8 Semana No.8 Semestre 2008-2 Semestre 2008-2 Prof. Gustavo Patiño Prof. Gustavo Patiño [email protected] Prof. Eugenio Duque Prof. Eugenio Duque [email protected] Departamento de Ingeniería Electrónica Departamento de Ingeniería Electrónica Facultad de Ingeniería Facultad de Ingeniería

description

Departamento de Ingeniería Electrónica Facultad de Ingeniería. Circuitos Digitales II. Alineamiento en Memoria y Ejecución de un programa Semana No.8 Semestre 2008-2 Prof. Gustavo Patiño [email protected] Prof. Eugenio Duque [email protected]. Temario. Repaso - PowerPoint PPT Presentation

Transcript of Circuitos Digitales II

Page 1: Circuitos Digitales II

Circuitos Digitales IICircuitos Digitales II

Alineamiento en Memoria y Ejecución de un programaAlineamiento en Memoria y Ejecución de un programaSemana No.8Semana No.8

Semestre 2008-2Semestre 2008-2

Prof. Gustavo PatiñoProf. Gustavo Patiñ[email protected]

Prof. Eugenio DuqueProf. Eugenio [email protected]

Departamento de Ingeniería ElectrónicaDepartamento de Ingeniería Electrónica

Facultad de IngenieríaFacultad de Ingeniería

Page 2: Circuitos Digitales II

Repaso Instrucciones de Control Ejemplos :

If Then While Repaso Completo de un ejemplo en C/C++

Multiplicación y división em el MIPS Alineamiento en el MIPS Orden de Bytes en la memoria

Big Endian Little Endian

TemarioTemario

2Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 3: Circuitos Digitales II

Repaso :Repaso : If-then-elseIf-then-else

3

Page 4: Circuitos Digitales II

Ejemplo: If-then-elseEjemplo: If-then-elseSoluciónSolución

4

Page 5: Circuitos Digitales II
Page 6: Circuitos Digitales II

Resumen de Comparaciones en el MIPS

6

Page 7: Circuitos Digitales II

Resumen de instrucciones y operandos en el MIPS

Page 8: Circuitos Digitales II

8

Page 9: Circuitos Digitales II
Page 10: Circuitos Digitales II
Page 11: Circuitos Digitales II

11

Page 12: Circuitos Digitales II

Cuando una palabra (4 bytes) es cargado o almacenado, la dirección de memoria debe ser un múltiplo de cuatro. Esto se denomina restricción de alineamiento.

Las direcciones que son un múltiplo de cuatro son llamadas de palabra alineada (word aligned).

Esta restricción hace el hardware más simple y más rápido.

Alineamiento en el MIPS

12Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 13: Circuitos Digitales II

Restricciones de Alineamiento

13Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 14: Circuitos Digitales II

Cuál de las siguientes direcciones es de palabra alineada ? 0x000AE430 0x00014432 0x000B0737 0x0E0D8844

Sugerencia: En binario, cómo es posible dividir por 4 ?

Pregunta

14Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 15: Circuitos Digitales II

Restricciones de Alineamiento (…cont)

15Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 16: Circuitos Digitales II

Una instrucción de carga (load) o de almacenamiento (store) tipo word usa únicamente una dirección de memoria.

La dirección más baja de los cuatro bytes se usa para la dirección de un bloque de cuatro bytes contiguos.

Cómo se almacena un dato de 32 bits en la memoria ?

Como se sabe, hay 32 bits en los 4 bytes de memoria, y el dato posee también 32 bits. No obstante es necesario definir cuál parte de la memoria almacena cada parte del dato de 32 bits.

Actualmente hay dos maneras como los computadores realizan esta tarea: Orden de bytes del tipo Big Endian:

El byte más significativo (the big endian) de los datos es ubicado en el byte con la dirección más baja.

El resto de los datos es colocado en orden en los restantes tres bytes de la memoria. Orden de bytes del tipo Little Endian:

El byte menos significativo (the little endian) de los datos es ubicado en el byte con la dirección más baja.

El resto de los datos es colocado en orden en los restantes tres bytes de la memoria.

Orden de Bytes en la memoria : Big Endian y Little Endian

16Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 17: Circuitos Digitales II

En esta definición, el dato de 32 bits es visto como un entero sin signo de 32 bits. El “byte más significativo” es aquel con la más alta potencia de dos: 231,...224. El “byte menos significativo” es aquel con la menor potencia de 2: 27,...20.

Por ejemplo: imagine el dato 0x12345678 ubicado en la dirección 0x00400000.

En este caso, el byte menos significativo es 0x12 y el byte más significativo es 0x78. Según el tipo de orden de los bytes, este número podría ser almacenado como:

Dentro de un byte, el orden de los bits es el mismo para todos los computadores, sin importar cómo es que los bytes están ordenados.

Big Endian y Little Endian

17Departamento de Ing. Electrónica. Circuitos Digitales II

Facultad de Ingeniería 2008 - 2

Page 18: Circuitos Digitales II

Ejecución de un Programa

Procedimiento de compilación y enlace (Compilation and linking)

Page 19: Circuitos Digitales II
Page 20: Circuitos Digitales II
Page 21: Circuitos Digitales II
Page 22: Circuitos Digitales II
Page 23: Circuitos Digitales II

23

Page 24: Circuitos Digitales II

24

Page 25: Circuitos Digitales II
Page 26: Circuitos Digitales II

26

Page 27: Circuitos Digitales II

27

Page 28: Circuitos Digitales II

28

Page 29: Circuitos Digitales II

Ejemplo en C

29

Page 30: Circuitos Digitales II

sum_pow2: # $a0 = b, $a1 = caddu $a0, $a0, $a1 # a = b + c, $a0 = aslti $v0, $a0, 8 # $v0 = a < 8beq $v0, $zero, Exceed # goto Exceed if $v0 == 0addiu $v1, $sp, 8 # $v1 = pow2 addresssll $v0, $a0, 2 # $v0 = a*4addu $v0, $v0, $v1 # $v0 = pow2 + a*4lw $v0, 0($v0) # $v0 = pow2[a]j Return # goto Return

Exceed: addu $v0, $zero, $zero # $v0 = 0Return: jr ra # return sum_pow2

sum_pow2: # $a0 = b, $a1 = caddu $a0, $a0, $a1 # a = b + c, $a0 = aslti $v0, $a0, 8 # $v0 = a < 8beq $v0, $zero, Exceed # goto Exceed if $v0 == 0addiu $v1, $sp, 8 # $v1 = pow2 addresssll $v0, $a0, 2 # $v0 = a*4addu $v0, $v0, $v1 # $v0 = pow2 + a*4lw $v0, 0($v0) # $v0 = pow2[a]j Return # goto Return

Exceed: addu $v0, $zero, $zero # $v0 = 0Return: jr ra # return sum_pow2

Sum_pow2: Código compilado en Assembler

30

Return Address

Page 31: Circuitos Digitales II

Constantes dentro de las instrucciones

31

Page 32: Circuitos Digitales II

Qué ocurre con constantes más grandes ?

32