Sie sind auf Seite 1von 2

Algoritmo de Tomasulo Se invento para la IBM 360/91 cuando aun no existian los caches !

l principio en el "ue se #asa es $register renaming% !n el algoritmo de Tomasulo el renom#rado de registros es provisto por las $estaciones de reserva% "ue guardan los operandos de las instrucciones "ue esperan a ser lan&adas 'a idea #asica es "ue las estaciones de reserva #usca ( #u)erea un operando tan pronto como esta disponi#le* eliminando la necesidad de o#tener ese operando de un registro Ademas las instrucciones pendientes indican "ue numero de estacion de reserva va a proveer la entrada necesaria +inalmente cuando se produce overlap de escrituras sucesivas a un registro* solo la ultima es la "ue realmente se usa para actuali&ar el registro ,uando se leen las instrucciones* los especi)icadotes de los registros de operandos pendientes son renom#rados a nom#res de estaciones de reserva ,omo ha( mas estaciones de reserva "ue registros esta tecnica elimina muchos ha&ards provenientes de las dependencias de nom#res -elimina .A/ ( .A.0 !l uso de estaciones de reserva lleva a dos propiedades importantes1 primero el control para detectar ha&ards ( el control de e2ecuci3n estan distri#uidos -la in)o en las estaciones de reserva de cada unidad )uncional determina cuando una instrucci3n puede empe&ar a e2ecutarse en esa unidad )uncional0* segundo los resultados son pasados directamente a las unidades )uncionales desde las /! donde estan #u)ereados* en ve& de pasar a los registros !ste #(passing se hace a traves del common data #us ,4B -va a todas las unidades )uncionales "ue estan esperando el dato0 ,omo van pasando las instrucciones en el pipeline agregando Tomasulo1 1 Issue1 se toma la instrucci3n de la cola +I+5 Si ha( una estacion de reserva vacia se guarda alli 2unto con los valores de los operandos si estos estan en los registros Si no ha( !/ vacia entonces se hace stall hasta "ue alguna se li#ere Si los opernado no estan en los registros se colocan los numeros de las unidades )uncionales "ue los van a producir en los campos 6i ( 62 !ste paso renom#ra los registros 7 !2ecuci3n1 Si uno o mas de los operandos no esta disponi#les se monitorea el ,4B esperando a "ue se lo calcule ,uando todos los operandos estan disponi#les* se puede e2ecutar la operaci3n en la unidad )uncional correspondiente !s posi#le "ue varias instrucciones esten listas para e2ecutar en ese ciclo de cloc8 en la misma unidad )uncional !n ese caso se elige una de ellas 'os loads ( stores re"uieren un proceso de e2ecuci3n de 7 pasos !l primer paso computa la direccion e)ectiva ( la pone en el load o store #u))er 'os loads en el load #u))er se e2ecutan tan pronto como la unidad de memoria esta disponi#le 'os stores en el store #u))er esperan por el valor a ser guardado antes de enviarlo a la unidad de memoria 9ara preservar el comportamiento de excepciones no se permite "ue se e2ecute ninguna instrucci3n antes "ue todos los saltos "ue preceden dicha instrucci3n en el programa se ha(an completado !sto garanti&a "ue las excepciones "ue se produ&can realmente se ha#r:an producido durante la e2ecuci3n 3 .rite /esult1 cuando el resultado esta disponi#le* se lo escri#e en el ,4B ( desde ah: a los registros ( a las estaciones de reserva -inclu(endo los store #u))ers0 "ue esperan por ese resultado 'os stores tam#i;n escri#en datos a la memoria durante este paso* cuando am#os la direcci3n ( los valores est<n disponi#les son enviados a la unidad de memoria ( se completa el store

Se usan estructuras de datos atacadas a las !/* 'oad Bu))er* Store Bu))er para detectar ( eliminar ha&ards !stos tags son esencialmente nom#res para un set extendido de registros virtuales usados en el renom#rado !l tag )ield es de = #its "ue denota una de las cinco estaciones de reserva ( uno de los seis load #u))ers !sto es e"uivalente a tener 11 registros -la 360 tenia = por ar"uitectura0 !n un procesador con mas registros el renom#rado provee un set de registros virtuales mas grande !l tag descri#e "ue estaciones de reserva contienen la instrucci3n "ue va a producir el resultado necesitado como operando !ach reservation station has six )ields1 5p>The operation to per)orm on source operands S1 and S7 62* 68>The reservation stations that ?ill produce the corresponding source operand@ a value o) &ero indicates that the source operand is alread( availa#le in A2 or A8* or is unnecessar( -The IBM 360/91 calls these SIBCunit and S5D/,!unit 0 A2* A8>The value o) the source operands Bote that onl( one o) the A )ield or the 6 )ield is valid )or each operand +or loads* the A8 )ield is used to the o))set )rom the instruction AEused to hold in)ormation )or the memor( address calculation )or a load or store Initiall(* the immediate )ield o) the instruction is stored here@ a)ter the address calculation* the e))ective address is stored here Bus(>Indicates that this reservation station and its accompan(ing )unctional unit are occupied The register )ile has a )ield* 6i1 6i>The num#er o) the reservation station that contains the operation ?hose result should #e stored into this register I) the value o) 6i is #lan8 -or 00* no currentl( active instruction is computing a result destined )or this register* meaning that the value is simpl( the register contents The load and store #u))ers each have a )ield* A* ?hich holds the result o) the e))ective address once the )irst step o) execution has #een completed In the next section* ?e ?ill )irst consider some examples that sho? ho? these mechanisms ?or8 and then examine the detailed algorithm

Das könnte Ihnen auch gefallen