A.C.

Arquitectura de computadores

Curso:2018/19

Calendario

Enero
LMMJV
[16]28293031 
Febrero
LMMJV
[16]    1
[17]45678
[18]1112131415
[19]1819202122
[20]25262728 
Marzo
LMMJV
[20]    1
[21]45678
[22]1112131415
[23]18192021lab22
[24]25262728lab29
Abril
LMMJV
[25]1234lab5
[26]891011lab12
[27]1516171819
2223242526
[28]2930   
Mayo
LMMJV
[28]  12lab3
[29]6789lab10
[30]13141516lab17
2021222324
2728293031
 N  no lectivo,  N  fiesta,  N  estudio,  N  exámenes, N N clase, N clase anulada

Clases: {aula: 0.20S} {horario: lunes 12:00-12:50, jueves 9:40-10:30, viernes 12:00-12:50
Laboratorios: {aula: 0.23} {horario: 15:00-17:30}
Tutorias: {con las excepciones que se indiquen en GAUR, generalmente, L 10:30-12:00, J 11:00-14:00, V 10:30-12:00}

Programa

Versión del programa "a priori", según de impartió el año pasado.


El programa según va quedando (y se va previendo) a fecha 28/3/19.
actualizado a fin de curso.

tmp tmp tmp tmp tmp tmp tmp tmp tmp tmp tmp tmp tmp tmp tmp

Evaluación

Examen escrito consistente en 4-5 cuestiones teóricas (a contestar brevemente) y un ejercicio de programación en ensamblador.

(Enunciados de los exámenes: convocatoria ordinaria, convocatoria extraordinaria)

Las prácticas se valorarán in situ e individualmente, contando sólo positivamente.

Pool de posibles trabajos para exponer en clase:

Desarrollo

Enero

Lunes 28 de enero de 2019
Pre-presentación de la asignatura :-)
Lunes 31 de enero de 2019

Febrero

Viernes 1 de Febrero de 2019

TEMA 1 - FUNDAMENTOS

Lunes 4 de Febrero de 2019
  • Pasamos a ver la Arquitectura Von Newmann, etc. con el PDF del tema y con este otro (o, mejor, el pptx)
Jueves 7 de Febrero de 2019
  • Continuamos... ...nos quedamos en la arquitectura escalar hablando de burbujas
Viernes 8 de Febrero de 2019
  • Continuamos continuando... ...vemos hasta las señales del ciclo síncrono
Lunes 11 de Febrero de 2019
  • Seguimos continuando... y terminamos el pdf del tema
  • Y comenzaremos a ver el computador muy sencillo del libro TMCM ...vistos memoria y ALU
Jueves 14 de Febrero de 2019
  • Continuamos con el computador de TMCM. Para entender los circuitos de control vendrá bien conocer su modelo de programación.
Viernes 15 de Febrero de 2019  Esta clase se anula y se recuperará el próximo viernes día 22 extendiendo la clase hasta las 14 horas. 
 
Lunes 18 de Febrero de 2019
  • Terminamos con el tema 1. (el computador virtual ya disponible)

TEMA 2 - DISPOSITIVOS DE MEMORIA

  • Comenzamos con el tema 2 ...visto hasta 11/24
Jueves 21 de Febrero de 2019
  • Comentario olvidado en la clase anterior: cachés y programación (volatil)
  • Continuamos con el tema 2. ...visto hasta 16/24
Viernes 22 de Febrero de 2019  2 horas (recuperación del 15feb.) 
  • Terminamos con el tema 2.

Saltamos el tema 3 para llegar a tiempo al laboratorio. Se verá más adelante.
TEMA 4 - el µP 68000

  • Comenzamos con el tema 4. ...visto hasta 11/47
Lunes 25 de Febrero de 2019
  • Continuamos con el tema 4....visto hasta 21/47
Jueves 28 de Febrero de 2019
  • Continuamos con el tema 4....visto hasta 25/47

Marzo

Viernes 1 de Marzo de 2019
  • Continuamos con el tema 4. ...nos quedamos en 32/47 a medias con MOVEM
Lunes 4 de Marzo de 2019
  • Antes de continuar con el tema 4, para "fijar" lo visto y "entrar" en el ensamblador, un (ejemplo de rutina para 68000)
  • Continuamos con el tema 4. ...nos quedamos en 33/47. ADD y SUB
    (disponible pdf con sólo las instrucciones del 68000)
Jueves 7 de Marzo de 2019
  • El lunes quedó en el tintero comentar el comportamiento "especial" de -(SP) y (SP)+
  • Antes de continuar con el tema 4, veremos la representación de naturales/enteros en "complemento a 2" [PDF] (es parte del tema 3)
  • Continuamos con el tema 4. ...nos quedamos en 35/47. BCD
Viernes 8 de Marzo de 2019
  • Continuamos con el tema 4. ...nos quedamos en 40/47. Control de programa
  •  
    1)
    ;RUTINA MAX_IN_BYTE_VECTOR
    ;FUNCIÓN devuelve el valor máximo en un vector de bytes sin signo.
    ;        El vector tiene como cabecera una word con el número de elementos.
    ;ENTRADA A0(L) dirección del vector
    ;SALIDA  D0(B) valor máximo
    ;MODIFICA ...
    
    
    2)id(1) para un vector de words (16 bits)
    3)id(2) con un parámetro de entrada que indica con_signo/sin_signo
    4)id(3) pasando parámetros por la pila 
                                  
Lunes 11 de Marzo de 2019
  • Resolvemos los ejercicios propuestos
    solución vista en clase al primer ejercicio propuesto. (para probar con el simulador easy68k y a falta de comentarios)
                      
        ORG    $1000
    START:                 ; first instruction of program
        LEA      VECTOR,A0
        BSR.s    MAX_IN_BYTE_VECTOR
        SIMHALT              ; halt simulator
    
    MAX_IN_BYTE_VECTOR
        movem.l  A0/D1,-(SP)
        clr.b    D0
        move.w   (A0)+,D1
        bra.s    noMayor
    CICLO:
        cmp.b    (A0)+,D0
        bhi.s    noMayor
        move.b   -1(A0),D0
    noMayor:
        dbra     d1,CICLO
        movem.l  (SP)+,A0/D1
        rts
    
    VECTOR
        DC.W    6 
        DC.B    3,6,4,7,8,3 
    
        END    START        ; last line of source 
                                  
Jueves 14 de Marzo de 2019
  • Ejecutaremos la solución del día anterior para familiarizarnos con el simulador
  • Seguiremos resolviendo los ejercicios propuestos (paso por pila)
    solución vista en clase al ejercicio propuesto con paso de parámetros por pila (por referencia)
                      
        ORG    $1000
    START:                 ; first instruction of program
        PEA VECTOR
        PEA RESULT
        BSR.s MAX_IN_BYTE_VECTOR
        ADDQ    #8,SP
        SIMHALT              ; halt simulator
    
        ORG $1100
    ;class ByteVector
    ;byte max(ByteVector v) 
    
    MAX_IN_BYTE_VECTOR
        movem.l  A0/D0-D1,-(SP)
        clr.b    D0
        move.l   20(SP),A0
        move.w   (A0)+,D1
        bra.s    noMayor
    CICLO:
        cmp.b    (A0)+,D0
        bhi.s    noMayor
        move.b   -1(A0),D0
    noMayor:
        dbra     d1,CICLO
        move.l   16(SP),A0
        move.b   D0,(A0)
        movem.l  (SP)+,A0/D0-D1
        rts
        
        ORG $1200
    
    VECTOR
        DC.W     fv-iv
    iv  DC.B    3,6,4,7,8,3 
    fv
    RESULT  DS.B    1
    
        END    START         ; last line of source
                                  
Viernes 15 de Marzo de 2019
  • Seguiremos resolviendo ejercicios: fibonacci ...nos quedamos a medias
    ;static long fibonacci(int n) { //int=16bit; long=32bit
    ;  if (n==0 || n==1) return n;  //conversión a long "encubierta" que debe ser explicita en ensamblador
    ;  return fibonacci(n-1)+fibonacci(n-2);
    ;} 
    ; paso de parametros y retorno por pila (por valor al ser primitivos)
    
Jueves 21 de Marzo de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)
  • Terminaremos con fibonacci...
    solución vista en clase al ejercicio fibonacci (paso de parámetros por pila -por valor-)
     
    ;long fibonacci(word n)
    ;Paso de parámetros: por pila (valor)
    ;Comentario: traducción bastante directa de [if (n==0 || n==1) return n; return fibonacci(n-1)+fibonacci(n-2);]   
                 
        ORG    $1000
    START: ; first instruction of program
                                ;Marco de llamada a fibonacci
        move.w  d0,-(SP)        ;   con n dado por el valor en d0
        subq.l  #4,SP           ; 
        bsr.s   fibonacci       ;
        move.l  (SP),d1         ;   guardando fib(n) en d1
        addq.l  #6,SP           ;
        SIMHALT                 ; halt simulator
    
    fibonacci
        movem.l  d0-d1,-(SP)
        move.w  16(SP),d0       ; n -> d0
        beq     casoBase0       ; si (d0=n)==0 caso base 0
        subq.w  #1,D0           ; d0-1 -> d0  [n-1 -> d0]
        beq     casoBase1       ; si (d0=n-1)==0 caso base 1
    
                                ;Marco de llamada a fibonacci
        move.w  d0,-(SP)        ;   con n-1 [d0]
        subq.l  #4,SP           ; 
        bsr.s   fibonacci       ;
        move.l  (SP),d1         ;   guardando fib(n-1) en d1
        addq.l  #6,SP           ;
    
        subq.w  #1,D0           ; d0-1 -> d0  [n-2 -> d0]
    
                                ;Marco de llamada a fibonacci
        move.w  d0,-(SP)        ;   con n-2 [D0]
        subq.l  #4,SP           ;
        bsr.s   fibonacci       ;
        add.l  (SP),d1          ;   sumando fib(n-2) a fib(n-1) [D1]
        addq.l  #6,SP           ;
        
        move.l  D1,12(SP)       ;retorno del caso general
        movem.l (sp)+,d0-d1
        rts
    casoBase0
        clr.l   12(SP)          ;retorno del caso base n=0
        movem.l (sp)+,d0-d1
        rts
    casoBase1
        move.l   #1,12(SP)      ;retorno del caso base n=1
        movem.l (sp)+,d0-d1
        rts
    
        END    START  ; last line of source
                                  
  • ...y dejamos planteada la versión iterativa (ver solución el 3/5/19)
    ;static long fibonacci(int n) { //int=16bit; long=32bit
    ;  if (n==0 || n==1) return n;
    ;  long fibN=1, fibN_1=0;
    ;  for (int i=2; i<=n; i++) {
    ;      long aux=fibN;
    ;      fibN=fibN+fibN_1;
    ;      fibN_1=aux;
    ;  }
    ;  return fibN;
    ;} 
    ; paso de parametros y retorno por pila (por valor al ser primitivos). Variables locales en el stack.
    
  • Vemos las instrucciones privilegiadas ...//excepto RTE
Viernes 22 de Marzo de 2019
  • Continuamos con el tema 4. ...Llegamos a adentrarnos un poquito en excepciones.
Lunes 25 de Marzo de 2019

¡¡ALARMA!! ¡¡Hay que replantear la estructura del curso!! (bueno, no tanto "replantear" como "clarificar")

Jueves 28 de Marzo de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)
  • Clarificado el programa del curso: ver el Programa
  • continuamos...
Viernes 29 de Marzo de 2019

Abril

Lunes 1 de Abril de 2019  Esta clase se anula y se recuperará el próximo viernes día 5 extendiendo la clase hasta las 14 horas. 
 
Jueves 4 de Abril de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)
  • continuamos con "Buses y señales" (pdf actualizado)
Viernes 5 de Abril de 2019  2 horas (recuperación de la clase del 1 de abril.) 

TEMA 5 - PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR

Comenzamos con el tema 5

Lunes 8 de Abril de 2019  2 horas (recuperación de la clase del 12 de abril.) 
  • Una "curiosidad" sobre la competencia en el sector de la AC en tiempos del 68000.
  • Añadidas un par de páginas a "buses y señales". Las comentamos.
  • Continuamos con el tema 5, al que se ha añadido el apartado "tiempos de ejecución" que requiere de las tablas correspondientes
Ejercicio
Traducir a ensamblador de 68000 "como una máquina" (con paso de parametros por pila y uso de LINK/UNLK) el siguiente código Python.
Es la solución al famoso problema de las "torres de Hanoi" para tres discos.
#! /usr/bin/env python3
def hanoi(n, org, dst, aux):
  global movs
  if n==1:
    movs.append((org,dst))
    return
  hanoi(n-1, org, aux, dst)
  movs.append((org,dst))
  hanoi(n-1, aux, dst, org)

movs = []
hanoi(3, 1, 2, 3)
print(movs)
    Aquí la solución en un zip conteniendo tres ficheros
  • Hanoi_from_Python.X68- la rutina pedida en dos versiones: translación mecánica y optimizada
  • Hanoi_from_Python_List.X68- la estructura "lista" para recoger el resultado
  • Hanoi_from_Python_test.X68- el programa de prueba que utiliza los otros dos mediante INCLUDEs
No acabamos el tema 5, pero por falta de material para proyectar, seguimos avanzando y ya volveremos más adelante.

TEMA 3 [pdf 1] [pdf 2] - REPRESENTACIÓN DE DATOS

  • Comenzamos con el tema 5 ...nos quedamos en UTF-8
Jueves 11 de Abril de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)
  • Comentamos la actualización del tema 5 con estructuras de datos y el planteamiento de la cola circular como ejercicio
  • Continuamos con el tema 3 viendo los reales ...dejamos pendiente Huffman para el tema de Teoría de la información, y la última página para el próximo día
Viernes 12 de Abril de 2019  Esta clase se anuló y fue recuperada el lunes día 8 extendiendo la clase hasta las 14 horas. 
Lunes 15 de Abril de 2019
  • Un vistazo rápido a la última página del tema 5. ...olvidado por descuido. Queda para la vuelta de vacaciones
  • A. y M. plantean soluciones a fibonnacci iterativo y Hanoi.
  • Vemos una solución "mecánica" de Hanoi con el simulador. Está aquí
  • Queda pendiente el ejercicio de la cola circular y ver una solución "oficial" de fibonacci iterativa
Vacaciones de Semana Santa (o "de primavera", a elegir ;-)
Lunes 29 de Abril de 2019

Exposición de temas (los títulos son orientativos, cada alumno lo concretará como considere):

  • Iñigo Córdoba.- "Generaciones de procesadores Intel" [pdf]
  • Mikel García de Andoin.- "Tarjetas gráficas: procesadores y memorias" [pdf]

Mayo

Jueves 2 de Mayo de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)

Exposición de temas (continuación)

  • Unai Romo.- "Memorias flash: variantes y estrategias de funcionamiento" [pdf]
  • Quedó olvidado por descuido antes de las vacaciones: Un vistazo rápido a la última página del tema 3 (pdf2).
  • también... un vistazo a la cuestión sobre el "for" que quedó pendiente en el tema 5
  • Ejercicios pendientes: fibonnaci iterativo, cola circular.Vemos una versión de fibonacci iterativo (Javier) pero propongo hacerlo "como uncompilador"
Viernes 3 de Mayo de 2019
  • Ejercicios pendientes: fibonnaci iterativo con variables locales en pila (solución para el Easy68K)Continúa pendiente la cola circular
Lunes 6 de Mayo de 2019

TEMA 8 - TEORÍA DE LA COMPUTACIÓN

  • Vemos el tema con el pdf correspondiente ...nos quedamos en el problema de la parada... lo revisaremos
Jueves 9 de Mayo de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)
  • Continuamos con el tema 8, y "probamos" el simulador de Máquina de Turing (ver en "Extras")
  • Replantearemos "un poco" el ejercicio de colas circulares que tenemos pendiente.
    • Diferentes estrategias (marcador "empty", contador, slot vacio,...)
    • El planteamiento hecho es "muy humano"... frente a esto... los mecanismos de los lenguajes de alto nivel (excepciones, paso "por variable", retornos múltiples)
    • El enunciado tiene una deficiencia para generar múltiples colas circulares (no lleva a una definición del tipo abstracto)
      mejor así (ojo a la notación '\@'):
                    ORG $1500  ;sección de programa (con uso de estructuras de datos)
      cola1         ColaCircular	128
      
                    ORG $2000   ;sección de definición de estructuras de datos
      ColaCircular  macro
      Cola\@	      DC.L Fbuffer\@-2,Buffer\@, Buffer\@
      Buffer\@      DS.W \1
      Fbuffer\@	    
        	      endm
      
      ccPLast:      EQU 0  ;apuntador a la última word
      ccHead:       EQU 4  ;apuntador a la cabeza (word a extraer)
      ccTail:       EQU 8  ;apuntador a la cola (espacio a ocupar)
      ccFirst:      EQU 12 ;comienzo del espacio de almacenamiento
                                   
Viernes 10 de Mayo de 2019
  • Nos quedamos sin tiempo ayer para el punto 3 de las reflexiones sobre el ejercicio de colas circulares (y la mención a las excepciones)

TEMA 9 - TEORÍA DE LA INFORMACIÓN

  • Vemos el tema con el pdf correspondiente ...nos quedamos en Fuentes de Markov
Lunes 13 de Mayo de 2019
  • Reflexión sobre el resultado del algoritmo de Huffman:
    no hay problema alguno de decodificación desde el momento que es equivalente a (simplemente) recorrer el árbol de raiz a hojas constantemente.
  • Continuamos con el tema 9
Respuesta a pregunta realizada al finalizar la clase... de enunciado difuso y que intenta adivinarse en la respuesta...

La entropía es la información media por símbolo proporcionada por la fuente. Una fuente emisora, con un alfabeto de N símbolos presenta máxima entropía si emite todos ellos con probabilidad 1/N.
Esto no tiene una relación directa con los posibles estados internos de la fuente y su distribución de probabilidad. En todo caso si la fuente presenta diferentes estados (es de memoria no nula), lo que podemos seguir asegurando es que cuanto más uniforme sea la probabilidad de emisión más información aportará con cada símbolo por término medio.
La duda planteada podría tener que ver con una idea incorrecta: que la fuente contiene una cantidad finita de información y ésta va "saliendo" a través de la emisión de símbolos. La pregunta sería algo así como ¿qué fuente contiene más información, una fuente con alta entropía (que emite con una distribución uniforme) o una con entropía menor (que emite con una ditribución más "descompensada")?
La respuesta es que la fuente tiene una entropía concreta, pero no una información concreta. La fuente es algo (modelo matemático o sistema físico) que emite información, y esta se acumula aditivamente con cada emisión sin un final (recordemos que el concepto de entropía, en principio, está definido para una fuente con estados estacionarios). La cantidad de información aportada por una cadena de simbolos de la misma longitud por dos fuentes, dependerá de la amplitud del "vocabulario" de símbolos y de su distribución de probabilidad.
Hay algunas variantes de la formulación de la entropía para sistemas no estacionarios, que pueden incluir los que tienen un estado final, y por tanto podría hablarse de una capacidad máxima emisión de información (que no es un número sino, a su vez, una distribución de probabilidad) pero esa es otra historia... XD

Jueves 16 de Mayo de 2019 (a las 3:00 PM práctica en el laboratorio 0.22 con Luis Javier Rodríguez)
  • Encuesta...
  • Sobre los exámenes de cursos anteriores...
  • El ejercicio de colas circulares.
Viernes 17 de Mayo de 2019
  • Sobre los exámenes de cursos anteriores... en la sección "Extras" preguntas de otros años y hoja de datos para utilizar en el examen.
  • Desarrollamos un ejercicio de mapeo de memoria en la pizarra...
  • ... y el ejercicio pendiente de colas circulares se puede ver aquí (es una versión optimizable ya que está a medio camino entre lo que haría un compilador y lo que haríamos de un modo totalmente manual)

Extras

Relaccionado con el exámen

De utilidad para el desarrollo del curso

Interesante / curioso

"Not So Frequently Asked Questions"
En ocasiones alguna pregunta nada habitual puede ser de interés general....