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