290 likes | 521 Views
Diseño de la ruta de datos monociclo para la arquitectura MIPS. Conocimientos previos: Arquitectura MIPS. Registros 32 registros de propósito general, de 32 bits cada uno. ($0, $1, ..., $31) Memoria Direccionable por bytes en modo “big endian” Direcciones de 32 bits
E N D
Diseño de la ruta de datos monociclo para la arquitectura MIPS
Conocimientos previos: Arquitectura MIPS • Registros • 32 registros de propósito general, de 32 bits cada uno. ($0, $1, ..., $31) • Memoria • Direccionable por bytes en modo “big endian” • Direcciones de 32 bits • Modo de direccionamiento • registro base + desplazamiento [100($1)]
op rs rt rd funct shamt op rs rt desplazamiento op dirección Conocimientos previos: Arquitectura MIPS • Repertorio de instrucciones • longitud fija de 32 bits. • 3 tipos de instrucciones • aritmético-lógicas: add, sub, and, or, slt add $1, $2, $3 • de referencia a memoria: lw, sw lw $1, 100($2) • Saltos (condicionales o no): beq, j beq $1, $2, 48 • 3 formatos • formato R • formato I • formato J
Objetivos • Construir una ruta de datos a partir de la especificación dada por la definición de la arquitectura del repertorio de instrucciones • Integración de conocimientos y puesta en práctica de conocimientos previos
Introducción Tcpu = N · CPI · tciclo Depende del compilador y de la arquitectura del repertorio de instrucciones Dependen de la organización e implementación del procesador
Conceptos Básicos • Ejecución de instrucciones: Pasos • Común • Leer instrucción de la memoria con el PC • Leer registros especificados en la instrucción • Similar • Utilizar la ALU • Diferente • Terminación de ejecución de instrucción
Memoria de Datos Memoria de Instrucciones Dato Banco de Registros Nº reg PC Dirección Dirección ALU Instrucción Nº reg Nº reg Dato Visión General de la RD
PC Elementos Básicos: Buscar instrucción Leer dirección Add Instrucción Memoria de Instrucciones
Add 4 Leer dirección PC Instrucción Memoria de Instrucciones RD: Buscar instrucción
RegWrite Operación ALU 3 Banco de Registros { Leer registro 1 } ALU Dato leído 1 Zero Números de Registros Leer registro 2 result ALU Datos Dato leído 2 Escribir registro { Datos Escribir dato MemWrite Memoria de Datos Dato leído Dirección 32 16 Extensión de signo Escribir dato MemRead Elementos Básicos: Ejecutar instrucción
Instrucciones aritmético-lógicas • add, sub, and, or y slt • add rd, rs, rt Ejemplo: add $1, $2, $3$1=$2+$3 • Formato tipo R op rs rt rd shamt funct
RegWrite Banco de Registros Operación ALU 3 Leer registro 1 Dato leído 1 Leer registro 2 ALU Zero Instrucción result ALU Escribir registro Dato leído 2 Escribir dato RD: Instrucciones aritmético-lógicas
op rt rs desplazamiento Instrucciones de acceso a memoria • lw y sw • lw rt, despl(rd) ó sw rt, despl(rd) Ejemplos: lw $1, 24($2)$1= Mem[$2+24] sw $1, 24($2)Mem[$2+24]= $1 • Formato tipo I
RegWrite Banco de Registros Operación ALU MemWrite 3 Leer registro 1 Dato leído 1 Memoria de Datos Leer registro 2 ALU Zero Instrucción result ALU Dato leído Dato leído 2 Escribir registro Dirección Escribir dato Escribir dato 32 16 Extensión de signo MemRead RD: Instrucciones de acceso a memoria
op rt rs desplazamiento Instrucción de salto condicional • beq rs, rt, despl Ejemplo: beq $1, $2, despl si ($1=$2) PC=PC+despl • Formato tipo I
PC+4 (de la ruta de datos) Add result ALU RegWrite Desplaz. izq. 2 Banco de Registros Leer registro 1 Operación ALU 3 Dato leído 1 Leer registro 2 ALU Instrucción A la lógica de saltos Escribir registro Zero Escribir dato Dato leído 2 32 16 Extensión de signo RD: Instrucción de salto condicional Dirección destino del salto
op dirección Instrucción de salto incondicional • j dirección Ejemplo: j 1000PC = PC[31-28] + 1000[27-2]+00[1-0] • Formato tipo J
PC Add 4 PC+4 [31-28] Instrucción[25-0] Desplaz. izq. 2 26 28 32 RD: Instrucción de salto incondicional
Control M u x Ruta de Datos Monociclo Cada recurso se utiliza una sola vez en cada ciclo Reutilización de bloques Multiplexor
RegWrite Banco de Registros Operación ALU MemWrite 3 Leer registro 1 Dato leído 1 MemtoReg Memoria de Datos Leer registro 2 ALU Zero Instrucción result ALU Dato leído Dato leído 2 Escribir registro Dirección M u x M u x Escribir dato Escribir dato ALUSrc 32 16 Extensión de signo MemRead RD: Tipo R + lw/sw
Add 4 Banco de Registros Operación ALU 3 MemWrite Leer registro 1 Leer dirección Dato leído 1 PC Leer registro 2 MemtoReg Memoria de Datos ALU Zero Instrucción Dato leído 2 Escribir registro Dato leído result ALU M u x Dirección M u x Memoria de Instrucciones Escribir dato Escribir dato RegWrite ALUSrc 32 16 Extensión de signo MemRead Añadir búsqueda de instrucción
M u x Add Add 4 PCSrc Desplaz. izq. 2 Operación ALU Banco de Registros MemWrite 3 Leer registro 1 Leer dirección PC Dato leído 1 Memoria de Datos MemtoReg ALU Leer registro 2 Zero Instrucción result ALU Dato leído Dato leído 2 Escribir registro Dirección M u x M u x Memoria de Instrucciones Escribir dato Escribir dato RegWrite ALUSrc 32 16 Extensión de signo MemRead Añadir salto condicional
28 32 Instrucción[25-0] Desplaz. izq. 2 26 M u x PC+4 [31-28] M u x Add PCSrc2 Add result ALU 4 PCSrc1 Desplaz. izq. 2 Banco de Registros MemWrite Operación ALU 3 Leer registro 1 Leer dirección PC Dato leído 1 MemtoReg Memoria de Datos Leer registro 2 Zero Instrucción ALU result ALU Dato leído Dato leído 2 Escribir registro Dirección M u x M u x Memoria de Instrucciones Escribir dato Escribir dato RegWrite ALUSrc 32 16 Extensión de signo MemRead Añadir salto incondicional
M A d d u x 1 4 R e g W r i t e I n s t r u c t i o n [ 2 5 – 2 1 ] R e a d r e g i s t e r 1 R e a d M e m W r i t e R e a d P C d a t a 1 I n s t r u c t i o n [ 2 0 – 1 6 ] a d d r e s s R e a d M e m t o R e g A L U S r c r e g i s t e r 2 Z e r o I n s t r u c t i o n R e a d A L U [ 3 1 – 0 ] R e a d W r i t e d a t a 2 1 A d d r e s s r e s u l t r e g i s t e r d a t a M I n s t r u c t i o n W r i t e u m e m o r y R e g i s t e r s x d a t a D a t a 0 W r i t e m e m o r y R e g D s t d a t a 1 6 3 2 S i g n I n s t r u c t i o n [ 1 5 – 0 ] e x t e n d M e m R e a d I n s t r u c t i o n [ 5 – 0 ] A L U O p Esquema alternativo (sin instrucción j) • Camino de datos con todos los multiplexores y líneas de control necesarias (según figura del libro de texto). P C S r c 0 A L U A d d r e s u l t S h i f t l e f t 2 0 A L U 0 M M u u I n s t r u c t i o n [ 1 5 – 1 1 ] x x 1 1 A L U c o n t r o l
Resumen (I) • La organización del procesador condiciona el Tcpu • 5 pasos en el diseño del procesador • 1. Analizar repertorio de instrucciones Funcionalidad del camino de datos • 2. Seleccionar componentes del camino de datos • 3. Ensamblar camino de datos para proporcionar la funcionalidad requerida. • 4. Analizar la implementación de cada instrucción para determinar la ubicación de los puntos de control que permitan ejecutar las transferencias entre registros. • 5. Diseño de la unidad de control (a continuación ...)
Resumen (II) • MIPS hace fácil la implementación de estos pasos • Instrucciones del mismo tamaño • Registro fuente (rs) siempre en la misma posición del formato de instrucción • Valores inmediatos siempre del mismo tamaño (16 bits) y en la misma posición (bits 0-15) • Operaciones siempre sobre registros/inmediatos • Camino de datos monociclo CPI=1 TCLK grande • A continuación: Paso 5 (diseño de la unidad de control)