1. Lenguaje del Computador
1.1. Instrucciones: palabras que entiende el ordenador.
1.2. Juego de instrucciones: comandos que entienden una arquitectura.
1.3. Objetivos:
1.3.1. Lenguaje cuyo hardware y compilador sean sencillos de construir.
1.3.2. Maximice el rendimiento.
1.3.3. Minimice el coste.
2. Operaciones aritméticas
2.1. ALU requisito fundamental de las computadoras. Efectúa operaciones matemáticas básicas
3. Circuitos que contienen ALUs
3.1. Microprocesadores.
3.2. GPUs
3.3. FPU
3.4. Procesadores digitales de señales
3.5. Lectores CD
3.6. Televisores de alta definición
4. ALU
4.1. Opera sobre los datos de una instrucción.
4.2. Operaciones de desplazamiento, lógicas y aritméticas.
4.3. Simple sumador-restador
4.4. Descomposición en pasos elementales Ejecutar rápidamente esos pasos.
5. Sistemas numéricos
5.1. ALU procesa números usando el mismo formato.
5.2. Las primeras PCs realizaban.
5.2.1. Complemento a uno
5.2.2. Signo-Magnitud
5.2.3. Sistemas decimales
5.3. Actualmente usan sistemas binarios
6. Tipos de operadores
6.1. Operaciones aritméticas.
6.1.1. Sumas
6.1.2. Restas
6.1.3. Multiplicación
6.1.4. División
6.2. Operaciones lógicas
6.2.1. AND
6.2.2. NOT
6.2.3. OR
6.2.4. XOR
6.2.5. NOR
6.3. Operaciones de desplazamiento de bits
6.3.1. Rotar a la izquierda
6.3.2. Rotar a la derecha
7. Ámbitos de aplicación del operador
7.1. General
7.1.1. Realiza diferentes operaciones.
7.2. Especializado
7.2.1. Realiza una operación de cierta complejidad.
8. Realización del operador
8.1. Operador combinacional
8.1.1. Circuito combinacional
8.1.1.1. Varias operaciones
8.1.1.1.1. Sin memoria
8.2. Secuencial
8.2.1. Circuito secuencial
8.2.1.1. Funciona por fases
8.2.1.1.1. Necesita memoria
9. Operación de multiplicación
9.1. Conjunto de sumador-restador + algoritmo.
9.1.1. Algoritmos
9.1.1.1. Multiplicación binaria sin signo
9.1.1.2. Multiplicación binaria con signo.
9.2. Máquinas potentes cuentan con un operador específico.
9.3. Multiplicadores combinacionales.
9.3.1. Más rápidos pero más complejos
10. Operación de división
10.1. Más compleja que la multiplicación.
10.2. Sumadores-restadores + un algoritmo
10.3. Raro que un computador disponga de un divisor combinacional.
11. Operacion Aritmetica en MIPS
11.1. Cada instruccion aritmetica realiza una unica operación
11.2. Siempre tiene 3 variables
11.3. Sumar : a = b + c
11.3.1. Instruccion MIPS
11.3.1.1. add a, b, c
11.4. Restar a = b - c
11.4.1. Instruccion MIPS
11.4.1.1. sub a, b, c
12. Principio de Diseño 1
12.1. La simplicidad favorece a la regularidad
13. Operandos
13.1. Tienen un numero limitado
13.2. Corresponden a una parte del Hardware, denominada REGISTROS
13.3. Registros
13.3.1. Parte del Hardware visible a los programadores
13.3.2. En MIPS hay 32 registros de 32 bits
13.3.3. Convencion MIPS para representar registros
13.3.3.1. Usa el simbolo $ seguido de dos caracteres
13.3.3.2. $s0,...$s7 para variables de larga duracion
13.3.3.3. $t0,...$t7 para variables temporales
13.3.3.4. Operacion a = (b + c) - (d + e)
13.3.3.4.1. a : $s0, b : $s1, c : $s2, d : $s4, e : $s5
14. Principio de Diseño 2
14.1. Mas Pequeño es mas rapido
15. Operandos en Memoria
15.1. En MIPS las operaciones se realizan entre registros
15.2. las estructuras de datos, Arrays, se guardan en memoria
15.3. Se necesitan instrucciones de transferencia de datos
15.3.1. LoadWork lw
15.3.1.1. para cargar datos de la memoria en registros
15.3.2. StoreWork sw
15.3.2.1. Para guardar registros en Memoria
15.4. Operacion A[12] = h + A[8]
15.4.1. A es un Array de 100 palabras
15.4.1.1. h : $s2 , A : $s3, palabra = 4bytes
15.4.1.1.1. Instrucciones MIPS
16. Diseño de Repertorio de Instrucciones
16.1. el repertorio de instrucciones influye en :
16.1.1. Numero de Instrucciones para realizar una tarea
16.1.2. El diseño del compilador
16.1.3. El dieseño de la ruta de datos y unidad de control
16.2. CISC: Complex Instruction Set Computer
16.2.1. gran numero de instrucciones completas
16.2.2. Hardware mas complejo
16.3. RISC: Reduced Instruction Set Computer
16.3.1. pocas instrucciones y muy basicas
16.3.2. Se necesita mas instrucciones para realizar una tarea
16.4. Aspectos a tener en cuenta
16.4.1. Tipo de almacenamiento de los operandos
16.4.2. Modos de Direccionamiento soportados
17. Tipo de Almacenamiento de los Operandos
17.1. Pila
17.1.1. operandos implicitos
17.1.1.1. los operandos estan en el tope de la Pila
17.2. Acumulador
17.2.1. un operando implicito y otro explicito
17.3. Registros de proposito General GPR
17.3.1. operandos explicitos
17.3.2. Mas usado en las Computadoras Modernas
17.3.3. 3 Tipos
17.3.3.1. Registro - Registro
17.3.3.1.1. todos los operandos estan en registros
17.3.3.1.2. codificación sencilla
17.3.3.2. Registro - Memoria
17.3.3.2.1. Al menos un operando debe estar en registro
17.3.3.3. Memoria - Memoria
17.3.3.3.1. todos los operando en memoria
17.3.3.3.2. Codigo mas compacto
17.3.3.3.3. cuello de botella
17.3.3.3.4. codificación compleja
17.3.4. Los Registros son mas Rapidos
17.3.4.1. se utilizan de forma mas eficiente por los compiladores
17.3.4.2. Tienen mas Throughput que la memoria
18. Interpretación de las Direcciones de Memoria
18.1. Las computadoras estan direccionadas por bytes (1 byte = 8 bits)
18.2. 3 formas de clasificar los bytes de una palabraa
18.2.1. Little Endian
18.2.1.1. Comienza por el mas pequeño
18.2.1.2. Coloca el byte menos significativo en la posicion mas significativa
18.2.1.3. la direccion del un dato es el byte menos significativo
18.2.2. Big Endian
18.2.2.1. Comienza por el mas grande
18.2.2.2. Coloca el byte menos significativo en la posicion menos significativa
18.2.2.3. la direccion de un dato es el byte mas significativo
18.2.3. Middle Endian
18.2.3.1. Arquitectura que trabaja con Little Endian y Big Endian
18.3. Valor Hexadecimal 0x4A3B2C1D
18.3.1. big endian
18.3.1.1. 4A, 3B, 2C, 1D
18.3.1.1.1. 74, 59, 44, 29
18.3.2. little endian
18.3.2.1. 1D, 2C, 3B, 4A
18.3.2.1.1. 29, 44, 59, 74
19. Operandos Inmediatos
19.1. Instruccion en la que uno de los operandos es una constante
19.2. MISP tiene un registro $zero, constante cero
19.3. s3 = s3 + 4
19.3.1. Instruccion MIPS
19.3.1.1. addi $s3, $s3, 4
20. Principio de Diseño 3
20.1. Haz que el caso mas comun sea Rapido
21. Representacion de las Instruciones del Computador
21.1. .
22. Modos de Direcionamiento
22.1. Un operando se encuentra en
22.1.1. la propia instruccion
22.1.1.1. Ahorro de espacio
22.1.1.1.1. instrucciones mas cortas
22.1.1.2. direccionamiento relativo
22.1.1.2.1. codigo reubicable
22.1.1.3. Estructura de datos
22.1.1.3.1. direccionamiento fácil, indices y punteros
22.1.2. en un registro
22.1.3. en memoria principal
22.2. Modos Básicos de Direccionamiento
22.2.1. Inmediato
22.2.1.1. operando dentro de la instrucción
22.2.1.1.1. .
22.2.2. Registro
22.2.2.1. se incluye el identificador del registro del operando
22.2.2.1.1. .
22.2.3. Directo
22.2.3.1. se incluye la dirección de memoria del operando
22.2.3.1.1. .
22.2.4. Indirecto
22.2.4.1. se indica el registro que almacena la dirección del operando
22.2.4.1.1. .
22.2.5. Indirecto con desplazamiento
22.2.5.1. se suma un operando inmediato al registro para obtener la dirección del operando
22.2.5.1.1. .
22.3. Modos en un repertorio Risc
22.3.1. direccionamiento inmediato
22.3.2. direccionamiento indirecto con desplazamiento
23. Tratamiento de las Instrucciones de Control de Flujo
23.1. Modifican el flujo de control de un programa
23.1.1. Saltos condicionales
23.1.1.1. Comparaciones con uno o mas registros
23.1.2. Saltos incondicionales
23.1.2.1. Destino de salto
23.1.2.1.1. Direccionamiento relativo al PC
23.1.2.1.2. Direccionamiento indirecto con Registro
24. Campos de una Instrucción MIPS
24.1. Formato de Instruccion
24.1.1. representación por medio de campos de números binarios
24.2. Lenguaje Maquina
24.2.1. representación binaria de las instrucciones
24.3. Representación Hexadecimal
24.4. .
24.4.1. op
24.4.1.1. opcode: operacion basica de la instruccion
24.4.2. rs
24.4.2.1. registro del primer operando
24.4.3. rt
24.4.3.1. registro del segundo operando
24.4.4. rd
24.4.4.1. registro del operando destino
24.4.5. shamt
24.4.5.1. desplazamiento
24.4.6. funct
24.4.6.1. función: seleccionar operación a realizar
25. Principio de Diseño 4
25.1. Un buen diseño demanda buenos compromisos
25.1.1. mantener todas las instrucciones con la misma longitud
26. Codificación del Repertorio de Instrucciones
26.1. Longitud variable
26.1.1. soporta cualquier numero de operandos instrucciones y modos de direccionamiento
26.1.2. Etiquetas indican el modo de direccionamiento
26.2. Longitud Fija
26.2.1. el opcode indica el modo de direccionamiento
26.2.2. los campos de instrucción son siempre los mismos
26.3. Hibrida
26.3.1. solo se permiten unos determinados formatos de instrucción
27. Tipos de Instrucciones
27.1. Tipo I (Inmediatas)
27.1.1. Load/Store
27.1.1.1. (rs) registro fuente
27.1.1.1.1. registro base par el acceso a memoria
27.1.1.2. (rt) registro destino
27.1.1.2.1. registro para los datos
27.1.1.3. inmediato
27.1.1.3.1. desplazamiento para el calculo de la dirección de acceso
27.1.2. Aritmetico-Logicas
27.1.2.1. direccionamiento inmediato
27.1.2.1.1. (rs) registro fuente
27.1.2.1.2. (rt) registro destino
27.1.2.1.3. inmediato
27.1.3. Saltos condicionales
27.1.3.1. (rs) registro fuente
27.1.3.1.1. registro de condicion
27.1.3.2. (rt) registro destino
27.1.3.2.1. registro de condición
27.1.3.3. inmediato
27.1.3.3.1. desplazamiento respecto del PC
27.1.4. Satos Incondicionales
27.1.4.1. (rs) registro fuente
27.1.4.1.1. registro dirección destino del salto
27.1.4.2. (rt) registro destino
27.1.4.2.1. no se utiliza
27.1.4.3. inmediato
27.1.4.3.1. 0
27.2. Tipo R (Registro)
27.2.1. Aritmetico-Logicas
27.2.1.1. (rs) registro fuente
27.2.1.1.1. operando 1
27.2.1.2. (rt) registro destino
27.2.1.2.1. operando 2
27.2.1.3. (rd) registro destino
27.2.1.3.1. operando destino
27.2.1.4. (sa) shift amount
27.2.1.4.1. desplazamiento de instrucciones shit
27.2.1.5. function
27.2.1.5.1. indica el tipo de operación a realizar
27.3. Tipo J (Jump)
27.3.1. Salto incondicional y retorno de procedimiento
27.3.1.1. usan direccionamiento con desplazamiento relativo al PC
27.3.1.1.1. opCode
27.3.1.1.2. instr_index