Plataformas de soporte computacional: arquitecturas avanzadas, sesi´on 1 Diego R. Llanos, Bel´en Palop Departamento de Inform´atica Universidad de Valladolid {diego,b.palop}@infor.uva.es

´Indice 1. Arquitectura Von Neumann

1

2. Arquitectura MIPS

2

3. Implementaci´ on uniciclo

4

4. Implementaci´ on multiciclo

6

1.

Arquitectura de Von Neumann, ciclo de instrucci´ on

En este apartado se har´ a un breve repaso a la arquitectura Von Neumann y al concepto de ciclo de instrucci´ on. Para ello se har´ a uso de un ejemplo de implementaci´on uniciclo basado en la arquitectura MIPS de 32 bits. Arquitectura Von Neumann Arquitectura basada en una serie de unidades funcionales: • CPU: encargada de la ejecuci´ on de instrucciones. Consta de un banco de registros, una unidad aritm´etico-l´ ogica (ALU) y una unidad de control, encargada del secuenciamiento de operaciones. • Memoria: encargada del almacenamiento de instrucciones y datos. • Entrada/salida: interacci´ on con el usuario o con otros equipos.

1

CPU

Memoria

PC

ALU

Entrada/Salida

Banco Registros Unid. Control

Ciclo de instrucci´ on Fundamento de la ejecuci´ on de instrucciones. Fases 1. Fase de b´ usqueda: • Se trae de memoria la instrucci´on a la que apunta el PC. • Se deja al PC apuntando a la siguiente instrucci´on. 2. Fase de ejecuci´ on: se ejecuta la instrucci´on. Tipos de instrucciones: • De transferencia de datos entre registros y memoria • Operaciones aritm´eticas y l´ ogicas (n´ umeros enteros o reales) • Saltos condicionales e incondicionales en el c´odigo Implementaciones de la arquitectura Von Neumann Dos filosof´ıas de dise˜ no: • Pocas instrucciones de tama˜ no fijo (RISC) ◦ Ejemplos: MIPS, SPARC, PowerPC (' 50 instrucciones) • Muchas instrucciones de tama˜ no variable (CISC) ◦ Ejemplo: Intel IA-32 (≥ 300 instrucciones) Soluciones de compromiso entre los siguientes factores: • Instrucciones de tama˜ no fijo: simplicidad de la fase de b´ usqueda (pero dificultades en su dise˜ no y ampliaci´ on). • Pocas instrucciones: rapidez en su ejecuci´on (pero trabajo a˜ nadido al compilador).

2.

Arquitectura MIPS

Arquitectura MIPS Desarrollada por John Hennessy, de Stanford, entre 1981 y 1985. Arquitectura RISC, palabra de instrucci´on de tama˜ no fijo, desarrollado para aprovechar al m´aximo las t´ecnicas de pipelining 2

Presente en routers, equipos empotrados (TiVO), y consolas como la Play Station, PSP, y PS2. ISA con versiones de 32 y 64 bits, adem´as de extensiones para aplicaciones espec´ıficas (compresi´on, instrucciones SIMD para coma flotante, etc) Veremos brevemente el ISA de 32 bits, para utilizarlo como caso de ejemplo para las realizaciones uniciclo y multiciclo. Definici´ on MIPS: Un “word” o “palabra” equivale a 4 bytes. Arquitectura MIPS Nombre 32 registros

Ejemplo $s0..$s7, $t0..$t9, $gp, $fp, $zero, $sp, $ra, $at, Hi, Lo

Comentarios Almacenamiento de datos. En MIPS, para hacer operaciones aritm´eticas los datos tienen que estar almacenados en registros. El registro $zero siempre vale cero. El registro $at est´a reservado por el ensamblador para manejar constantes grandes. Los registros Hi y Lo almacenan el resultado de la multiplicaci´on y divisi´on.

Arquitectura MIPS Nombre 230 memory words

Ejemplo Memory[0], mory[4]...

Me-

Comentarios S´olo accesible a trav´es de transferencia de datos. MIPS utiliza direcciones de bytes, por lo que las direcciones de word son m´ ultiplo de 4. La memoria almacena estructuras de datos y los contextos de las llamadas a subrutinas.

Arquitectura MIPS: instrucciones aritm´ eticas Operaciones aritm´eticas: tres registros como operandos, el primero es siempre el destino de la operaci´ on. Ejemplos: add, addu, addi, sub, subu, mfc0, mult, multu, div, divu, mfhi, mflo.

Instrucci´ on suma resta suma inmediata suma sin signo. resta sin signo. multiplicaci´ on divisi´ on

Ejemplo add $s1, $s2, $s3 sub $s1, $s2, $s3 addi $s1, $s2, 100 addu $s1, $s2, 100 subu $s1, $s2, 100 mul $s1, $s2 div $s1, $s2

Mover desde Hi Mover desde Lo

mfhi $s1 mflo $s1

Significado $s1=$s2+$s3 $s1=$s2-$s3 $s1=$s2+100 $s1=$s2+$s3 $s1=$s2-$s3 (Hi,Lo)=$s1×$s2 Lo=$s1 / $s2 Hi=$s1 mod $s2 $s1=Hi $s1=Lo

Arquitectura MIPS: instrucciones l´ ogicas

3

Comentarios Tres operandos, detecta overflow Tres operandos, detecta overflow Detecta overflow Tres operandos, no detecta overflow Tres operandos, no detecta overflow Producto 64 bits en (Hi,Lo) Lo = divisi´on entera Hi = resto Recupera valor de Hi Recupera valor de Lo

Instrucci´ on and or and inmediato or inmediato desplazamiento l´ ogico izquierda desplazamiento l´ ogico derecha

Ejemplo and $s1, $s2, $s3 or $s1, $s2, $s3 andi $s1, $s2, 100 ori $s1, $s2, 100 sll $s1, $s2, 10 srl $s1, $s2, 10

Significado $s1=$s2&+$s3 $s1=$s2|$s3 $s1=$s2&100 $s1=$s2|100 $s1=$s210

Comentarios Tres operandos Tres operandos Tres operandos Tres operandos Despl. constante Despl. constante

Arquitectura MIPS: instrucciones de transferencia Transferencia de datos: direccionamiento por base y desplazamiento (el desplazamiento es opcional). El primer operando no siempre es el destino de la operaci´on. Instrucci´ on load word store word load byte store byte load upper immediate

Ejemplo lw $s1, 100($s2) sw $s1, 100($s2) lb $s1, 100($s2) sb $s1, 100($s2) lui $s1, 100

Significado $s1=Memory[$s2+100] Memory[$s2+100]=$s1 $s1=Memory[$s2+100] Memory[$s2+100]=$s1 $s1=100*216

Comentarios Word de memoria a registro Word de registro a memoria Byte de memoria a registro Byte de registro a memoria Carga sobre los 16 bits sup.

Arquitectura MIPS: algunas instrucciones de saltos Saltos o transferencia de control: act´ uan sobre el contador de programa. Saltos condicionales e incondicionales. Algunos ejemplos: Instrucci´ on branch on equal

Ejemplo beq $s1, $s2, 25

branch on not equal

bne $s1, $s2, 25

set on less than

slt $s1, $s2, $s3

set on less than imm.

slti $s1, $s2, 100

set on less than imm. unsigned

sltiu $s1, $s2, 100

jump jump register jump and link

j 2500 j $ra jal 2500

Significado if ($s1==$s2) goto PC=PC+4+100 if ($s1!=$s2) goto PC=PC+4+100 if ($s2