You are on page 1of 46

Prcticas

Arquitectura de Computadores
Bloque I

Cronograma
Bloque 1 Programacin DLX nivel bsico

Repertorio de Instrucciones DLX


Programa Windlx
Ejemplos bsicos
Guiones
-------------------------------------------------------------------------------------

Programacin DLX nivel bsico 9/09/2015

Cargas y Almacenamientos
Operaciones ALU
Lazos
Tiempo de ejecucin

Prueba de validacin 30/09/2015

Pruebas de Validacin
Objetivo: Validar conocimientos visto anteriormente

Individuales

Validaciones
1.

Juego de Instrucciones DLX / Procesador Secuencial: 0.5p

2.

Procesador Segmentado DLX y Ganancia: 2p

3.

Procesador Superescalar / SuperDLX y Ganancia: 1.5p

4.

Optimizacin de Cdigo y Ganancia: 1p

Presentacin Trabajo: 1 punto

Pruebas de Validacin

Procedimiento de validaciones

Describir prueba: 10 minutos


Desarrollar prueba: 80 minutos

Validar prueba: 30 minutos

Chequear programa y cuestiones

Material

Realizar un programa y resolver determinadas cuestiones


Subir material a ILIAS

Juego de Instrucciones
Manual del procesador

Introduccin
Bloque 1 Programacin DLX nivel bsico

Conocimientos tericos de todo el bloque

Material

Repertorio de Instrucciones DLX


Ciclos de ejecucin en computador secuencial
Programa Windlx
Manual de la UNED
Programa Windlx

Bloque 1 Programacin DLX nivel


bsico
Repertorio de Instrucciones

Introduccin
Arquitectura orientada a registro (de 32 bits):

32 registros de propsito general (GPR): R0, R1,

R0 contiene siempre el valor 0.

32 registros de Punto Flotantes (FPR): F0, F1, (Simple


precisin)

Utilizables como registros de 64 bits por pares:

F0, F2, ... (Doble precisin)

16 Registros especiales

Tipos de datos (en bits):

8: Byte
16: Media palabra
32: Palabra
64: Doble palabra

-128 +255
-32768 . + 65535
-2147483648 . + 2147483647

Registros Especiales
FPSR (Floating-Point Status Register).

Es un registro de estado de 1 bit de longitud

Comparaciones y excepciones de coma flotante.

Todos los movimientos desde y hacia este registro se realizan a travs de los registros de propsito general.

Las comparaciones en punto flotante asignan el bit de este registro

Disponibles instrucciones de salto que basan su resultado en el valor del bit (1 cierto, 0 falso).

PC (Program Counter).

Contiene la direccin de la prxima instruccin que va a ser ejecutada.

Los saltos y las bifurcaciones pueden cambiar el contenido del mismo.

IMAR (Instruction Memory Address Register).

Este registro es inicializado con el contenido del contador de programa en la etapa IF a causa de que est
conectado con el sistema de memoria, mientras que el PC no.

IR (Instruction Register).

En la etapa IF es cargado con la prxima instruccin a ejecutarse.

A, B.

Son cargados en la etapa ID y sus valores son enviados a los operandos de la unidad aritmtico lgica en la
siguiente etapa la EX. En WinDLX, adems existen los pseudo-registros

AHI y BHI que contienen los 32 bits superiores para valores en coma flotante de doble precisin.

Registros Especiales
BTA (Branch Target Address).

En la etapa ID, la direccin de salto/bifurcacin es calculada y escrita en este registro

ALU (Arithmetic Logical Unit).

El resultado de una operacin en la ALU es transferido a este registro.

En WinDLX existe un pseudo-registro llamado ALUHI que contiene los 32 bits superiores para valores en coma flotante
de doble precisin.

DMAR (Data Memory Address Register).

La direccin de memoria a la que se va acceder es transferida a este registro en la etapa EX.


En la etapa MEM, el acceso a la memoria para lectura o escritura es efectuado con el valor almacenado en este registro.

SDR (Store Data Register).

El dato que se va a escribir en memoria por medio de una instruccin es almacenado previamente en este registro.

En WinDLX existe un pseudo-registro llamado SDRHI que contiene los 32 bits superiores para valores en coma flotante
de doble precisin.

LDR (Load Data Register).

El dato que es ledo de memoria se almacena en este registro.

En WinDLX existe un pseudo-registro llamado LDRHI que contiene los 32 bits superiores para valores en coma flotante
de doble precisin.

Introduccin

Registros especiales: PC, IR


Memoria direccionable al byte.
Ancho de memoria: 32 bits (bus de datos).
Bus de direcciones: 32 bits
Organizacin Big Endian.
Modos de direccionamiento:

10

Registro Ej.: ADD R1,R2,R3


Inmediato Ej.: SUBI R1,R2,5
Desplazamiento Ej.: LW R1,30(R2)

Formato de la Instrucciones DLX

3 formatos de instrucciones
Igual longitud
Igual tamao de opcode

11

Operaciones de acceso a memoria en el DLX

12

Operaciones aritmtico-lgicas en el DLX

13

Operaciones de bifurcacin en el DLX

14

Ruta de datos del DLX

15

Etapas en la ejecucin de instrucciones

Etapas y ciclos de reloj. Mquina secuencial

IF: Bsqueda de la instruccin

ID: Decodificacin

1 ciclo de reloj

WB: Escritura de resultados

16

Depende de la unidad funcional

MEM: Acceso a memoria

0.8 ciclo de reloj

EX: Ejecucin

1 ciclo de reloj

0.8 ciclo de reloj

Etapa IF

Se carga la instruccin en curso en el Registro de


Instruccin (RI)
(IMAR) Instruction Memory Address Register.
Se prepara el contador de programa para apuntar a la
siguiente instruccin.
IMAR PC
IR Mem[PC]
NPC PC + 4

17

Etapa ID

Se decodifica la instruccin

Se cargan los diferentes campos en los registros


especiales A, B, Imm.

Saltos condicionales son calculados en esta etapa con el


fin de reducir los riesgos de control
A Regs[IR610]
B Regs[IR1115]
Imm ((IR16 )16 ## IR1631)
18

Etapa EX

Acceso a memoria (clculo de la direccin efectiva)


ALUOutput A + Imm

Reg-Reg ALU (operacin especificada por func)


ALUOutput A func B

Reg-Imm ALU (operacin especificada por op)


ALUOutput A op Imm

Salto (clculo del PC destino y de la condicin)


ALUOutput NPC + Imm
Cond (A op 0)
19

Etapa MEM

Acceso a memoria (lectura-Load o escritura-Store en


memoria)
LMD Mem[ALUOutput]
Mem[ALUOutput] B

Salto (carga de la direccin efectiva en el PC)

if (cond)
PC ALUOutput
else
PC NPC
20

Etapa WB

Reg-Reg ALU:
Regs[IR1620] ALUOutput

Reg-Imm ALU:
Regs[IR1115] ALUOutput

Instruccin de carga (Load):


Regs[IR1115] LMD

21

Directivas

Dos punteros:

Datos (.data). Por defecto $DATA=0x1000

Instrucciones (.text). Por defecto $DATA=0x100

align n . Ocasiona que el prxima dato o instruccin sea cargado en la prxima direccin con los n
bits de ms bajo peso a 0 (la direccin ms cercana que sea mayor o igual a la direccin actual
que sea mltiplo de 2 ).
n

Por ejemplo, si n es 2, la siguiente direccin sobre la que se escribir ser la inmediatamente siguiente
que sea mltiplo de 4.

.ascii "string1","..." Almacena en memoria las cadenas "strings" indicadas en la directiva como
una lista de caracteres. Las cadenas no se completan con un byte 0.

.asciiz "string1","..." Similar a .ascii, excepto que cada cadena es terminada por un byte 0 de
forma similar a los strings en C.

.byte byte1,byte2,... Almacena secuencialmente en memoria los bytes indicados en la directiva.

22

Por ejemplo, .byte 0x1, 0x2, 0x3 almacena a partir de la ltima direccin utilizada en el segmento de datos
los valores 0x1, 0x2 y 0x3 consecutivamente utilizando un byte para cada uno de ellos.

Directivas

.data [address] Ocasiona que el cdigo o datos que sigue a esta directiva sea
almacenado en el rea de datos
.double number1,... Almacena secuencialmente en memoria los nmeros
indicados en la directiva en doble precisin.
.global label Hace pblica la etiqueta para que pueda ser referenciada por
cdigo perteneciente a archivos cargados en memoria despus de ste.
.space size Mueve size bytes hacia adelante el actual puntero de
almacenamiento con el fin de dejar libre algn espacio en memoria.
.text [address] Ocasiona que el siguiente cdigo o dato que aparezca en el
fichero sea almacenado en el rea de texto (cdigo).
.word word1, ,... Almacena secuencialmente en memoria las direcciones de los
smbolos indicados en la directiva.

23

Si por ejemplo, el smbolo PrintFormat hace referencia a la direccin 1017, se


almacenar en memoria este valor.

Trap

Excepciones (TRAPs).

La interfaz entre los programas DLX y el sistema de


entradas/salidas se realiza a travs del uso de excepciones
(TRAPs). En WinDLX hay cinco TRAPs definidos

24

Trap #1: Abrir fichero


Trap #2: Cerrar fichero
Trap #3: Leer un bloque del fichero
Trap #4: Escribir un bloque en el fichero
Trap #5: Salida formateada a travs dela salida estndar
El valor 0 para un TRAP (TRAP #0) no est permitido, y se utiliza para
terminar un programa..

Etapas en la ejecucin de instrucciones

Etapas y ciclos de reloj. Mquina secuencial

IF: Bsqueda de la instruccin

ID: Decodificacin

1 ciclo de reloj

WB: Escritura de resultados

25

Depende de la unidad funcional

MEM: Acceso a memoria

0.8 ciclo de reloj

EX: Ejecucin

1 ciclo de reloj

0.8 ciclo de reloj

Ejemplo 1
.data 0
.global
x:
.word 1
.global
y:
.word 2
.global
z:
.word 3
.global
out: .word 3
.text 256
lw r1,x
lw r2,y
lw r3,z
add r4,r1,r2
add r4,r4,r3
sw out,r4
lw r5,out
trap #0

26

x
y
z
out

Ejemplo 1 Sumar 3 nmeros (Word)


.data 0
.global
x:
.word 1
.global
y:
.word 2
.global
z:
.word 3
.global
out: .word 3
.text 256
lw r1,x
lw r2,y
lw r3,z
add r4,r1,r2
add r4,r4,r3
sw out,r4
lw r5,out
trap #0

27

x
y
z
out

Etapas:
CPI: Lw: IF;ID;EX;MEM;WB= 4.6
CPI: Add: IF;ID;EX;WB= 3.6
CPI=Sw: IF;ID;EX;MEM= 3.8
Num de ciclos: 4x4.6(Lw)+2x3.6(Add)+3.8 (Sw)=
=18.4+7.2+ 3.8=29.4

Ejemplo 2 Sumar 3 nmeros (Word


Desplazamiento)
x:
out:

.data 0
.global x
.word 1,2,3
.global out
.word 3

.text 256
add r7,r0,x
lw r1,0(r7)
lw r2,4(r7)
lw r3,8(r7)
add r4,r1,r2
add r4,r4,r3
sw out,r4
lw r5,out
trap #0
28

;r7 puntero para moverme por direcciones


; me muevo con el desplazamiento

; almaceno valor
; compruebo en r5

Ejemplo 3 Sumar 3 nmeros (Doubles


Desplazamiento)
.data 0
.global x
x: .double 1,2,3

.global out
out:.double 23
.text 256
ld f2,x

Etapas:
Ld: IF;ID;EX;MEM;WB= 4.8
Addd: IF;ID;EX-EX;WB= 4.6
Add: IF;ID;EX:WB= 3.6
Sd: IF;ID;EX;MEM= 3.8
Num de ciclos: 4x4.8(Ld) +2x4.6(Addd) +3x3.6(Add)+3.8 (Sd)=
= 19.2+9.2+10.8+3.8=43

; cargo primer dato

add r7,r0,x ;r7 puntero para moverme por direcciones


ld f4,8(r7) ; cargo segundo dato
addi r7,r7,16 ; aumento puntero
ld f6,0(r7) ; desplazamiento 0 porque he aumentado puntero
addd f8,f2,f4 ; primera suma
addd f8,f8,f6 ; segunda suma
add r7,r0,out ;r7 puntero para moverme por direcciones
sd 0(r7),f8
ld f10,out
trap #0

29

; almaceno
; compruebo valor

Bloque 1 Programacin DLX nivel


bsico
Programa Windlx

30

Entorno de Simulacin

31

Entorno de Simulacin. Register

32

Entorno de Simulacin. Code

Visualizacin:

Instrucciones
Puntos de ruptura
(breakpoints)

Instruccin est
ejecutndose en una etapa
determinada del pipeline:

33

un color caracterstico de
cada etapa
Aparece una etiqueta de la
etapa.

Entorno de Simulacin. Code

Informacin detallada de las instrucciones:

34

Entorno de Simulacin.
Ventana y men Pipeline

Visualizan las etapas por las que pasan las instrucciones


dentro de la estructura del pipeline del procesador.
El men Pipeline:

Display Floating point stages.

Activo:

Desactivado

35

las etapas en coma flotante


Las cinco etapas bsicas del pipeline del DLX

Entorno de Simulacin.
Ventana y men Breakpoints

Conjunto de instrucciones que tienen puntos de ruptura


asignados.
Nmero mximo de puntos de ruptura es 20.

36

Men Principal

File.

37

Permite borrar e inicializar simulaciones (opciones Reset DLX


y Reset All), cargar los ficheros con los programas en
ensamblador y datos (opcin Load Code or Data) y salir del
programa (Quit WINDLX).

Men Principal

Window.

38

Es la misma que en cualquier aplicacin Windows. Permite


abrir y modificar las subventanas, que tambin se pueden
manejar directamente sobre los correspondientes iconos de la
ventana principal.

Men Principal

Execution.

39

Permite controlar la ejecucin de los programas por parte del


simulador y mostrar la ventana de E/S de WinDLX donde
aparecen los mensajes correspondientes a la simulacin
(opcin Display DLX-I/O). Los programas se pueden
ejecutar hasta el final (opcin Run), o hasta un Breakpoint que
se haya insertado (opcin Run to), ciclo a ciclo (opcin
Single Cycle), un nmero de ciclos prefijado (opcin
Multiple Cycles).

Men Principal

Memory.

40

Permite crear ventanas para visualizar el contenido de la


memoria (opcin Display), ver y cambiar el contenido de
ciertas direcciones de memoria (opcin Change) y manipular
los smbolos de las variables (opcin Symbols).

Men Principal

Configuration.

Permite cambiar ciertas caractersticas del cauce,


concretamente:

El nmero de unidades funcionales y sus latencias (opcin Floating


Point Stages) y la posibilidad de utilizar caminos de bypass o no
(opcin Enable Forwarding);
El tamao de la memoria (opcin Memory Size);
y otras caractersticas propias del simulador como:

41

la utilizacin de nombres simblicos o no (opcin Symbolic Addresses),


la utilizacin de tiempos absolutos o relativos al ciclo de reloj actual
(opcin Absolute Cycle Count),
el almacenamiento de las caractersticas de la configuracin en un fichero
con la extensin por defecto .wdc - (opcin Store), o el establecimiento
de una configuracin almacenada en un fichero (opcin Load) .

Men Principal

Help.

42

Permite acceder a una ayuda en ingls bastante completa del


simulador WinDLX, las caractersticas del cauce, el repertorio
de instrucciones, etc.

Bloque 1 Programacin DLX nivel


bsico
Ejemplos, Guiones y Tiempo de Ejecucin

43

Guion I - Introduccin

Realizar un programa donde:

Estn cargados 2 nmeros enteros (4 y 8) en memoria (posicin


0000)
Calcule la suma de dichos nmeros
Almacene el resultado de la suma en la siguiente posicin al segundo
nmero
Calcular el nmero de ciclos del programa.

Realizar un programa donde:

44

Haya cargados 2 nmeros de doble precisin (4 y 8) en memoria


(posicin 0000)
Calcule el doble de dichos nmeros
Almacene el doble de dichos nmeros en las posiciones iniciales.
Calcular el nmero de ciclos del programa.

Guion II - Introduccin
Realizar un programa donde:

1.

Estn cargados 10 nmeros enteros en memoria (posicin 0000):


1,2,3,4,5,6,7,8,9,10
Calcule la suma de los nmeros que ocupan la posicin par (30)
Calcule la media de los nmeros que ocupan la posicin impar (5)
Almacene los resultados posiciones de memoria
Calcular el nmero de ciclos del programa.

Realizar un programa donde:

2.

Estn cargados 5 nmeros de doble precisin

45

3,2,1,4,5
Probar con los siguientes: 1,2,3,4,5 y 5,2,3,4,1

Calcular el mnimo de todos ellos


Almacene el resultado en una posicin de memoria
Calcular el nmero de ciclos del programa.

Guion III - Introduccin


Realizar un programa donde:

1.

Se almacena la siguiente matriz de elementos word


1

10

11

12

13

14

15

16

Almacenar la suma de cada columna.


Calcular el nmero de ciclos del programa.

Realizar un programa donde:

2.

46

Se almacena la siguiente matriz de elementos de double


1

10

11

12

13

14

15

16

Almacenar la suma de cada columna.