Está en la página 1de 26
Ejercicio Ms1 La méquina sencilla estudiada en clase no permite la transferencia de datos con el exterior. Se llama bloque de entrada/salida (E/S) al conjunto de circuitos que permiten la transferencia de informacién entre memoria y {os periféricos dedicados (teclado, pantalla, ...). El bloque E/S més sencillo consiste en registros con los que se puede feer y escribir informacién. La figura muestra las modificaciones realizadas en la unidad de proceso (UP) de la méquina. Las dos instrucciones bAsicas que permitirén esta transferencia son: OUT D: el contenido de la posicién de memoria D se escribe en el registro de salida RS, IND: el dato presente a Ja entrada def registro de entrada RE se escribe en la direccién D. Esta instruccién necesita en su fase de biisqueda de operandos dos ciclos de reloj: en ef primero se carga RE y en el segundo se hace su lectura. A) Suponer que se han suprimido las instrucciones originales ADD y CMP de manera que la codificacién para las instrucciones OUT e IN es 00 y Ol respectivamente. Escribir el programa correspondiente a cada una de estas dos instrucciones detallando el significado del valor de cada sefial en cada caso. B) Las dos instrucciones de E/S anteriores se quieren modificar para poder acceder a mas de un periférico: OUT N,D y INN,D donde N indica el ntimero del periférico de entrada o de salida al que se quiere acceder. Redisefiar el formato de instruccién de manera que, a parte de las 4 instrucciones bésicas de la méguina (ADD, CMP, MOV y BEQ), tengan las dos nuevas. ;Cudl es el ntimero de periféricos maximo al que podemos acceder?. ———— TT Let ee ea eed a ky te a @+1 -> PC K — >| | [| 7 0 1 -—? 3 MUX 0,1 4} b/s ‘MEMORIA @ sal ENT A Entrada RE|< M-> A —— >| >| D co 0,1 F < 16 <—___ co M -> IR A B M-> B a n 8 Z > FZ ALU 0,1 we ALU 16 Salida eo IN our Modificaciones en la UP para permitir instrucciones de k/S. SOLUCION Ms1 A) Descripeién de las sefiales de control en cada ipalabra: OUP D: (en sustitueién de ADD) palabra 0: bisqueda de instruccién, 0, MUXO=0 biisqueda en 1a memoria de la (lectura) instr. con @ <= PC. Pott orden de carga de la direccién de siguiente instruccién en PC. se carga la instruccién buscada en el registro IR. palabra 3: busqueda del operando. bisqueda en la memoria del operando con @ <= destino (D). orden de carga del operando en el registro B (la carga se efectia en el ciclo siguiente). palabra 4: sacar el operando por el RS. - ALU1=1,ALU0=0 el dato del registro B pasa por la ALU sin sufrir modificaciones. - L/E=0 no necesitamos leer, pero NO debemos escribir en la memoria. - BFZ=1 orden de carga del flag z. palabra 5: quedaria vacfa pues OUT D sélo tiene un operando a diferencia de ADD que tenia dos. : (en sustitucién de CMP) 2 - M/P=1,0UT=1 orden de carga en el registro RS. In lalabra 0: busqueda de instr., igual que antes. palabra 9: btisqueda de operando, a la entrada de RE. - M/P51,IN=1 orden de carga para el reg RE palabra 10: carga en el RE. = MB=! carga en RE y orden de carga en b. upalabra 11; escritura del dato en memoria. - ALUL=1,ALU0=0 el dato pasa por la ALU sin modi ficaciones. - MUX1=1, MUXO: se escribe en la memoria con L/B=1(escritura)@ <= destino D. = 2PZ=1 orden de carga del flag Z Un dato de entrada tiene que seguir un camino critico segtn el disefio inicial: registros RE y B; por esto son necesarias las Hinstrucciones 9 y 10 para la instruccién IN. Una forma de fusionar ambas en una sola seria redisefiar la entrada: entrada NZ B) En vez de sustituir respectivamente ADD y CMP por OUT e IN, ahora Jas afiadimos y, adem4s, para varios periféricos. B1) Con los 2 bits de cédigo de operacién no es suficiente para 6 instrucciones. Hay dos soluciones: B11) poner tres bits de cédigo de operacién: por ejemplo: 000 ADD 001 CMP 010 Mov 011 BEQ 100 our 101 IN todavia podriamos afiadir dos més con 110 y 111. Esta solucién nos obliga a cambiar la longitud de uno de los operandos de 7 a 6 bits, o cambiar la longitud de la instruccién,.. No es una buena solucién. B12) fijémonos que las instrucciones BEQ, OUT e IN tienen un solo operando y que, por tanto, de sus 16 bits sélo 9 son validos con lo cual aprovechamos dos bits del campo fuente: Ooxx ADD O1xx cmp 10xX MOV 1100 BEQ 1110 our 111i IN todavia se podria poner otra instruecién con 1101 e incluso més aprovechando que sigue habiendo todavia bits initiles en el campo fuente de estas tres instrucciones. warauewrpo La tabla de programacién de la pég 29 quedaria: salto SOOKK 01000 00110 OOK OOK 00000 poses 00000 01100 20006 KOK 00000 o1iit 00000 00001 10010 ORK 00000 OK 00000 test ml mx0 alul alu0 L/z pe ir a b fz in out M/P quia 1010 1011 1111 ana 011. aia 1a. 1011 a1 1111 011 1002 100 out. 1000 11 0111 41a oud o 0 xX x 0 1 100 decodificacién entre ADD - MOV y el resto de instrucciones ADD ov decodificacién entre CMP - resto CMP decodificacién entre BEQ - resto BEQ no tomado (antes, Wpalabra 12) BEQ tomado (antes, palabra 13) decodificacién entre OUT e IN 1°12 x x 0 0 001 x X 21 0 6 0 00G x xX xX xk 0 0 OO1 dol 1 0 1 0 000 0 Horo ereoDo 0 GececcoceceD0 eoHooe 0 Gcececcc0c000 oFHODe 0 acccecescc050 las palabras 16 y 17 corresponden a la ejecucién de our; las palabras 18 y 19 a la IN. Observemos que ahora el CO3 y el co2 son lo que antes eran COl y CO0. Ahora COl y COO son los dos bits altos del campo fuente. El cédigo de operacién que se le pasa al control: 000 salto col > 23 NZ * 03 Z> pe oy ack @ ROM 4 test2testt testo test esto hace cambiar el n# de bits del test, la longitud y anchura de la ROM, o sea, 5 bits para el salto y 22 de anchura en 1a ROM. Por tanto: test0 testl test2 test3 co0 col co2 co3 AHORA test0 testl - test2 - = cod cot ANTES B2) 2A cudntos periféricos podemos acceder? con N = 5 bits entonces 32 periféricos. 5 & destino 2h IR pun e——}E peritérice 0 INO 16 o Resi Ke periférico 31 N31. w/e Organizacién de la nueva UP RR ese ee i mt Ejercicio Ms2 Se quiere modificar la maquina sencilla bdsica de manera que permita almacer informacién internamente dentro de la unidad de proceso (UP) en un conjunto de 4 registros. Las instrucciones de la méquina sencilla podrin tener tos operandos fuente y/o destino tanto en memoria como en un registro y por acceso de lectura o escritura (todos tos casos). Se ha modificado ¢l formato de instrucci6n segin se muestra a continuacién: co. | RMF F E] bit RMF y RMD controlan respectivamente si ef operando F o D se encuentra en un registro interno o en memoria. Si RMF = 0 querré decir que el operando se encuentra en a direccién de memoria especificada en los seis bits del campo F. Si RMF = | entonces el operando fuente se encuentra en ef registro indicado por los dos bits de menos peso del campo F. RMD indica lo mismo para el operando destino pero teniendo en cuenta que sobre él se pueden hacer accesos tanto para lectura como para escritura. A) 4 Qué finalidad tienen Jos multiplexores MXA y MXB (figura)?. MXA y MXB habrian de estar controlados por la UC. {Por qué en este disefio se he simplificado y lo hacen los bits RMD y RMF respectivamente? B) Explicar cudl es la misién de los dos bits de menos peso del bus de direcciones que estén conectados al codificador C1 y al multiplexor MXR. {Cuél es la finalidad de la sefial WR procedente de la UC? C) El bit RMD se envia hacia la UC. gEn qué fase de la instruccién crees que la UC Io necesita conocer?. D) Haced el grito-deestades (incluyendo las fases de biisqueda y decodificacion) y la tabla de programacién referente a ADD, teniendo en cuenta que cualquier operando se puede encontrar tanto en memoria como en uno de los registros internos. Q & ¥ L/z ALU 0,1 ee | u ee me ek pte i I i i i SOLUCION Ms2 A) En. la busqueda del primer operando, por ejemplo de una suma, por la arquitectura de esta méquina, siempre hemos de buscar en la memoria el operando aunque queramos cogerlo de algiin registro interno (RMF = 1). Esto es asi porque, al no tener la memoria chip select, aunque no queramos usarla ella funciona, por tanto, en estos casos hemos de leer pues la escritura es destructiva De esta forma, en la bisqueda de cualguier operando tenemos dos candidatos: el que encuentra en la memoria y el que tomamos de un registro (con los dos bits bajos de la direccién del operando); por tanto, hemos de elegir entre ambos a la entrada de los registros A y B. Esta eleccién se hace a través de los multiplexores MUXA y MUKB selecciondndolos con RMD y RMF respectivamente pues estas sefiales son las tinicas que conocen de dénde se ha de coger el operando. Estos multiplexores podrian controlarse desde la UC pero f£ijémonos en una cosa: una vez traida la instruccién se guarda en el IR; estard alli durante toda su ejecucién; en el momento de carga en IR se sabe de dénde tomaremos los operandos (recordemos que el operando fuente va siempre al registro B y el destino al A por la arquitectura interna de la ALU y por exigencias de la instruccién MOV); por tanto, estos controles que vendrian de la UC serian siempre RMF y RMD, asi pues, para simplificar, se toman directamente. B) La entrada de dos bits al Cl y a los bits de seleccién del MXR son los dos bits m4s bajos de la salida de MX@. Esto es exigencia del enunciado que dice que si RMD = 1, por ejemplo, el operando debe ser cogido de uno de los registros internos; seran los dos bits bajos de este destino en IR los que nos dirdn qué registro hemes de tomar La sefial WR es muy importante. Supongamos que el decodificador funciona si val = 1 (en caso contrario todas sus salidas serén cero y asi no se. podr4 cargar valores en ningin registro). Mientras queramos leer un operando, sea de donde sea, esta sefial ha de valer cero para no machacar el contenido de los registros. Sélo ha de valer ‘1’ cuando, en etapa de escritura de resultado, el destino sea registro (RMD = 1). C) Asi pues, se deduce que WR sdio vale ‘i’ en la etapa de escritura para las instrucciones que la tengan, si RMD = 1 por ejemplo: palabra 5 de ADD palabra 7 de Mov (pagina 29), Por esto sélo RMD va a la UC y no RMF. 10 a re i es gee La salto xx000K XO oo1i1 00000 00000 El secuenciador quedaria: test2 es nuevo; original; tabla de programacién de la pég 29 test ml mx0 alul alu0 L/E pe ir a b fz wr qt 11n 1011 0111 0121. bem ee Woason-so 44x test2 testy test PRM HO x x 0 0 001 00 x * 0 001000 x xX 0 @ 00000 o 0 1 000010 0 0 0 09 00012 salto test3 i operando 1 operando 2 decod dest. memoria registro (test3 es como test2 en la méquina test1 y test0 son los mismos) eng ge at em pee me Be We ee Ejercicio Ms3 Disefiar la maquina sencilla para gue tenga, ademas de memoria RAM, una memoria ROM. En la RAM se guardardn s6lo los datos y en la ROM sélo el programa, Reescribir ta tabla de wprogramacién en dos casos: A) sin posibilidad de acceder simulténeamente a ambas con direcciones diferentes. B) con posibilidad de acceder simulténeamente con direcciones diferentes. Pensar especialmente en qué fase de cada instruccién se puede hacer. SOLUCION Ms3 A) Cuando sélo tenfamos una memoria RAM, la salida de ésta alimentaba tanto a los registros de datos A y B, como al de instrucciones IR, Era el programa (UC) el que, segtin si buscaba dato o instrucciém, daba orden de carga en alguno de estos registros. Ahora separamos RAM y ROM, por tanto: - ROM -> instrucciones ~> IR - RAM -> datos -> ROB © sea, ambas memorias tienen los mismos bits de direcciones pero diferentes buses de salida como se puede observar en la figura 1. La ROM no tiene orden de L/E pues gélo es de lectura. Asi mismo, al igual que en la m4quina inicial, ninguna de ellas tendra chip select. La tabla de pprogramacién en este caso es la misma que la original de la pagina 29 debido a que los bits de direccién de las memorias son los mismos. Este redisefio, pues, sélo logra una cosa: duplicar la capacidad de memoria. a2 re Rt me piety em to Te ei eV PC he 41 L/E 7 ROM RAM —|1 @ @ —>|2 >|3 SAL SAL ENP MUX_0,1 K D . co 0,1 FB w>a— > A —>__® ALU 0,1 Figura 1 2B ‘oh ninth ett oes Sl Be ene B) Adem4s de tener en este otro disefio doble de capacidad de memoria, vamos a hacerlo de tal forma que vaya més répida la ejecucién de una instruccién disminuyendo e1 ntmero de linstrucciones asociadas a ella. Para ello, al mismo tiempo que terminamos de ejecutar un ADD, por ejemplo (palabras 3, 4 y 5), buscamos la nueva instruccién (palabra 0). Para ello hemos de poder acceder a ambas memorias con bits de direccién diferentes (figura 2): - a la ROM con él PC (caso normal para buscar la siguiente instruccién) o con el campo destino de una instruccién BEQ si se hha de realizar un salto. - a la RAM con el campo destino o con el fuente de la instruccién pues son las direcciones de los operandos. La tabla de pprogramacién de la pdég 29 quedar‘a: salto test mam mom alul alu0 L/E pc ir a b fz 0 xo lll x o xX xX 0 1100 0 bisqueda 1 1000 100 x x xX * 0 0 000 0 decodif 2 0110 101 x xX xX X 0 0 000 6 decodif. 3 OX 111 0 x xX * @ 0 001 0 4 xX lll 1 xX xX x 0 0 010 0 ap 5 0001 021 1 @ 0 0 2 1100 1 dbisqueda 6 xxxx 111 0 X X xX 0 0 001 0 mov 7 0001 012 1 0 12 0 2 1100 1 bisqueda 8 1100 101 x xX xX X 0 0 000 0 decodif. 9 XXxXx 111 0 xX xX xX @ 0 001 0 10 XxXK 111 1 x X X 0 0 010 0 cw 11 0001 O21 x 0 0 2 0 2 100 1 bisqueda 12 1110 110 x X xX xX 0 0 000 0 decodif 13 0001 011 x o x xX 0 11200 0 no saita 14 0001 011 x 2X x 0 1 100 0 salta en las |ipalabras de fin de instruccién (5, 7, 11 y 13) se ordena cargar en el IR la siguiente instruccién que se busca en la ROM a partir de la direccién que contiene el PC (MXROM = 0); la [palabra 13 también es final de instruccién, se carga por tanto el IR pero MXROM = 1 para que la busqueda de esta siguiente instruccién se haga con el campo destino pues es un salto efectivo, De esta forma, la Upalabra 0 sélo se ejecuta al inicializar la maquina y, en media, la ejecucién de un programa es un 15% mds répida. Para finalizar una cuestién a tener en cuenta: supongamos la instruccién ADD, buscamos la siguiente instruccién en la upalabra 5, gse podia haber buscado en la ppalabra 3 0 en la 4? La respuesta es si se podia buscar antes pero no se puede cargar en el IR hasta la wltima palabra de AOD pues si no, cambiaria el destino donde dejar el resultado de la suma. 14 ALU 0,1 Pigura 2 poe i -] Fee ees (cacti ca coellllaaeal Ejercicio Ms4 Interesa sustituir la instrucci6n ADD de la méquina sencilla por la instruccién de multiplicacién: MUL F, D (D := F * D). Esta operacién tarda més en ser realizada por la ALU que el resto de operaciones (suma, comparaci6n, etc.): mientras que estas tltimas necesitan un tnico ciclo en la ALU (upalabra 5 en la instruccién ADD, por ejemplo), la multiplicacién necesita dos ciclos. A) Redisefiar la m4quina para que Ja ejecucién de la multiplicacién se solape con fa bisqueda de la siguiente instruccién. B) Reescribir las ppalabras 3, 4 y 5 (instruccién MUL). C) {Cémo podria hacerse solapamiento en las instrucciones de la méquina original cambiando s6lo el programa? D) ¢Cudntos ciclos tarda en ejecutarse ef siguiente programa?: MUL A,B CMP B,C BEQ final E) ;Cémo influirfa este redisefio en la m4quina original? SOLUCION Ms4 A) Supongamos que estamos ejecutando una instruccién MUL, en la palabra 3 y 4 hemos buscado los dos operandos, en la palabra 5a la ALU empieza a realizar la multiplicacién, en la Wipalabra 5b, se termina de realizarla y guardamos el resultado en la memoria. Sélo es posible buscar la nueva instruccién durante la palabra Sa pues es la tinica donde no se accede a la memoria: ésta es la primera idea bdsica de la que todo depende. si la mueva instruccién la buscamos durante la palabra 5a, habré gue guardarla en algin sitio hasta terminar la MUL pues si la guarddsemos en el IR, el campo destino (indica dénde se deja el resultado de la multiplicacién) cambiaria; por tanto hemos de dejarla en otro registro: PIR. Esto exige una sefial més para poder cargarlo: M -> PIR: Adem4s se tiene que poder elegir de dénde se coge en cada momento la instruccién para el IR (MK): - de la memoria, caso normal. - del registro PIR después de una MUL. 16 L/E @+1 -> PC MUX 0,1 B ALU 0,1 fet ml el uw ‘seal SOR fie nei -_ é Pa eet B) Una primera versién de |lprograma para poner MUL en la méquina original seria: salto test muxl mux0 alul alu0 L/E pe ir ab fz busqueda de instruccién decodificacién decodificacién busqueda primer operando en ADD busqueda segundo operando en ADD Sa Xxxx 111 x x 0 0 o 0 000 5b 0600 O11 1 1 0 oO 1 0 000 BENHO En la ftpalabra 5a sélo se ordena a la ALU multiplicar, en la 5b se sigue multiplicando (2 ciclos), se guarda el resultado en la memoria y se recoge el flag z. Estamos desperdiciando la fipalabra Sa. La idea serd: ypalabra Sa: Muscl=mux0=0 @irecciona la memoria con el PC. @+1-> PC = 1 se carga nuevo PC. M-> PIR= 1 orden de carga en PIR. palabra 5b: MX = 1, MIR= 1 trasvasa la instruccién buscada de antemano (PIR) a IR. salto = 0001 la instruccién ya ha sido buseada. La tabla de fprogramacién queda: salto test muxl mux0 alul alu0 L/E pe ir ab fz pir MK 0 bisqueda de instruccién o 0 1 decodificacién 0 0 2 decodificacién o 0 3 basqueda primer operando en ADD 0 0 4 basqueda segundo operando en ADD 0 0 Sa xXXXX 111 0 0 0 oO 0 100001 0 Sb 0001 011 1 1 0 G6 2 010020 1 La orden de carga de PC sustituye a la de la wpalabra 0, esto es, si la instruccién MUL estd en la direccién de memoria T, por ejemplo, al ir a,buscarla (palabra 0) dimos orden de incrementar el PC (en la pipalabra 1, PC <= 8). Hn la ppalabra 5a, se busca y se guarda la siguiente instruccién a MUL y se da una nueva orden de incrementar PC; en la [palabra Sb, PC <= 9. 18 ne PA Epes i i I c) Bn la ADD no se puede hacer porque en sus tres jipalabras (3, 4 y 5) 1a memoria estd ocupada buscando operandos o dejando el resultado. Sélo se podria hacer si los datos estuvieran en una memoria (RAM) y las instrucciones en otra (ROM) (ejercicio 3). En la comparacién se podria hacer en la ppalabra 11, porque en ella no se usa la memoria: MUX1 = MUXO = 0; PC = IR = 1; salto = 0001 Bn la instruccién MOV no se puede hacer por la misma razén que en ADD. En el salto BEQ: si el salto es efectivo ejecutamos las palabras 12 y 13, en ésta ultima ya se hace la btisqueda de antemano, sélo que MUX1 = MUXO = 1 para coger como nueva direccién de instruccién el campo destino, Si el salto no es efectivo sélo se ejecuta la ppalabra 12, en ésta no se puede hacer de antemano porque también es ejecutada para saltos efectivos y, para éstos por tanto, se harfa dos veces. D) n® ciclo Accién jpalabra 1 biisqueda de MUL a 2 decodificacién de MUL 1 3 decodificacién de MUL 2 4 busqueda primer operando de MUL 3 5 busqueda segundo operando de MUL 4 6 se empieza a multiplicar y busqueda de CMP Sa 7 se termina de ejecutar MUL Sb 8 decodificacién de CMP 1 9 decodificacién de CMP & 10 busqueda primer operando de CMP 3 i btisqueda segundo operando de CMP 1o 12 ejecucién de CMP 1 13 biisqueda de BEQ oO 14 decodificacién de BEQ 1 45 decodificacién de BEQ g 16 salto efectivo 0 no efectivo 12 17 si salto efectivo 13 se tarda por tanto 16 ciclos pues si el salto es tomado nos ahorramos la busqueda de la siguiente instruccién (palabra 0}. 19 ® foe ce eo Bg E) Suponer que hemos buscado la instruccién (i), lo mejor seria, mientras la estamos decodificando (palabra 1), buscar la siguiente instruccién (i+1), guardarla en PIR e incrementar PC. De esta forma, al término de la ejecucién de cualquier instruccién (ypalabras 5, 7, 11, 12 y 13) irfamos siempre a la palabra 1. En estas palabras final de ejecucién cargariamos IR haciendo MX = 1. Asi pues, la palabra 0 sélo se ejecuta al inicializar la m4quina. La tabla de jiprogramacién quedari salto test muxl mux0 alul aluO L/E pe ir a b fz pir MX 0 xx 111 0 0 xX x 0 110000 0 1 1000 100 0 oO xX xX 0 10000121 0 2 0110 101 x xX x xX 0 000000 0 3 XXXX 111 primer operando de ADD 0 0 4 XXXX 111 segundo operando de ADD oo 5 go0L 011 1 12 0 O 1 0100 10 i1ap 6 XXXX 111 operando fuente de Mov ar) 7 0001 011 2 2 2 0 2 0 100 2 0 1 Mov 8 1100 101 decodificacién 0 0 9 XXXX 111 primer operando de CMP 0 0 10 XXXX 111 segundo operando de CMP 0 0 11 0001 011 xX X 0 1 0 01001 0 1c 12 0001 010 X xX XxX XxX @ 01000 0 1 BEQ 13 0001 012 2 4 xX xX 0 11000 0 0 BEQ en la palabra 13 (salto efectivo) se rompe la secuencialidad en la btisqueda y ejecucién de instrucciones; direccionamos la memoria con el campo destino (MUX1 = MUXO = 1), damos orden de carga en PC de ese valor (+1); damos orden de carga también en IR pero de 1a instruccidén que se va a buscar a memoria, no se hace pues trasvase desde PIR (MK = 0), no ha servido en este caso avanzar tarea porque saltamos. Esta versién no funciona para los saltos efectivos pues se ejecutan dos pipalabras: la 12 y la 13; en la 12 se hace trasvase con lo cual, al direccionar en la 13 la memoria con el campo destino, éste ha cambiado (el IR habr4 sido sustituido por ei PIR) y esto no debe ocurrir. El trasvase de la 12 sélo se ha de producir si el salto no es efectivo; por tanto hemos de decodificar respecto a Z para distinguir ambos casos: salto test muxl mux0 alul alu0 L/E pe ir ab fz pir Mx 12 (1110 110 x x x x oO 0000 00 0 dec 13° 0001 011 x x x x 0 0100 0 6 1 BEQ 14 0001 O11 1 1 x x 0 1100 00 0 BEQ 20 I ' 3 a a Be eee Ejercicio Ms7 Se desea realizar una nueva versién de la maquina sencilla que incorpore un nuevo modo de direccionamiento Hamado INDEXADO. Este modo requiere de un nuevo registro en la UP llamado Registro Indice IND: M->ind La instruccién que incorpora este modo de direccionamiento es: MOVIND F,D cuyo efecto es: M(D) <- M+ IND) ‘Si M(F + IND) = 0 entonces Z <- 1 32 a e a | FS ia ney nt ae por ejemplo, supengamos que ejecutamos Ja instruccién MOVIND 3,9: ANTES DESPUES MEMORIA MEMORIA @ 3 18 18 MOVIND 3, 9 > 9 2 9 4 7 4 17 4 IND IND 14 14 L___] Zz z |o Ademés necesitamos la instruccién LOADIN® D para cargar un valor inicial en el registro IND: IND < M(@) Modificar la estructura de la maquina sencilla original para que sea posible implementar este modo de direccionamiento. Escribir el uprograma de control correspondiente a estas nuevas instrucciones (sustituyen a MOV y BEQ respectivamente) NOTA MUY IMPORTANTE: a la ALU solamente pueden entrar como operandos los registros A y B, el IND no. SOLUCION Ms7 Si el registro IND no. puede entrar a la ALU necesitaremos un nuevo sumador cuyos operandos serén F e IND (cogerdé los 7 bits més bajos de éste). El resultado de la suma es la direccién donde se encuentra el dato a mover; podemos aprovechar la entrada libre del multiplexor de direcciones de la memoria RAM: 33 fos eet ed @+1 -> PC MEMORIA OSES ENT La tabla de Hprogramacién quedaria salto muxl mux0 alul alu0 L/E pe ir ab fz M->ind 6 xx O 1 xX x 0 0 001 0 0 (leemos con @ <- FHIND (MX = 01) y guardamos el dato en B) 7 0000 1 4 2 0 2 0 000 1 0 ‘movrND (pasa el dato por la ALU {ALU = 10) sin modificarse y se guarda en la memoria con direccién @ <- D (MK = 11)) 12 0000 1 #4 xX xX 0 0 009 0 1 LOADING (se lee de memoria con @ <- D el dato que va a ser guardado en el registro IND (M <- IND = ij 34 t £ Ejercicio Ms8 Se desea realizar una nueva versién de la méquina sencilla con un nuevo y tnico método de direccionamiento: ABSOLUTO INDIRECTO. En este nuevo direccionamiento los operandos F y D de Ia instruccién no son las direcciones de memoria donde se encuentran los datos, sino que son Ja direccién donde se encuentra a su vez la direccién de memoria donde esté el dato; veamos un ejemplo donde se comparan el modo de direccionamiento de la maquina original y éste otro nuevo: Modo de direccionamiento ABSOLUTO (el de la méquina original): los 7 bits de F especifican la direcciéa del operando fuente, idem para el campo D. Ejemplo: INSTRUCCION MEMORIA IR: 0000110 16 bits — @=6] operando Modo de direccionamiento ABSOLUTO INDIRECTO: los 7 bits de F especifican la direccién de una palabra que aloja en los. 7 bits de menor peso la direccién del operando fuente, idem para D. IR: 0000110 Ds \____» @ <6 |x..xooo1011 Ejemplo: @=11 | eparando | Modificar Ja estructura de la m4quina sencilla original. Reescribir el programa de control que corresponde a la Suma. SOLUCION Ms8 La caracteristica m4& importante del nuevo disefio es que se necesita un nuevo registro (AUX) donde almacenar el contenido de la posicién de memoria indicado por el campo F o el D, este contenido (que en la m4quina original ya seria el dato) es la direccién del dato 35. wn E A em en Si no la guardamos en el registro y la directamente por la entrada libre de MUX, efecto de "carreras" que habria que controlar con el tamafio muy adecuado (y muy peligroso} del ciclo de reloj. " -> Pc PC bac [2k muxl mux0 alul aluO b/g pe ir 1 0 1 0 0 3a 3b 4a 4b 5 oe eb om Hocos 36 » o ecoHo ALU 16 fz M->aux o 2 AUX <- MIF) o 0 B <- M(ADX} o 1 AUX <- M(D) o 0 A <- M(AUX) 1 0 M(AUX) <~ 4; introducimos se produciria un 2 ome | I I i ' bead Ejercicio Ms9 Se desea realizar una nueva versién de la maquina sencilla con un nuevo. modo de direccionamiento: INMEDIATO; este modo de direccionamiento s6lo se utilizaré para la instruccién MOV (que ahora se lamaré MOV_INM). Formato de 1a nueva instruccién: ~MOV_INM Destino. El campo de 7 bits destinado en la instruccién original MOV a la direccién del operando fuente aquf no importa (= X) pues el dato fuente ya esté en la siguiente palabra de memoria (como dato del6 bits, no como direccién), es la tnica diferencia con la instruccién original MOY (ver ejemplo siguiente): RAM @i 01XXXXXXX0010001 | MOV_INM 17 RAM (17) <- 15 @i+1 | 0000000000001111 | dato=15 | (Es necesario modificar la arquitectura de la méquina original Modificar el programa de la méquina sencilla original sdlo en el caso de la instruceién MOV. SOLUCION Ms9 La caracteristica m4s importante de la nueva m4quina es que cuando encuentre una instruccién MOV_INM el PC estard apuntando a la siguiente posicién de memoria pensando, como ocurre siempre, que es la siguiente instruccién, pero no: es el dato a mover. As{ pues utilizaremos el PC en ese momento (palabra 6) para direccionar el dato fuente y cargarlo en el registro B. En esta misma [palabra daremos orden de cargar PC <- PC + 1 para que ste quede apuntando a donde estd4 verdaderamente la siguiente instruccién. En la siguiente pinstruccién la ALU movera el dato de entrada y se grabaré en la memoria RAM en la posicién que indique el destino, almacenado en el IR que no ha sido tocado desde el inicio de 1a instruccién. El pprograma: mux mux0 alu L/E pe ir a 6 0 0 xX 0 100 00 bE 1 7 4 4 2 1 0000 2 0B <- M(PC);PC <- PCHL 1 M(D) <- 3; 2; salto a 0 37

También podría gustarte