A.C.
Arquitectura de computadores
Curso:2018/19
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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}
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.
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.
Enero
Febrero
TEMA 1 - FUNDAMENTOS
TEMA 2 - DISPOSITIVOS DE MEMORIA
Saltamos el tema 3 para llegar a tiempo al laboratorio. Se verá más adelante.
TEMA 4 - el µP 68000
Marzo
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
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
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
;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)
;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
;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.
¡¡ALARMA!! ¡¡Hay que replantear la estructura del curso!! (bueno, no tanto "replantear" como "clarificar")
Abril
TEMA 5 - PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR
Comenzamos con el tema 5
#! /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)
TEMA 3 [pdf 1] [pdf 2] - REPRESENTACIÓN DE DATOS
Mayo
Exposición de temas (continuación)
TEMA 8 - TEORÍA DE LA COMPUTACIÓ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
TEMA 9 - TEORÍA DE LA INFORMACIÓN
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
Relaccionado con el exámen
De utilidad para el desarrollo del curso
Interesante / curioso