uc3m_ec

Materiales para Estructura de Computadores

Ejercicio 1

(enunciado) Se desea desarrollar un controlador para un semáforo. El controlador dispone de una CPU de 32 bits, mapa de E/S separado y juego de instrucciones del RISC-V 32. A esta CPU se le conectan dos módulos de E/S. El primero es un cronómetro y el segundo es el módulo de E/S que controla el funcionamiento del semáforo.

El módulo cronómetro dispone de los tres registros siguientes:

El módulo de E/S que controla el semáforo dispone de cuatro registros:

Se pide:
  1. Escriba el programa ensamblador que controla el funcionamiento de este semáforo. El semáforo siempre comienza su funcionamiento en rojo.
  2. ¿Qué ineficiencia se identifica en el programa anterior? ¿Cómo se podría resolver?

(solución)

  1. ROJO:
    	li 	t0, 100
    	OUT 	t0, 1012
    	IN 	t0, 1016
    	OUT 	t0, 1000
    	IN 	t0, 1
    	OUT 	t0, 1004
    ESPERA_ROJO:
    	IN 	t0, 1008
    	li 	t1, 1
    	beq 	t0, t1, ESPERA_ROJO
    AMARILLO:
    	li 	t0, 010
    	OUT 	t0, 1012
    	IN 	t0, 1020
    	OUT 	t0, 1000
    	IN 	t0, 1
    	OUT 	t0, 1004
    ESPERA_AMARILLO:
    	IN 	t0, 1008
    	li 	t1, 1
    	beq 	t0, t1, ESPERA_AMARILO
    VERDE:
    	li 	t0, 010
    	OUT 	t0, 1012
    	IN 	t0, 1024
    	OUT 	t0, 1000
    	IN 	t0, 1
    	OUT 	t0, 1004
    ESPERA_VERDE:
    	IN 	t0, 1008
    	li 	t1, 1
    	beq 	t0, t1, ESPERA_VERDE
    	beq 	x0, x0, ROJO
    
    </li>
    
    
  2. La principal causa de ineficiencia es consumo de CPU en el tiempo de espera del contador. La solución sería el empleo de E/S mediante interrupciones.
  3. </ol> </html>