Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSalvador Reyes Barbero Modificado hace 7 años
1
Arquitectura de Computadores Clases 7-10 Diseño de una CPU Básica IIC 2342 Semestre 2008-2 Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación
2
Objetivos Capítulo 4 : Unidad de Procesamiento Central (CPU) Entender en detalle la arquitectura, diseño y funcionamiento de una CPU básica, a nivel de: Hardware Set de instrucciones Ciclo de ejecución Programación en lenguaje assembler Limitaciones Ser capaz de modificar y ampliar las capacidades de esta CPU a nivel de: Hardware Set de instrucciones Objetivos R.Mitnik 2Arquitectura de Computadores
3
R.Mitnik Arquitectura de Computadores3 Índice Capítulo 4 : Unidad de Procesamiento Central (CPU) 4.1 Partes de la CPU. 4.2 Ciclo de la Instrucción. 4.3 Conjunto de Instrucciones y tipos de funcionalidad. 4.4 Diseño de una CPU básica. 4.5 CISC/RISC. 4.6 Modos de direccionamiento. 4.7 Instrucciones en lenguaje de máquina. 4.8 Subrutinas y Manejo de Stack. 4.9 Interrupciones de software y hadware.
4
R.Mitnik 4 Repaso Capítulo 4 : Unidad de Procesamiento Central (CPU) Arquitectura de Computadores Ejecutar Operaciones y Algoritmos Requisitos: Procesar instrucción Leer datos Almacenar Temporalmente los datos ALU – FPU Almacenar Resultados
5
R.Mitnik 5 Repaso Capítulo 4 : Unidad de Procesamiento Central (CPU) Arquitectura de Computadores Control de Flujo Requisitos: Instruction Pointer Mecanismos de Salto
6
R.Mitnik 6 Repaso Capítulo 4 : Unidad de Procesamiento Central (CPU) Arquitectura de Computadores Controlar Circuitos Internos Requisitos: Buses internos Señales de control ALU (función) Mux Registros (Load,etc) Contador (Inc, Load,etc)
7
R.Mitnik Arquitectura de Computadores7 Repaso Capítulo 4 : Unidad de Procesamiento Central (CPU) Instrucciones de transferencias de datos Instrucciones aritméticas Instrucciones lógicas Control de flujo Entrada / Salida Set de Instrucciones Ciclo de la Instrucción
8
R.Mitnik 8 Partes de la CPU CPU Básica Capítulo 4 : Unidad de Procesamiento Central (CPU) Arquitectura de Computadores
9
9 IRE PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode CC Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 00 OffsetBase CCE S0, S1, S2 S40, S41 S30, S31 ACEIXE WE D in D out S50S51 LDPC, INCPC 11 16 11 16 11 5 16 S10 Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Q1 Address
10
10 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address CC
11
11 AB 0 00 10 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Contador (incrementa con flanco de bajada) Address CC
12
12 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Registros (almacenan con flanco de bajada) Address CC
13
13 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Multiplexores Address CC
14
14 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV ALU (Add, Sub, And, Or, Xor, Shift Right, Shift Left) Address CC
15
15 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Condition Codes (Carry, Negative, Zero, Overflow) Address CC
16
16 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Sumador (en complemento de 2) Address CC
17
17 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV RAM (2048 x 16 bits) Address CC
18
18 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV EPROM (1024 x 17 bits) Address S0, S1, S2 S40, S41 S30, S31 S50S51 S10 CC
19
R.MitnikArquitectura de Computadores 19 CPU Básica: Control & Decode
20
20 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Clock (director de orquesta) Address CC
21
21 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Bus de Datos (16 bits) Address CC
22
22 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Bus de Direcciones (11 bits) Address CC
23
23 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Instrucción (Opcode: 5 bits) Address CC
24
24 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV ¿Y cómo funciona todo esto? Address CC
25
25 IRE LDPC, INCPC PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 00 OffsetBase CCE ACEIXE WE D in D out 11 16 11 16 11 5 16 a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address CC
26
26 IRE LDPC, INCPC PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 00 OffsetBase CCE ACEIXE WE D in D out 11 16 11 16 11 5 16 Toda instrucción incluye un FETCH IR = M[pc] PC = PC+1 a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address CC
27
27 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 00 OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC 11 16 11 16 11 5 16 Flujo de instrucción: LDA A = M[a] a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address CC
28
28 0 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 0 OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC 11 16 11 16 11 5 16 Flujo de instrucción: LDAI A = M[a+x] a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address Control & Decode CC
29
29 11 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 00 OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC 11 16 11 5 16 Flujo de instrucción: LDX X = M[a] a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address Control & Decode CC
30
30 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 AB S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: STA M[a] = A Address Control & Decode CC
31
31 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 AB S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: STAI M[a+x] = A Address Control & Decode CC
32
32 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 AB S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: STX M[a] = X Address Control & Decode CC
33
33 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: LIT A = a Address Control & Decode CC
34
34 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: LIX X = a Address Control & Decode CC
35
35 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: ADD, SUB, AND, OR, XOR A = A {op} M[a] Address Control & Decode CC
36
36 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: ADDI, SUBI, ANDI, ORI, XORI A = A {op} M[a+x] Address Control & Decode CC
37
37 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: SRA, SLA A = A >> 1 (A = A/2) A = A << 1 (A = Ax2) Address Control & Decode CC
38
38 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: BRA PC = a Address Control & Decode CC
39
39 Control & Decode AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: BEQ, BNE, BLT, BGE, BLE, BGT, BCS, BOV PC = a (condicional) Address
40
40 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: JSR X = PC PC = a Address Control & Decode CC
41
41 AB 0 00 10 11 16 11 16 11 5 16 PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Clock Mux0Mux1 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV OffsetBase CCE ACEIXE IRE WE D in D out LDPC, INCPC a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Flujo de instrucción: RFS PC = X Address Control & Decode CC
42
42 IRE PC IR ACIX Mux2 Mux3Mux4 Adder ALU RAM Control & Decode Clock Mux0Mux1 AB 010 S0, S1, D2, S10, S30, S31, S40, S41, S50, S51 CCE, LDPC, INCPC, ACE, IXE, IRE, WE C, N, Z, OV 00 OffsetBase CCE S0, S1, S2 S40, S41 S30, S31 ACEIXE WE D in D out S50S51 LDPC, INCPC 11 16 11 16 11 5 16 S10 Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Q1 Address CC
43
43 Formato de Instrucciones Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
44
44 Set de Instrucciones Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
45
45 Control & Decode Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
46
46 Subrutina de Multiplicación Ejemplo de uso de la CPU: Subrutina de Multiplicación Diseño de una CPU Básica Capítulo 4 : Unidad de Procesamiento Central (CPU)
47
47 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
48
48 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
49
49 Inicio subrutina Salida de subrutina Datos y resultado Instrucciones Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
50
50 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
51
51 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
52
52 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
53
53 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
54
54 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
55
55 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
56
56 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
57
57 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
58
58 byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
59
59 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
60
60 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
61
61 Dirección real en RAM Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
62
62 Dirección real en RAM Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
63
63 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
64
64 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
65
65 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
66
66 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
67
67 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
68
68 Código en lenguaje de máquina Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
69
69 Programa en RAM Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
70
70 Programa en RAM byte multiplicacion (byte mult1, byte mult2) { byte result = 0; while(true) { if(mult2 & 0001h != 0) result += mult1; mult2 >>= 1; if(mult2 == 0) return result; mult1 <<= 1; } Programa en C Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
71
R.Mitnik Arquitectura de Computadores71 Diseño de una CPU Básica Detalles de la implementación En subrutina no puedo utilizar IX No puedo invocar una subrutina dentro de una subrutina Capítulo 4 : Unidad de Procesamiento Central (CPU)
72
R.Mitnik Arquitectura de Computadores72 En subrutina no puedo utilizar IX No puedo invocar una subrutina dentro de una subrutina Solución Stack Pointer Contador que partiera en 7FFh y decreciera con cada JSR y aumentara con cada RFS. Así, el PC lo guardo en memoria en vez de en IX Mux2 necesitaría dos entradas para poder seleccionar el SP Aumentarían en tres bits las palabras del Control & Decode uno para el Mux2 y otros dos para el Stack Pointer (señal de aumento y de decremento). Detalles de la Implementación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
73
R.Mitnik Arquitectura de Computadores73 LDXI no está implementado (trivial) Branching indexado no está implementado (trivial) Una Alu con más funciones simplemente requiere de más señales de control (ej: rotate, parity, etc) Detalles de la Implementación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
74
R.Mitnik Arquitectura de Computadores74 Para aumentar la memoria: Ampliar el bus de direcciones en N bits El bus de datos tendría que ser de 16+N bits (5 de instrucción + (11+N) de direccionamiento) La RAM tendría que ser de (2048*2 N ) x (16+N). El Control & Decode no variaría Todos los Mux y demases tendrían que ser para 11+N bits. Detalles de la Implementación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
75
R.Mitnik Arquitectura de Computadores75 Esta arquitectura no permite efectuar operaciones directamente entre registros (los dos están en un mismo Mux) Pese a esto se podría guardar el contenido de un registro en otro (instrucción no implementada) Detalles de la Implementación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
76
R.Mitnik Arquitectura de Computadores76 Detalles de la Implementación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica IX es de 11 bits dado que es para direccionamiento Sin embargo, perfectamente podría ser de 16 bits y cumplir ambas funciones, direccionar y apoyar para cálculos y datos. LIT y LIX solo pueden cargar palabras de 11 bits (problema sólo para AC)
77
R.Mitnik Arquitectura de Computadores77 Detalles de la Implementación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica Se pueden agregar registros modificando el Control & Decode Aumentar número de salidas Aumentar número de instrucciones
78
R.Mitnik Arquitectura de Computadores78 Mejoras para esta CPU Diseño de una CPU Básica Capítulo 4 : Unidad de Procesamiento Central (CPU) I/O (Input/Output)? Interrupciones ? Manejo de Stack?
79
Resumen Capítulo 4 : Unidad de Procesamiento Central (CPU) Diseño de la CPU Básica Arquitectura Hardware Set de instrucciones Ciclo de ejecución Limitaciones del diseño Programación en lenguaje assembler Uso de instrucciones Asociación del código en memoria Código en lenguaje de máquina (representación binaria) Programa en RAM R.Mitnik 79Arquitectura de Computadores Resumen
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.