Estructura de Computadores El computador simple ------------------------------------------------------------------------Autores: David Guerrero. Alberto Molina e Isabel Gómez Usted es libre de copiar, distribuir y comunicar públicamente la obra y de hacer obras derivadas siempre que se cite la fuente y se respeten las condiciones de la licencia Attribution-Share alike de Creative Commons. Texto completo de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/es/ -------------------------------------------------------------------------- Guión El punto de partida: La calculadora Automatización en la ejecución (CS1) Almacenamiento de los datos y ampliación de modos de direccionamiento (CS2) Diversificación de instrucciones. Ejecución no secuencial (CS3) 2 CS2 Es necesario aumentar la capacidad de almacenamiento de datos del sistema y que no quede únicamente limitada a sus 8 registros. Para ello se ampliará la arquitectura anterior y al nuevo sistema le llamaremos el computador simple 2 (CS2). Existen dos opciones almacenamiento de datos: para dotar al sistema de Utilizar un único sistema de memoria para datos e instrucciones lo que se denomina arquitectura Von Neumann. Utilizar sistemas de memoria distintos para datos e instrucciones, lo que es denominado arquitectura Harvard. 3 CS2 En la arquitectura Harvard, las características de las memorias y los buses de interconexión de las mismas pueden diferir. Normalmente los datos requieren memoria de lectura y escritura En la arquitectura de Von Neuman el sistema de memoria es único y por lo tanto tanto memoria como buses son únicos. El disponer de dos sistemas de memoria separados dota de eficiencia al sistema ya que normalmente es el acceso a memoria lo que enlentece su funcionamiento y en este caso se puede estar accediendo a instrucciones y datos simultáneamente. Las CPU modernas incorporan aspectos de ambas arquitecturas. La memoria cache interna a la CPU se separa en dos (datos e instrucciones), pero la memoria principal es única. Desde el punto de vista del programador se trata de una arquitectura de Von Neumann, pero desde el punto de vista del hardware es Harvard. 4 CS2 El CS2 dispondrá Harvard. de una arquitectura El conjunto de instrucciones debe ser ampliado ya que se requiere manejar los datos almacenados en la memoria. 5 CS2 Conjunto de instrucciones (ISP) del CS2 CO SINTAXIS FUNCIÓN 00000 00001 00010 00011 11111 01000 01010 11010 01111 10111 ST Y o Z,Rf LD Rd, Y o Z STS dir, Rf LDS Rd,dir LDI Rd,dato ADD Rd,Rf SUB Rd,Rf SUBI Rd,dato MOV Rd,Rf STOP MEMDAT(Y o Z)←Rf Rd←MEMDAT(Y o Z) MEMDAT(dir)←Rf Rd←MEMDAT(dir) Rd←dato Rd←Rd+Rf Rd←Rd-Rf Rd←Rd-dato Rd←Rf NOP Las 4 primeras instrucciones son para intercambio de datos con la memoria. Es necesario aumentar los bits del código de operación. Se han añadido nuevas formas de acceso a los operandos (modos de direccionamiento). 6 CS2 Conjunto de instrucciones (ISP) del CS2 CO SINTAXIS FUNCIÓN 00000 00001 00010 00011 11111 01000 01010 11010 01111 10111 ST Y o Z,Rf LD Rd, Y o Z STS dir, Rf LDS Rd,dir LDI Rd,dato ADD Rd,Rf SUB Rd,Rf SUBI Rd,dato MOV Rd,Rf STOP MEMDAT(Y o Z)←Rf Rd←MEMDAT(Y o Z) MEMDAT(dir)←Rf Rd←MEMDAT(dir) Rd←dato Rd←Rd+Rf Rd←Rd-Rf Rd←Rd-dato Rd←Rf NOP Arquitectura load/store No se opera contra la Memoria. Solo Se intercambian datos con ella en sentido memoria->registros O registros->memoria 7 CS2 Conjunto de instrucciones (ISP) del CS2 CO SINTAXIS FUNCIÓN 00000 00001 00010 00011 11111 01000 01010 11010 01111 10111 ST X o Y,Rf LD Rd, X o Y STS dir, Rf LDS Rd,dir LDI Rd,dato ADD Rd,Rf SUB Rd,Rf SUBI Rd,dato MOV Rd,Rf STOP MEMDAT(Y o Z)←Rf Rd←MEMDAT(Y o Z) MEMDAT(dir)←Rf Rd←MEMDAT(dir) Rd←dato Rd←Rd+Rf Rd←Rd-Rf Rd←Rd-dato Rd←Rf NOP Las operaciones de suma y resta se realizan sólo con datos guardados En registros 8 CS2 Conjunto de instrucciones (ISP) del CS2 CO SINTAXIS FUNCIÓN 00000 00001 00010 00011 11111 01000 01010 11010 01111 10111 ST Y o Z,Rf LD Rd, X o Y STS dir, Rf LDS Rd,dir LDI Rd,dato ADD Rd,Rf SUB Rd,Rf SUBI Rd,dato MOV Rd,Rf STOP MEMDAT(Y o Z)←Rf Rd←MEMDAT(Y o Z) MEMDAT(dir)←Rf Rd←MEMDAT(dir) Rd←dato Rd←Rd+Rf Rd←Rd-Rf Rd←Rd-dato Rd←Rf NOP Se ha aumentado el número de bits del código de operación. Pero no se utilizan todas las combinaciones posibles que serían 32. 9 CS2 Conjunto de instrucciones (ISP) del CS2 CO SINTAXIS FUNCIÓN 00000 00001 00010 00011 11111 01000 01010 11010 01111 10111 ST Y o Z,Rf LD Rd, X o Y STS dir, Rf LDS Rd,dir LDI Rd,dato ADD Rd,Rf SUB Rd,Rf SUBI Rd,dato MOV Rd,Rf STOP MEMDAT(Y o Z)←Rf Rd←MEMDAT(Y o Z) MEMDAT(dir)←Rf Rd←MEMDAT(dir) Rd←dato Rd←Rd+Rf Rd←Rd-Rf Rd←Rd-dato Rd←Rf NOP Formas de direccionar Directamente con el valor de la dirección de la memoria de datos Con un dato guardado en un registro que tiene el valor de la dirección Contenido del registro Con el dato que esta guardado en la propia instrucción 10 CS2 Modos de direccionamiento del CS2: Directo de registro: MOV Rd,Rf El dato se encuentra en un registro. Indirecto de registro: ST Yo Z,Rf El dato se encuentra en una posición de memoria cuya dirección está almacenada en un registro denominado “registro base”. (En este caso dos de los 8 que tiene la arquitectura, R6 o Y; R7 o Z). STS dir, Rf Absoluto: El dato se encuentra en una posición de memoria cuya dirección se da como operando. Inmediato: SUBI Rd,dato El dato se encuentra en la propia instrucción. 11 MOV Rd,Rf MOV R6,R2 ST Yo Z,Rf ST Y,R2 STS dir, Rf STS $2,R2 Antes de la ejecución Pos cont $03 R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $00 Memoria Antes de la ejecución Pos cont $03 R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $00 Memoria Antes de la ejecución Pos cont $03 R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $00 Memoria Después de la ejecución Pos cont $58 R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $00 Memoria Después de la ejecución Pos cont $03 R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $58 Memoria Después de la ejecución Pos cont $03 R6 $00 $34 $58 R2 $01 $56 $02 $58 $03 $00 Memoria 12 SUBI Rd,dato SUBI R6,7 Antes de la ejecución Pos cont $03 R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $00 Memoria Después de la ejecución Pos cont $FC R6 $00 $34 $58 R2 $01 $56 $02 $78 $03 $00 Memoria 13 CS2 Formato de instrucción del CS2 formato 15 14 13 12 11 10 9 8 Este formato es necesario para los modos de direccionamiento absoluto e inmendiato. Campo para guardar la dirección o el dato de 8 bits. 7 6 5 4 3 - - - - - A instrucción con operando registro B instrucción con operando memoria o inmediato código de operación 2 1 0 registro operando 2 (registro base en ST/LD) registro destino (fuente en ST) dato inmediato / dirección del dato Las instrucciones son de 16 bits y siguen ocupando una palabra de memoria. En el CS2 el ancho de la memoria de código será de 16 bits. También será necesario que el registro IR sea de este tamaño. 14 CS2 Formato de instrucción del CS2 formato 15 14 13 12 11 10 9 8 7 6 5 4 3 - - - - - A instrucción con operando registro B código de operación instrucción con operando memoria o inmediato 2 1 0 registro operando 2 (registro base en ST/LD) registro destino (fuente en ST) dato inmediato / dirección del dato MOV R3,R2 ST Y,R2 STS $F3,R2 01111 011 - - - - - 010 00000 010 - - - - - 110 00010 010 1111 0011 15 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 data 3 CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B W IR 16 IR[2:0] 8 A IR[15:11] IR[16] SB START STOP 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto 16 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 data 3 CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) WMAR WMEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B WIR 16 IR[2:0] 8 A IR[15:11] IR[16] SB START STOP 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto Parte añadida con objeto de guardar mas datos Además de los guardados en la pila de registros 17 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 data 3 CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B W IR 16 IR[2:0] 8 A IR[15:11] IR[16] SB START STOP 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Memoria de lectura/escritura con capacidad 28x8. Terminales de datos bidireccionales Registro oculto 18 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 data 3 CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B WIR 16 IR[2:0] 8 A IR[15:11] IR[16] SB START STOP 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto Registro que guarda de manera temporal las direcciones que van a ser accedidas en la memoria de datos 19 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 210 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 data 3 CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B W IR 16 IR[2:0] 8 A IR[15:11] IR[16] SB START STOP 16 Solo entradas 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto El camino para intercambiar datos entre los registros y la memoria siempre pasa por la ALU y el acumulador 20 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 data 3 CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B W IR 16 IR[2:0] 8 A IR[15:11] IR[16] SB START STOP 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto Camino para que los datos vayan de la memoria a los registros. Usa el bus compartido. 21 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 16 IR[2:0] data 3 00001000 0 1 CODMEM 256x16 IR[7:0] 8 OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) STS dir, Rf STS 8,R3 -0010 011 00001000 WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B W IR dir INM A IR[15:11] IR[16] SB START STOP 16 210 8 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto Direccionamiento absoluto e inmediato. Necesidad del MUX a la entrada de la ALU 22 CS2 Implementación del CS2 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 16 IR[2:0] data 3 8 CODMEM 256x16 IR[7:0] 8 OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) STS dir, Rf STS 8,R3 -0010 011 00001000 WMAR W MEM RMEM DATMEM 256x8 dir IPC CL PC MAR[8] B W IR dir INM A IR[15:11] IR[16] SB START STOP 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC 00001000 8 Registro visible Registro oculto Direccionamiento absoluto e inmediato. Necesidad del MUX a la entrada de la ALU 23 CS2 Modificaciones en la arquitectura del CS2: todo lo que se ha añadido es para dotar al sistema de almacenamiento de datos en memoria. Sistema de memoria de datos. Registro de direcciones de la memoria (MAR). Acumulador (AC). Se ha añadido este registro a la salida de la ALU porque esta debe compartir el bus. Multiplexor a la entrada de la ALU porque esta debe transferir datos tanto de los registros como de los 8 bits menos significativos del registro IR a MAR en el caso de direccionamientos absoluto e indirecto. Aumento del tamaño de palabra en la memoria de código Aumento del tamaño del registro IR 24 CS2 Descripción RT de los nuevos componentes W R SISTEMA DE MEMORIA DE DATOS (MEMDAT) A7-0 D7-0 8 8 8 IN W MAR OUT W MAR ← OUT:= 0 1 MAR IN MAR MAR WR MEMDAT[A7-0]← D7-0:= 00 01 10 11 MEMDAT[A7-0] MEMDAT[A7-0] D7-0 PROHIBIDO H.I. MEMDAT[A7-0] H.I. PROHIBIDO 8 8 IN AC W OUT R 8 WR AC ← OUT:= 00 01 10 11 AC AC IN IN H.I. AC H.I. AC 25 CS2 ST YoZ,Rf 1. AC←REG[IR2-0] 2. MAR←AC; AC←REG[IR10-8] 3.MEM[MAR]←AC TB WAC RAC WMAR TA WAC RAC WMEM 3 0 1 2 3 4 5 6 7 8 8 210 SA 0 1 2 3 4 5 6 7 8 R0 R1 R2 R3 R4 R5 R6 - Y R7 - Z COMANDOS A LA UNIDAD DE DATOS WREG w0 w1 w2 w3 w4 w5 w6 w7 0 1 2 3 4 5 6 7 2 1 0 IR[10:8] SA 5 IR[16] CODMEM 256x16 IR[7:0] 8 dir INM OUT 8 PC[8] S (OUT=A+B) R (OUT=A-B) TA (OUT=A) TB ( UT=B) W MAR W MEM RMEM DATMEM 256x8 dir IPC CLPC MAR[8] B A Los valores almacenados en IR debe corresponder a los registros base y fuente data 3 8 W IR 16 IR[2:0] SB START STOP IR[15:11] 16 210 0 1 UNIDAD DE CONTROL DEL CS2 8 AC[8] WAC RAC Registro visible 8 Registro oculto 26 CS2 Descripción de las microoperaciones de las instrucciones de intercambio De datos con la memoria CO (I15 I14I13 I12 I11) 00000 00001 00010 00011 Instrucción ST YoZ,Rf LD Rd,YoZ STS dir,Rf LDS Rd,dir Micro 1 AC←YoZ TB WAC AC←YoZ TB WAC AC←dir TB WACINM AC←dir TB WACINM Micro 2 MAR←AC RAC WMAR AC←Rf TA WAC MAR←AC RAC WMAR MAR←AC RAC WMAR AC←Rf TA WAC MAR←AC RAC WMAR Micro 3 MEM(MAR)←AC RAC WMEM RD←MEM(MAR) RMEM WREG MEM(MAR)←AC RAC WMEM RD←MEM(MAR) RMEM WREG 27 CS2 Descripción de las microoperaciones de las instrucciones cuyos operandos Están en registros CO (I15 I14I13 I12 I11) 01000 01010 01111 Instrucción ADD Rd,Rf SUB Rd,Rf MOV Rd,Rf Micro 1 AC←RD+RF S WAC AC←RD-RF R WAC AC←RF TB WAC Micro 2 RD←AC RAC WREG RD←AC RAC WREG RD←AC RAC WREG 28 CS2 Descripción de las microoperaciones de las instrucciones que utilizan modo inmediato CO (I15 I14I13 I12 I11) 11111 11010 Instrucción LDI Rd,dato SUBI Rd,dato Micro 1 AC←dato TB INM WAC AC←RD-dato R INM WAC Micro 2 RD←AC RAC WREG RD←AC RAC WREG 29 Almacenamiento de datos Carta ASM del CS2 S0 0 XS 1 PC ← 0 IR ← MEMCOD(PC) PC ← PC +1 LD STOP ST IR[15:11] STS ADD SUB AC←R[Sa] + R[Sb] LDS LDI SUBI AC ←IR[7:0] AC ←IR[7:0] MAR ← AC R[Sa] ← MEMDAT(MAR) AC ←R[Sb] AC ←R[Sb] MAR ← AC AC ← R[Sa] MAR ← AC AC ← R[Sa] MAR ← AC MEMDAT(MAR) ← AC MEMDAT(MAR) ← AC R[Sa] ← MEMDAT(MAR) MOV AC←R[Sa] -R[Sb] AC ←IR[7:0] AC ←R[Sa] - IR[7-0] AC ←R[Sb] R[Sa] ← AC 30 Almacenamiento de datos Ejemplo de uso del CS2: Realizar un programa que intercambie dos tablas de 4 datos que se encuentran almacenadas en la memoria en las direcciones $60 y $70. MEMORIA DE CÓDIGO Programa LDI R2,1 LDI Y,$60 LDI Z,$70 LD R3,Y LD R4,Z ST Z,R3 ST Y,R4 ADD Y,R2 ADD Z,R2 LD R3,Y LD R4,Z ST Z,R3 ST Y,R4 ADD Y,R2 ADD Z,R2 LD R3,Y LD R4,Z ST Z,R3 ST Y,R4 ADD Y,R2 ADD Z,R2 LD R3,Y LD R4,Z ST Z,R3 ST Y,R4 STOP $Posición contenido $00 $01 $02 $03 $04 $05 $06 $07 $08 … $1B 11111 11111 11111 00001 00001 00000 00000 01000 01000 ... 10111 01000000001 11001100000 11101110000 011-----110 100-----111 011-----111 100-----110 110-----010 111-----010 --- --- Pos contenido $00 ..... $60 $61 $62 $63 … $70 $71 $72 $73 ... ..... DATO1TABLA1 DATO2TABLA1 DATO3TABLA1 DATO4TABLA1 ... DATO1TABLA2 DATO2TABLA2 DATO3TABLA2 DATO4TABLA2 MEMORIA DE DATOS 31