El lenguaje del computador

Plan your projects and define important tasks and actions

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Rocket clouds
El lenguaje del computador por Mind Map: El lenguaje del computador

1. Principios de diseño del hardware

1.1. Principio de Diseño 1

1.1.1. La simplicidad favorece la regularidad

1.2. Principio de Diseño 2

1.2.1. Más pequeño es más rápido

1.2.1.1. Un mayor número de registros incrementa el ciclo de reloj

1.3. Principio de Diseño 3

1.3.1. Haz que el caso más común sea rápido

1.3.1.1. MIPS tiene un registro cableado a cero $zero que corresponde con el registro 0

1.4. Principio de Diseño 4

1.4.1. Un buen diseño demanda buenos compromisos

1.4.1.1. Los diseñadores del MIPS deben mantener todas las instrucciones con la misma longitud, pero requieren de distintos formatos de instrucción

2. Instrucciones

2.1. Palabras que entiende el ordenador

2.2. Juego de instruciones

2.2.1. Vocabulario de comandos entendidos por una arquitectura

2.3. Programa almacenado

2.3.1. Instrucciones y datos de diferentes tipos se pueden almacenar en memoria como números

2.3.2. Escribir programas en el lenguaje del computador

3. Campos de una intrucción MIPS

3.1. Formato de instrucción

3.1.1. Forma de representar una instrucción por medio de campos de números binarios

3.2. Lenguaje máquina

3.2.1. Representación numérica binaria de las instrucciones

3.3. Representación hexadecimal

3.3.1. Números en base 16

3.3.2. Se puede reemplazar un grupo de 4 dígitos binarios por un único dígito hexadecimal

3.3.3. Ejemplo

3.4. Comandos

3.4.1. op (opcode): operación básica de la instrucción

3.4.2. rs: registro del primer operando fuente

3.4.3. rt: registro del segundo operando fuente

3.4.4. rd: registro del operando destino

3.4.5. shamt: desplazamiento

3.4.6. funct: función, sirve para seleccionar la operación específica a realizar

3.5. Codificación del repertorio de instrucciones

3.5.1. Longitud variable

3.5.1.1. Soporta cualquier número de operandos

3.5.1.2. Etiquetas que indican el modo

3.5.1.3. Se añaden tantos campos necesarios más las etiquetas

3.5.2. Longitud fija

3.5.2.1. El código de operación especifica el modo de direccionamiento

3.5.2.2. Sólo se permiten unas combinaciones determinadas de operaciones+modos

3.5.2.3. Los campos de la instrucción son siempre los mismos

3.5.3. Híbrida

3.5.3.1. Sólo se permiten unos determinados formatos de instrucción que incluyen un número variable de modos y operandos

4. ALU

4.1. Realiza operaciones básicas de adición, sustracción, multiplicación y división.

4.2. Circuitos

4.2.1. Unidad de Procesamiento Gráfico

4.2.2. FPU (Floating Point Unit)

4.2.3. Procesadores digitales de señales

4.2.4. Lectores de CD

4.2.5. Televisores de alta definición

4.3. Opera sobre los datos de una instrucción

4.3.1. Es un simple sumador-restador

4.4. Presenta el complemento a dos

5. Operadores

5.1. Tipos

5.1.1. Aritmética de números enteros

5.1.1.1. +, - . *, /

5.1.2. Lógicas de bits

5.1.2.1. AND, NOT, OR, XOR, NOR

5.1.3. Desplazamiento de bits

5.1.3.1. A la izquierda o ala derecha con o sin extensión de signo

5.2. Ámbito

5.2.1. General: Realiza diferentes operaciones

5.2.2. Especializado: Operación de cierta complejidad

5.2.3. Coprocesador matemático: Operador especializado

5.3. Realización

5.3.1. Operador Combinacional

5.3.1.1. Realiza una o varias operaciones

5.3.1.2. Tiempo=suma retardos de los distintos circuitos

5.3.2. Operador Secuencial

5.3.2.1. Funciona por fases y necesita memoria

5.3.2.2. Aplica algoritmos de cálculos propios

5.3.3. Operador de multiplicación

5.3.3.1. Sumador-restador + algoritmo

5.3.3.2. Algoritmos

5.3.3.2.1. Multiplicación binaria sin signo

5.3.3.2.2. Multiplicación binaria con signo

5.3.3.2.3. Multiplicadores combinacionales

5.3.4. Operador de división

5.3.4.1. Más compleja que la multiplicación

5.3.4.2. Operador sumador-restador +algoritmo

5.4. MIPS

5.4.1. Cada instrucción aritmética realiza una única operación

5.4.2. Siempre tiene 3 variables

5.4.2.1. add a, b, c

5.4.3. Cada línea contiene una única instrucción

6. Modos de direccionamiento

6.1. El operando se encuentra en

6.1.1. La propia instrucción

6.1.1.1. Ahorro de espacio

6.1.1.2. Direccionamiento relativo

6.1.1.3. Estructuras de datos

6.1.2. Un registro

6.1.3. La memoria principal

6.2. Modos Básicos

6.2.1. Inmediato

6.2.1.1. El operando se codifica dentro de la instrucción

6.2.2. Registro

6.2.2.1. Se incluye el identificador del registro que almacena el operando

6.2.3. Directo

6.2.3.1. Se incluye la dirección de memoria en la que está almacenado el operando

6.2.4. Indirecto

6.2.4.1. Se indica el registro que almacena la dirección de memoria en la que se encuentra el operando

6.2.5. Indirecto con Desplazamiento

6.2.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

6.3. En un repertorio RISC

6.3.1. Direccionamiento inmediato

6.3.1.1. Se debe decidir si

6.3.1.1.1. Todas las isntrucciones soportan este modo

6.3.1.1.2. El rango de valores del operando es inmediato

6.3.2. Direccionamiento indirecto con desplazamiento

6.3.2.1. Determinar el rango de valores que puede tomar el desplazamiento

6.3.3. Otras consideraciones

6.3.3.1. Tipo y tamaño de los operandos

6.3.3.1.1. Opcode indica el tipo de los operandos implicados en la ejecución de la instrucción

6.3.3.1.2. También lo pueden indicar los operandos mediante etiquetas

6.3.3.2. Conjunto de operaciones soportadas

6.3.3.2.1. Conjunto sencillo: aritmético-lógicas, de acceso a memoria, de control de flujo y llamadas al sistema operativo

6.3.3.2.2. Instrucciones para manejo de caracteres, coma flotante

6.3.3.3. Tratamiento de las instrucciones de control de flujo

6.3.3.3.1. Modifican el flujo de control de un código

6.3.3.3.2. Saltos condicionales

6.3.3.3.3. Saltos incondicionales

6.3.3.3.4. Direccionamiento relativo al PC

6.3.3.3.5. Direccionamiento indirecto con registro

6.3.3.3.6. Condición de salto referida a comparaciones con uno o varios registros

7. Tipo de almacenamiento de los operandos

7.1. Tipos de almacenamiento interno

7.1.1. Pila

7.1.1.1. Los operandos son implícitos, siempre en la parte superior de la pila

7.1.1.2. No es necesario indicar la posición de los operandos

7.1.2. Acumulador

7.1.2.1. Uno de los operandos es implícito y el otro es explícito

7.1.3. Registros de Propósito General (GPR)

7.1.3.1. Operandos se especifícan de forma explícita

7.1.3.2. Tipos de almacenamiento

7.1.3.2.1. Registro-Registro

7.1.3.2.2. Registro-Memoria

7.1.3.2.3. Memoria-Memoria

7.1.3.3. Los registros son más rápidos

7.1.3.3.1. Tienen un almacenamiento temporal de variable

7.2. Interpretación de las direcciones de memoria

7.2.1. Proporcionan acceso a bytes, medias palabras, palabras y dobles palabras

7.2.2. Convenios de clasificación de palabras

7.2.2.1. Little Endian

7.2.2.1.1. Comienzo por el extremo pequeño

7.2.2.1.2. Coloca el byte menos significativo en la posición mas significativa de la palabra

7.2.2.1.3. Dirección de un dato

7.2.2.2. Big Endian

7.2.2.2.1. Comienzo por el extremo grande

7.2.2.2.2. Coloca el byte menos significativo en la posición menos significativa de la palabra

7.2.2.2.3. Dirección de un dato

7.2.2.3. Middle Endian

7.2.2.3.1. Capaz de trabajar con ambas ordenaciones

7.2.2.4. Ejemplo

7.3. Restricciones de alineamiento

7.3.1. En MIPS las palabras deben comenzar en direcciones múltiplo de 4

7.3.2. Los accesos deben estar alineados, es decir: B módulo s=0

7.3.3. Un acceso no alineado supone varios accesos alineados a la memoria

7.4. Asignación con operando en memoria: load y store

7.4.1. Ejemplo: lw $t0, 32($s3)

7.4.2. add $t0, $s2, $t0

7.4.3. sw $t0, 48($s3)

7.5. Operandos en memoria vs operandos en registros

7.5.1. Se accede más rápidamente y de forma más sencilla a los datos almacenados en registros

7.5.2. Se necesita menos energía para acceder a los registros que a la memoria

7.6. Operandos inmediatos

7.6.1. Uno de los operandos es una constante, ejemplo:

7.6.1.1. addi $s3, $s3, 4 #s3=s3+4

8. Operandos y registros

8.1. Los operandos de las instrucciones aritméticas son limitados y se corresponden físicamente con los registros

8.2. MIPS

8.2.1. Tamaño de registro es de 32 bits

8.2.2. Palabra se le conoce como un grupo de 32 bits

8.2.3. Existen 32 registros de 32 bits

8.2.4. $s1: para registros que almacenan variables

8.2.5. $t1: para registros temporales

9. Operadores en memoria

9.1. Existen estructuras de datos complejas

9.1.1. Arrays

9.1.2. Estructuras

9.2. En MIPS necesitamos de instrucciones de transferencia de datos para pasar entre los registro y la memoria

9.3. Para acceder a una palabra en memoria se necesita de la dirección de memoria

9.4. La memoria es como un array unidimensional, en donde la dirección es el índice

9.5. load: asignación con operando en memoria (lw)

9.5.1. Ejemplo: lw $to, 8($s3)

9.6. El byte es la unidad de direccionamiento

9.6.1. Una palabra son 4 bytes

10. Diseño de un repertorio de instrucciones

10.1. Influye en

10.1.1. Número de instrucciones

10.1.2. Diseño del compilador

10.1.3. Diseño de la ruta de datos

10.2. CISC

10.2.1. Gran número de instrucciones complejas

10.2.2. Gran variedad de tipos de datos

10.2.3. Permiten implementar instrucciones de alto nivel directamente

10.3. RISC

10.3.1. Pocas instrucciones básicas

10.3.2. Técnicas de optimización tanto a nivel de HW como de compilador

10.3.3. Necesita de más instrucciones para realizar la misma tarea

11. Tipo de instrucciones

11.1. Instrucciones tipo I (Inmmediate)

11.1.1. Load/Store

11.1.1.1. RS (Registro Fuente): registro base para el acceso a memoria

11.1.1.2. RT (Registro destino): registro para los datos

11.1.1.3. Inmediato: desplazamiento para el cálculo de la dirección de memoria

11.1.2. Aritmético-lógicas: con direccionamiento inmediato

11.1.2.1. RS: operando 1

11.1.2.2. RT: registro destino de la operación

11.1.2.3. Inmediato: operando 2, directamente su valor

11.1.3. Saltos condicionales/incondicionales

11.1.3.1. RS: Registro que contiene la dirección destino del salto

11.1.3.2. RT: Registro de condición, no se utiliza

11.1.3.3. Inmediato: desplazamiento respecto del PC/0

11.2. Instrucciones tipo R (Register)

11.2.1. Aritmético-lógicas: rgistro-registro

11.2.1.1. RS: operando 1

11.2.1.2. RT: operando 2

11.2.1.3. RD: registro destino

11.2.1.4. sa (Shift Amount): indica el desplazamiento para las instrucciones de tipo Shift

11.2.1.5. function: junto con el OpCode indica el tipo de operación que se debe realizar

11.3. Instrucciones tipo J (Jump)

11.3.1. Salto incondicional y retorno de procedimiento: utilizan direccionamiento con desplazamiento relativo al PC

11.3.1.1. opCode: Código de la operación

11.3.1.2. Instr_index: offset relativo al PC