La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

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


Descargar ppt "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."

Presentaciones similares


Anuncios Google