Arquitectura de Computadores Clases 7-10 Diseño de una CPU Básica IIC 2342 Semestre Rubén Mitnik Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación
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
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.
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
R.Mitnik 5 Repaso Capítulo 4 : Unidad de Procesamiento Central (CPU) Arquitectura de Computadores Control de Flujo Requisitos: Instruction Pointer Mecanismos de Salto
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)
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
R.Mitnik 8 Partes de la CPU CPU Básica Capítulo 4 : Unidad de Procesamiento Central (CPU) Arquitectura de Computadores
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 S10 Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Q1 Address
10 AB 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 AB 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 AB 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 AB 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 AB 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 AB 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 AB 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 AB 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 AB 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
R.MitnikArquitectura de Computadores 19 CPU Básica: Control & Decode
20 AB 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 AB 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 AB 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 AB 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 AB 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 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 a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Address CC
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 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 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 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 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 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
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 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
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
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
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 AB 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 AB 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 AB 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 AB 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 AB 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 AB 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 Control & Decode AB 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 AB 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 AB 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 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 S10 Arquitectura general a: dirección A: acumulador X: reg. índice Condition Code CC: Z, N, C, OV Q1 Address CC
43 Formato de Instrucciones Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
44 Set de Instrucciones Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
45 Control & Decode Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
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 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 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
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 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 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 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 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 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 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 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 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 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 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
60 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
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 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 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
64 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
65 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
66 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
67 Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
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 Programa en RAM Uso de CPU: Multiplicación Capítulo 4 : Unidad de Procesamiento Central (CPU) – Diseño de una CPU Básica
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
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)
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
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
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
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
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)
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
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?
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