1. Introducción
1.1. Instrucciónes
1.1.1. Palabras del lenguaje del computador
1.1.2. En conjunto forman un repertorio
1.2. Programa Almacenado
1.2.1. Instrucciones almacenados en memoria como números
1.3. Palabra
1.3.1. unidad natural de acceso de tamaño de un registro de una arquitectura MIPS
1.3.1.1. En MIPS una palabra es de 32 bits
1.4. Dirección
1.4.1. Valor usado para señalar la posición de un dato en una memoria
2. Principios de diseño
2.1. 1. La simplicidad favorece la regularidad
2.2. 2. Cuanto más pequeño más rápido
2.3. 3. Hacer rápido lo común
2.4. 4. El buen diseño exige buenos compromisos
3. Diseño de un repertorio de instrucciones
3.1. CISC
3.1.1. Complex instruction set computing
3.2. RISC
3.2.1. Reduced instruction set computing
3.3. Tipo de almacenamiento de los operandos
3.3.1. Pila
3.3.1.1. Los operandos son implícitos
3.3.2. Acumulador
3.3.2.1. Uno de los operandos es implícito
3.3.3. Registros de propósito general
3.3.3.1. .
3.3.3.1.1. Registro- Registro
3.3.3.1.2. Registro - Memoria
3.3.3.1.3. Memoria - Memoria
3.4. Modos de direccionamiento soportados
3.4.1. Inmediato
3.4.1.1. El operando se codifica dentro de la instrucción
3.4.2. Registro
3.4.2.1. Se incluye el identificador del registro que amacena el operando
3.4.3. Directo
3.4.3.1. Se incluye la dirección de memoria en la que está almacenado el operando
3.4.4. Indirecto
3.4.4.1. Se indica el registro que almacena la dirección de memoria en la que se encuentra el operando
3.4.5. Indirecto con desplazamiento
3.4.5.1. Se suma un operando inmediato al contenido del registro para obtener la dirección de memoria en la que se encuentra el operando
4. Circuitos que contienen ALUs
4.1. Microprocesadores
4.2. GPU
4.3. FPU
4.4. Procesadores digitales de senales
4.5. Lectores de CDS
4.6. Televisores de alta defincion
5. Realizacion del operador
5.1. Operador combinacional
5.1.1. Realiza una o varias operaciones
5.1.2. Sin memoria
5.2. Operador secuencial
5.2.1. Funciona por fases
5.2.2. Necesita memoria
6. Operandos y Registros
6.1. Opreando corresponde a una parte fisica del hardware: registro
6.2. Los registros son una parte del hardware visible a los programadores!
6.3. Los registros tienen un número limitado
7. Tratamiento de las instrucciones de control de flujo
7.1. Saltos condicionales e incondicionales
7.2. Alternativas para indicar el destino de salto
7.2.1. Direccionamiento relativo al PC
7.2.2. Direccionamiento indirecto con registro!
7.3. La condición de salto normalmente suele ir referida a comparaciones con uno o varios registros!
8. 2.2 Operaciones del hardware del computador
8.1. Operaciones aritméticas
8.1.1. Suma
8.1.1.1. add
8.1.1.1.1. sumar dos datos almacenados en registros
8.1.1.2. addi
8.1.1.2.1. Sumar una constante a un dato en registro
8.1.2. Resta
8.1.2.1. sub
8.2. Operaciones lógicas
8.2.1. operaciones bit a bit
8.2.1.1. and
8.2.1.1.1. Tres registros operandos
8.2.1.2. or
8.2.1.2.1. Tres registros operandos
8.2.1.3. nor
8.2.1.3.1. Tres registros operandos
8.2.2. Shift left logical
8.2.2.1. sll
8.2.2.1.1. multiplicar por 10
8.2.3. Shift right logical
8.2.3.1. srl
8.2.3.1.1. dividir para 10
8.3. Transferencia de dato
8.3.1. load word
8.3.1.1. Palabra de memoria a registro
8.3.2. store word
8.3.2.1. Palabra de registro a memoria
8.4. Salto condicional
8.4.1. branch on equal
8.4.1.1. beq
8.4.1.1.1. Comprueba igualdad y bifurca
8.4.2. branch on not equal
8.4.2.1. bnq
8.4.2.1.1. Comprueba desigualdad y bifurca
8.4.3. set on less than
8.4.3.1. slt
8.4.3.1.1. Compara si es menor que
8.5. Salto incondicional
8.5.1. jump
8.5.1.1. j
8.5.1.1.1. Salto a la dirección destino
8.5.2. jump register
8.5.2.1. jr
8.5.2.1.1. Para retorno de procedimiento
8.5.3. jump and link
8.5.3.1. ja
8.5.3.1.1. Para llamada a procedimiento
9. 2.3 Operandos del hardware del computador
9.1. Operandos en memoria
9.1.1. Registros con direcciones de memoria
9.1.2. Restricción de alineación
9.1.2.1. Las palabras deben comenzar en direcciones múltiplos de 4
9.1.2.2. Las memorias, físicamente, están diseñadas para hacer accesos alineados.
9.1.2.3. Un acceso no alineado o mal alineado, supone varios accesos alineados a la memoria!
9.1.3. Trabaja con ambas operaciones
9.1.4. Interpretación de las direcciones de memoria
9.1.4.1. Big Endian
9.1.4.1.1. Se utiliza como dirección el byte extremo izquierdo
9.1.4.1.2. Extremo mayor
9.1.4.2. Little Endian
9.1.4.2.1. Se utiliza como dirección el byte extremo derecho
9.1.4.2.2. Extremo menor
9.1.4.3. Middle Endian
9.1.5. Registros
9.1.5.1. De larga duración
9.1.5.1.1. $s1, $s2, ..., $s7
9.1.5.2. De corta duración
9.1.5.2.1. $t0, $t1, ..., $t9
9.2. Operando constantes o inmediatos
9.2.1. Se realizan operaciones con una constante de operando
10. Representación de las instrucciones en el computador
10.1. Campos de una instrucción MIPS
10.1.1. op
10.1.1.1. Naturaleza de la operación (opcode)
10.1.2. rs
10.1.2.1. Registro del primer operando fuente
10.1.3. rt
10.1.3.1. Registro del segundo operando fuente
10.1.4. rd
10.1.4.1. Registro del operando destino
10.1.5. shamt
10.1.5.1. Cantidad de desplazamiento
10.1.6. funct
10.1.6.1. Código de función
10.1.6.1.1. Selecciona la variante específica de operación en el campo opcode
10.2. Division
10.2.1. Longitud variable
10.2.2. Longitud fija
10.2.3. Híbrida
10.3. Tipos de instrucciones
10.3.1. Registro
10.3.1.1. opcode
10.3.1.1.1. 6 bits
10.3.1.2. rs
10.3.1.2.1. 5 bits
10.3.1.3. rt
10.3.1.3.1. 5 bits
10.3.1.4. rd
10.3.1.4.1. 5 bits
10.3.1.5. shamt
10.3.1.5.1. 5 bits
10.3.1.6. funct
10.3.1.6.1. 6 bits
10.3.2. Inmediato
10.3.2.1. opcode
10.3.2.1.1. 6 bits
10.3.2.2. rs
10.3.2.2.1. 5 bits
10.3.2.3. rt
10.3.2.3.1. 5 bits
10.3.2.4. Constante o direcci[on
10.3.2.4.1. 16 bits
10.3.3. Jump
10.3.3.1. opcode
10.3.3.1.1. 6 bits
10.3.3.2. instruction_index
10.3.3.2.1. 26
11. ALU
11.1. Opera sobre los datos de una instruccion
11.2. Realiza operaciones logicas - aritmeticas y desplazamiento.
11.3. Preferencia actual por el complemento a dos.
12. Operaciones del ALU
12.1. Sumador-restador paralelo en complemento a2
12.2. Operacion de multiplicacion
12.2.1. Sumador - restador + algoritmo
12.3. Es raro que un computador disponga de un divisor combinacional
13. Operandos en memoria
13.1. Las estructuras de datos se almacenan en memoria.
13.2. En MIPS las operaciones aritméticas se realizan entre registros.
13.3. Se necesitan instrucciones para transferir datos entre los registros y la memoria.
13.4. Para acceder a una palabra en memoria se necesita la dirección de memoria de la misma.
13.4.1. La unidad de direccionamiento es el byte.