Download Arquitectura del MIPS: Introducción
Document related concepts
no text concepts found
Transcript
Arquitectura del MIPS: Introducción Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons AttributionNonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Evolución y caracterización de los computadores. Arquitectura del MIPS: Introducción. Tipo de datos. El repertorio de instrucciones. Aritmética del computador. El camino de datos. Sección de control. El camino de datos multiciclo. Sección de control multiciclo. Entrada/Salida (I/O). 2 Esquema de contenidos 1. Repertorio de instrucciones MIPS 2. Programa almacenado 3. Sistemas de almacenamiento de datos 3 Introducción: La visión del programador • El funcionamiento de la CPU está determinado por las instrucciones que ejecuta. • El conjunto de instrucciones distintas que puede ejecutar se denomina repertorio de instrucciones • En los computadores actuales las instrucciones se presentan como números y se almacenan en memoria (programa almacenado) • El lenguaje utilizado por el ordenador se denomina lenguaje máquina. El lenguaje ensamblador es una representación simbólica más cercana al humano. 4 Visión software: Jerarquía de traducción Lenguaje de alto nivel temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; TEMP = V(K) V(K) = V(K+1) V(K+1) = TEMP Compilador Fortran Compilador C lw $t0, lw $t1, sw $t1, sw $t0, Lenguaje ensamblador (MIPS) 0($2) 4($2) 0($2) 4($2) Ensamblador MIPS Lenguaje máquina 0000 1010 1100 0101 1001 1111 0110 1000 1100 0101 1010 0000 0110 1000 1111 1001 1010 0000 0101 1100 1111 1001 1000 0110 0101 1100 0000 1010 1000 0110 1001 1111 5 Ejecución de un programa Camino de datos Memoria 0000 1010 1100 0101 1001 1111 0110 1000 1100 0101 1010 0000 0110 1000 1111 1001 1010 0000 0101 1100 1111 1001 1000 0110 0101 1100 0000 1010 1000 0110 1001 1111 ... programa & datos I/O Carga – Decodificación – Ejecución Control 6 Instrucciones • Cada instrucción máquina debe especificar: • Código de operación • Referencia a operandos fuente • Referencia a operandos resultado • Referencia a la siguiente instrucción • Los operandos fuente y resultado pueden estar en alguna de las siguientes localizaciones: • Memoria • Registro de la CPU • Dispositivo de E/S 7 Representación de las instrucciones • Dentro del computador cada instrucción se representa por una secuencia de bits • La instrucción se divide en campos correspondientes a los elementos constitutivos de la misma (código de operación, operandos, etc.) • La descripción en campos y bits se denomina formato de instrucción Operación Ref. operando 1 Ref. operando 2 8 Operaciones del repertorio de instrucciones • • • • Aritméticas Lógicas Transferencia de datos De control de flujo • Instrucciones de bifurcación o salto • Instrucciones de salto condicional • Instrucciones de llamada a subrutina • De control del sistema • De E/S 9 Repertorio de instrucciones escogido: MIPS • • • • • Arquitectura MIPS R2000/R3000 Pionera de las arquitecturas RISC Muy sencilla y uniforme Creada en Stanford (John Hennessy) Utilizada por NEC, Nintendo, Silicon Graphics y Sony. 10 Lenguaje MIPS Instrucciones: • Aritméticas • add, sub, mult, div • Lógicas • and, or, ssl (shift left), srl (shift right) • Transferencia de datos • lw (load), sw (store), lui • Saltos • Condicionales: beq, bne, slt • No condicionales: j, jr, jal 11 MIPS: Ejemplo de sencillez SUMA de dos variables en registros $s1 y $s2, resultado en registro $t0. add $t0, $s1, $s2 # $t0 = $s1 + $s2 En MIPS son nombres de registros • Longitud de instrucción fija: 32 bits • La arquitectura MIPS realiza la mayor parte de los cálculos con datos almacenados en registros • MIPS es sencilla y eficiente • El acceso a memoria se hace a través de operaciones de carga/almacenamiento (transferencia de datos) 12 Registros en el MIPS • 32 registros de 32 bits Número Nombre Uso convencional 0 $zero Valor constante 0 1 $at Reservado por el ensamblador 2-3 $v0-$v1 Para resultados y evaluación de expresiones 4-7 $a0-$a3 Argumentos 8-15 $t0-$t7 Temporales 16-23 $s0-$s7 Salvados 24-25 $t8-$t9 Temporales 26-27 $k0-$k1 Reservado para núcleo de SO 28 $gp Puntero global 29 $sp Puntero de pila 30 $fp Puntero de bloque de activación 31 $ra Dirección de retorno 13 Concepto de programa almacenado • Las instrucciones son representadas como números. • Los programas están almacenados en memoria • Pueden ser leídos/escritos como números. • La memoria: Contiene instrucciones y datos. • Las instrucciones son cargadas automáticamente (control). • Los datos son transferidos explícitamente entre memoria y procesador y viceversa ÆINSTRUCCIONES DE TRANSFERENCIA DE DATOS 14 Concepto de programa almacenado dirección load (lw) ... Registros Procesador save (sw) Datos 0 1 2 3 4 Byte (8bits) . . . . . . Palabra Memoria 15 ¿Dónde están los operandos?: Los operandos pueden estar: • En la instrucción: • Rápido y simple. • Sólo para constantes • En la memoria principal: • Direccionamiento implica muchos bits. • Acceso lento • En los registros de la CPU: • Hay pocos registros: el direccionamiento implica pocos bits • Acceso rápido 16 Sistemas de almacenamiento de datos. Registros Cache Capacidad Coste por bit Tiempo de acceso Memoria Principal Disco magnético Cinta magnética Disco óptico 17 Memorias de acceso aleatorio Tipo de memoria Propósito Borrado Modo de escritura Volatilidad Random Access Memory (RAM) Lec/Esc Eléctrico Eléctrico Volátil Read Only Memory (ROM) Proceso fabricación Lectura No posible Programmable ROM (PROM) Eléctrico (fusibles) Luz UV (chip) Erasable PROM (EPROM) Electrically Erasable PROM (EEPROM) Flash Lectura (reprogramable) Eléctrico (nivel byte) No volátil Eléctrico Eléctrico (nivel bloque) 18 Organización de la memoria • Organizando una memoria de 96 bits: 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 0 1 2 3 4 5 16 bits 12 bits Palabra: 1, 8, 12, 16, 32, … 8 bits 19 Organización de la memoria • Ejemplos 8086 8088 486 Pentium 68000 68020 PowerPC 750 Bus datos 16 8 32 64 16 32 64 Longitud registros 16 16 32 32 32 32 64 Unidad direccionable Byte Byte Byte Byte Byte Byte Byte 20 Direcciones de memoria Dirección (dec) 0 Byte 0 1 Byte 1 2 Byte 2 … … … A nivel de byte Tamaño memoria: N bytes N-1 Byte N-1 8 bits 21 Direcciones de memoria Dirección (dec) 0 Palabra 0 1 Palabra 1 2 Palabra 2 … … … A nivel de palabra 32 bits 22 Direcciones de memoria Dirección (dec) 0 Palabra 0 4 Palabra 1 8 Palabra 2 … … … A nivel de palabra con numeración en bytes MIPS 32 bits 23 Direcciones de memoria Dirección (dec) 0 Byte 0 1 Byte 1 2 Byte 2 3 Byte 3 … … Palabra 0 A nivel de palabra con numeración en bytes MIPS Byte N 8 bits 24 Direcciones de memoria . . . 4n 4n+1 Palabra n 4n+2 4n+3 4n+4 4n+5 Palabra n+1 A nivel de palabra con numeración en bytes 4n+6 4n+7 MIPS 4n+8 4n+9 Palabra n+3 4n+10 4n+11 . . . 8 bits 25 Big Endian, Litte Endian • Orden de almacenamiento en memoria de los bytes dentro de una palabra • Big Endian: El byte más significativo en la dirección más baja • Little-Endian: El byte más significativo en la dirección más alta 26 Big Endian, Litte Endian BIG ENDIAN Direcc. (dec) … … Dato: 12345678 (hex) Dirección: 84(dec) LITTLE- ENDIAN Direcc. (dec) … 84 12 84 78 85 34 85 56 86 56 86 34 87 78 87 12 … … … 8 bits 8 bits 27 Big Endian, Litte Endian BIG ENDIAN Byte 3 Byte 2 Dato: 12345678 (hex) Dirección: 84(dec) Byte 1 Byte 0 … 78 56 34 12 … 32 bits 28 Big Endian, Litte Endian LITTLE ENDIAN Byte 3 Byte 2 Dato: 12345678 (hex) Dirección: 84(dec) Byte 1 Byte 0 … 12 34 56 78 Simula3ms … 32 bits 29