34
Cap´ ıtulo 1 Procesadores vectoriales En el camino hacia los multiprocesadores y multicomputadores nos encontramos con los procesadores vectoriales que son una forma tambi´ en de procesamiento paralelo. Normalmente el c´alculo cient´ ıfico y matem´atico precisa de la realizaci´on de un umero elevado de operaciones en muy poco tiempo. La mayor´ ıa de los problemas ısicos y matem´aticos se pueden expresar f´acilmente mediante la utilizaci´on de matrices y vectores. Aparte de que esto supone una posible claridad en el lenguaje, va a permitir explotar al m´aximo un tipo de arquitectura espec´ ıfica para este tipo de tipos de datos, y es la de los procesadores vectoriales. El paralelismo viene de que al operar con matrices, normalmente, los elementos de las matrices son independientes entre s´ ı, es decir, no existen dependencias de datos dentro de las propias matrices, en general. Esto permite que todas las operaciones entre elementos de unas matrices con otras puedan realizarse en paralelo, o al menos en el mismo cauce de instrucciones sin que haya un conflicto entre los datos. Otra ventaja del c´alculo matricial es que va a permitir replicar las unidades de c´alculo sin necesidad de replicar las unidades de control. Se tendr´ ıa en este caso una especie de multiprocesador sin necesidad de tener que replicar tanto la unidad de control como la de c´alculo, eso s´ ı, el n´ umero de tareas que un sistema de este tipo podr´ ıa abordar son limitadas. Los procesadores vectoriales se caracterizan porque van a ofrecer una serie de ope- raciones de alto nivel que operan sobre vectores, es decir, matrices lineales de n´ umeros. Unaoperaci´ont´ ıpica de un procesador vectorial ser´ ıa la suma de dos vectores de coma flotante de 64 elementos para obtener el vector de 64 elementos resultante. La instruc- ci´on en este caso es equivalente a un lazo software que a cada iteraci´on opera sobre uno de los 64 elementos. Un procesador vectorial realiza este lazo por hardware apro- vechando un cauce m´as profundo, la localidad de los datos, y una eventual repetici´on de las unidades de c´alculo. Las instrucciones vectoriales tienen unas propiedades importantes que se resumen a continuaci´ on aunque previamente ya se han dado unas pinceladas: El c´alculo de cada resultado es independiente de los resultados anteriores en el mismo vector, lo que permite un cauce muy profundo sin generar riesgos por las dependencias de datos. La ausencia de estos riesgos viene decidida por el compilador o el programador cuando se decidi´o que la instrucci´on pod´ ıa ser utilizada. Una sola instrucci´on vectorial especifica una gran cantidad de trabajo, ya que equi- Ingenier´ ıaInform´atica Universidad de Valencia

Aac Vector

Embed Size (px)

DESCRIPTION

vector

Citation preview

Captulo1ProcesadoresvectorialesEn el camino hacia los multiprocesadores y multicomputadores nos encontramos conlosprocesadoresvectorialesquesonunaformatambiendeprocesamientoparalelo.Normalmente el calculo cientco ymatematico precisa de la realizacionde unn umeroelevadodeoperaciones enmuypocotiempo. Lamayoradelos problemasfsicos y matematicos se pueden expresar facilmente mediante la utilizacion de matricesy vectores. Aparte de que esto supone una posible claridad en el lenguaje, va a permitirexplotaralmaximountipodearquitecturaespeccaparaestetipodetiposdedatos,yesladelosprocesadoresvectoriales.El paralelismovienedequeal operar conmatrices, normalmente, los elementosdelasmatricessonindependientesentres,esdecir,noexistendependenciasdedatosdentro de las propias matrices, en general. Esto permite que todas las operaciones entreelementosdeunasmatricesconotraspuedanrealizarseenparalelo, oal menosenelmismocaucedeinstruccionessinquehayaunconictoentrelosdatos.Otra ventaja del calculo matricial es que va a permitir replicar las unidades de calculosin necesidad de replicar las unidades de control. Se tendra en este caso una especie demultiprocesadorsinnecesidaddetenerquereplicartanto launidaddecontrolcomoladecalculo,esos,eln umerodetareasqueunsistemadeestetipopodraabordarsonlimitadas.Losprocesadoresvectorialessecaracterizanporquevanaofrecerunaseriedeope-raciones de alto nivel que operan sobre vectores, es decir, matrices lineales de n umeros.Unaoperaciontpicadeunprocesadorvectorialseralasumadedosvectoresdecomaotantede64elementosparaobtenerelvector de64elementosresultante. Lainstruc-cionenestecasoesequivalenteaunlazosoftwarequeacadaiteracionoperasobreunodelos64elementos. Unprocesadorvectorialrealizaestelazoporhardwareapro-vechandouncaucemasprofundo, lalocalidaddelosdatos, yunaeventualrepeticiondelasunidadesdecalculo.Las instrucciones vectoriales tienen unas propiedades importantes que se resumen acontinuaci onaunquepreviamenteyasehandadounaspinceladas: El calculode cadaresultadoes independiente de los resultados anteriores enelmismovector, loquepermiteuncaucemuyprofundosingenerarriesgosporlasdependencias de datos. La ausencia de estos riesgos viene decidida por el compiladoroelprogramadorcuandosedecidioquelainstruccionpodaserutilizada. Una sola instruccion vectorial especica una gran cantidad de trabajo, ya que equi-IngenieraInformatica UniversidaddeValencia2 Procesadoresvectorialesvale a ejecutar un bucle completo. Por lo tanto, el requisito de anchura de banda delasinstruccionessereduceconsiderablemente. Enlosprocesadoresnovectoriales,dondeseprecisanmuchasmasinstrucciones, lab usquedaydecodicaciondelasinstruccionespuederepresentaruncuellodebotella, quefuedetectadoporFlynnen1966yporesoselellamacuellodebotelladeFlynn. Las instrucciones vectoriales queaccedenamemoriatienenunpatrondeaccesoconocido. Si loselementosdelamatrizsontodosadyacentes, entoncesextraerelvectordeunconjuntodebancosdememoriaentrelazadafuncionamuybien. Laaltalatenciadeiniciarunaccesoamemoriaprincipal,encomparacionconaccedera una cache, se amortiza porque se inicia un acceso para el vector completo en lugardeparaun unicoelemento. Porello,elcostedelalatenciaamemoriaprincipalsepagaunasolavezparaelvectorcompleto,enlugardeunavezporcadaelementodelvector. Comosesustituyeunbuclecompletoporunainstruccionvectorial cuyocompor-tamientoestapredeterminado,losriesgosdecontrolenelcauce,quenormalmentepodransurgirdelsaltodelbucle,soninexistentes.Porestasrazones, lasoperacionesvectorialespuedenhacersemasrapidasqueunasecuenciadeoperaciones escalares sobreel mismon umerodeelementos dedatos, ylosdise nadoresestanmotivadosparaincluirunidadesvectorialessielconjuntodelasaplicacioneslaspuedeusarfrecuentemente.El presente captulo ha sido elaborado a partir de [HP96], [HP93] y [Hwa93]. Comolecturasadicionalessepuedeampliarlainformacioncon[Sto93]y[HB87].1.1 Procesadorvectorialbasico1.1.1 ArquitecturavectorialbasicaUn procesador vectorial esta compuesto tpicamente por una unidad escalar y una uni-dadvectorial. Lapartevectorialpermitequelosvectoresseantratadoscomon umerosen coma otante, como enteros o como datos logicos. La unidad escalar es un procesadorsegmentadonormalycorriente.Haydostiposdearquitecturasvectoriales:Maquinavectorialconregistros: enunamaquinadeestetipo, todas las opera-cionesvectoriales, exceptolasdecargayalmacenamiento, operanconvectoresalmacenadosenregistros. Estasmaquinassonelequivalentevectorialdeunaar-quitectura escalar de carga/almacenamiento. La mayora de maquinas vectorialesmodernas utilizan este tipo de arquitectura. Ejemplos: Cray Research (CRAY-1,CRAY-2,X-MP,Y-MPyC-90),lossupercomputadoresjaponeses(NECSX/2ySX/3,lasFujitsuVP200yVP400ylaHitachiS820)Maquinavectorialmemoria-memoria: enestas maquinas, todas las operacionesvectoriales son de memoria a memoria. Como la complejidad interna, as como elcoste,sonmenores,eslaprimeraarquitecturavectorialqueseempleo. Ejemplo:elCDC.El restodel captulotratasobrelasmaquinasvectorialesconregistros, yaquelasdememoriahancadoendesusoporsumenorrendimiento.IngenieraInformatica UniversidaddeValencia1.1Procesadorvectorialbasico 3La gura 1.1 muestra la arquitectura tpica de una maquina vectorial con registros.Los registros se utilizanparaalmacenar los operandos. Los cauces vectoriales fun-cionalescogenlosoperandos,ydejanlosresultados,enlosregistrosvectoriales. Cadaregistro vectorial esta equipado con un contador de componente que lleva el seguimientodelcomponentedelosregistrosenciclossucesivosdelcauce.Cauce func. vectorialCauce func. vectorialUnidad de controlvectorialComputadoranfitrinAlmacenamientomasivoE/S UsuarioProcesador escalarUnidad de controlMemoria principalfuncionalesCaucesescalaresescalar(Programa y datos)DatosescalaresInstrucciones escalaresInstruccionesInstrucciones vectorialesControlProcesador vectorialVectorialesRegistrosDatosvectorialesFigura1.1: Laarquitecturadeunsupercomputadorvectorial.La longitud de cada registro es habitualmente ja, como por ejemplo 64 componentesde 64 bits cada uno como en un Cray. Otras maquinas, como algunas de Fujitsu, utilizanregistros vectoriales recongurables para encajar dinamicamente la longitud del registroconlalongituddelosoperandos.Porlogeneral, el n umeroderegistrosvectorialesyel deunidadesfuncionalesesjoenunprocesador vectorial. Por lotanto, ambos recursos debenreservarse conantelaci onparaevitarconictosentrediferentesoperacionesvectoriales.Lossupercomputadoresvectorialesempezaronconmodelosuniprocesadorescomoel Cray 1 en 1976. Los supercomputadores vectoriales recientes ofrecen ambos modelos,el monoprocesadoryel multiprocesador. Lamayoradesupercomputadoresdealtasprestacionesmodernosofrecenmultiprocesadoresconhardwarevectorialcomounaca-ractersticamasdelosequipos.Resultainteresante denirse unaarquitecturavectorial sobre laque explicar lasnocionesdearquitecturasvectoriales. Estaarquitecturatendracomoparteenteralapropiadel DLX, ysupartevectorial seralaextensionvectorial logicadeDLX. Loscomponentesbasicosdeestaarquitectura, parecidaaladeCray1, semuestraenlagura1.2.Los componentes principales del conjuntodeinstrucciones delamaquinaDLXVson:Registrosvectoriales. Cada registro vectorial es un banco de longitud ja que contie-ne un solo vector. DLXV tiene ocho registros vectoriales, y cada registro vectorialcontiene 64 dobles palabras. Cada registro vectorial debe tener como mnimo dospuertosdelecturayunodeescrituraenDLXV. Estopermiteunaltogradodesolapamientoentrelasoperacionesvectorialesqueusandiferentesregistrosvec-toriales.IngenieraInformatica UniversidaddeValencia4 ProcesadoresvectorialesEnteroLgicodivisin FPmultiplicacin FPsuma/resta FPCarga/almacenamientovectorialMemoria principalRegistrosescalaresRegistrosvectorialesFigura1.2: Estructurabasicadeunaarquitecturavectorialconregistros,DLXV.Unidadesfuncionalesvectoriales. Cadaunidadseencuentracompletamenteseg-mentada y puede comenzar una nueva operacion a cada ciclo de reloj. Se necesitauna unidad de control para detectar conictos en las unidades funcionales (riesgosestructurales)yconictosenlosaccesosaregistros(riesgospordependenciasdedatos).Unidaddecarga/almacenamientodevectores. Es una unidad que carga o alma-cenaunvectorenodesdelamemoria. LascargasyalmacenamientosenDLXVestan completamente segmentadas, para que las palabras puedan ser transferidasentrelosregistrosvectorialesymemoria,conunanchodebandadeunapalabraporcicloderelojtrasunalatenciainicial.Conjuntoderegistrosescalares. Estostambienpuedenproporcionardatoscomoentradas a las unidades funcionales vectoriales, as como calcular direcciones parapasar alaunidadde carga/almacenamientode vectores. Estos seranlos 32registrosnormalesdepropositogeneral ylos32registrosdepuntootantedelDLX.Lagura1.3muestralascaractersticasdealgunosprocesadoresvectoriales,inclu-yendoeltama noyeln umeroderegistros,eln umeroytipodeunidadesfuncionales,yeln umerodeunidadesdecarga/almacenamiento.1.1.2 InstruccionesvectorialesbasicasPrincipalmentelasinstruccionesvectorialessepuedendividirenseistiposdiferentes.El criterio de division viene dado por el tipo de operandos y resultados de las diferentesinstruccionesvectoriales:1. Vector-vector: Lasinstruccionesvector-vectorsonaquellascuyosoperandossonvectores yel resultadotambienes unvector. SuponiendoqueVi, VjyVksonregistrosvectoriales, estetipodeinstruccionesimplementanel siguientetipodefunciones:f1: Vi VjIngenieraInformatica UniversidaddeValencia1.1Procesadorvectorialbasico 5 Processor YearannouncedClockrate(MHz) RegistersElements perregister (64-bitelements) Functional unitsLoad-store units CRAY-1 1976 80 8 64 6: add, multiply, reciprocal, integer add, logical, shift1CRAY X-MP CRAY Y-MP198319881201668 64 8: FP add, FP multiply, FP re-ciprocal, integer add, 2 logical, shift, population count/parity2 loads1 storeCRAY-2 1985 166 8 64 5: FP add, FP multiply, FP re-ciprocal/sqrt, integer (add shift, population count), logical1Fujitsu VP100/2001982 133 8-256 32-1024 3: FP or integer add/logical, multiply, divide2Hitachi S810/8201983 71 32 256 4: 2 integer add/logical, 1 multiply-add, and 1 multiply/divide-add unit4Convex C-1 1985 10 8 128 4: multiply, add, divide, integer/logical1NEC SX/2 1984 160 8 + 8192256 variable 16: 4 integer add/logical, 4 FP multiply/divide, 4 FP add, 4 shift8DLXV 1990 200 8 64 5: multiply, divide, add, integer add, logical1Cray C-90 1991 240 8 128 8: FP add, FP multiply, FP re-ciprocal, integer add, 2 logical, shift, population count/parity4Convex C-4 1994 135 16 128 3: each is full integer, logical, and FP (including multiply-add)NEC SX/4 1995 400 8 + 8192256 variable 16: 4 integer add/logical, 4 FP multiply/divide, 4 FP add, 4 shift8Cray J-90 1995 100 8 64 4: FP add, FP multiply, FP re-ciprocal, integer/logicalCray T-90 1996 ~500 8 128 8: FP add, FP multiply, FP re-ciprocal, integer add, 2 logical, shift, population count/parity4 Figura1.3: Caractersticasdevariasarquitecturasvectoriales.f2: VjVk ViAlgunosejemplosson: V1= sin(V2)oV3= V1 + V2.2. Vector-escalar: Soninstruccionesencuyosoperandosintervienealg unescalaryel resultadoesunvector. Si sesunescalarsonlasinstruccionesquesiguenelsiguientetipodefuncion:f3: d Vi VjUn ejemplo es el producto escalar, que el resultado es un vector tras multiplicar elvectororigenporelescalarelementoaelemento.3. Vector-memoria: SuponiendoqueMesel comienzodeunvectorenmemoria,setienenlasinstruccionesdecargayalmacenamientodeunvector:f4: M V Cargadelvectorf5: V M Almacenamientodelvector4. Reducciondevectores: Soninstrucciones cuyos operandos sonvectores yelresultado es un escalar, por eso se llaman de reduccion. Los tipos de funciones quedescribenestasinstruccionessonlossiguientes:f6: Vi sjIngenieraInformatica UniversidaddeValencia6 Procesadoresvectorialesf7: ViVj skElmaximo,lasuma,lamedia,etc.,sonejemplosdef6,mientrasqueelproductopunto(s =

ni=1 aibi)esunejemplodef7.5. ReuniryEsparcir: Estasfuncionessirvenparaalmacenar/cargarvectoresdis-persos en memoria. Se necesitan dos vectores para reunir o esparcir el vector de/alamemoria. Estassonlasfuncionesparareuniryesparcir:f8: M V1V0Reunirf9: V1V0 M EsparcirLaoperacionreunir tomade lamemorialos elementos nonulos de unvectordispersousandounos ndices. Laoperacionesparcirhacelocontrario, almacenaenlamemoriaunvector enunvector dispersocuyas entradas nonulas estanindexadas. El registrovectorial V1contienelos datos yel V0losndices deloselementosnonulos.6. Enmascaramiento: Enestasinstruccionesseutilizaunvectordemascaraparacomprimiroexpandirunvectoraunvector ndice. Laaplicacionquetienelugareslasiguiente:f10: V0Vm V11.1.3 EnsambladorvectorialDLXVEnDLXVlasoperacionesvectorialesusanlosmismosmnemotecnicosquelasopera-ciones DLX, peroa nadiendolaletraV(ADDV). Si unadelas entradas es unescalarseindicaraa nadiendoel sujoSV(ADDSV). Lagura1.4muestralasinstruccionesvectorialesdelDLXV.Ejemplo: elbucleDAXPYExiste un bucle tpico para evaluar sistemas vectoriales y multiprocesadores que consisteenrealizarlaoperacion:Y= a X + YdondeXeY sonvectores queresideninicialmenteenmemoria, mientras que aesunescalar. Aestebucle, quees bastanteconocido, selellamaSAXPYoDAXPYdependiendo de si la operacion se realiza en simple o doble precision. A esta operacionnos referiremos a la hora de hacer calculos de rendimiento y poner ejemplos. Estos buclesforman el bucle interno del benchmark Linpack. (SAXPY viene de single-precisionaXplus Y; DAXPYvienededouble-precisionaXplus Y.) Linpackesunconjuntoderutinasdealgebralineal,yrutinaspararealizarelmetododeeliminaciondeGauss.Paralosejemplosquesiguenvamosasuponerqueel n umerodeelementos, olon-gitud, deunregistrovectorial coincideconlalongituddelaoperacionvectorial enlaqueestamosinteresados. Masadelanteseestudiaraelcasoenqueestonoseaas.Resulta interesante, para las explicaciones que siguen, dar los programas en ensam-bladorpararealizarelcalculo delbucleDAXPY.Elsiguienteprogramasera elcodigoescalarutilizandoeljuegodeinstruccionesDLX:IngenieraInformatica UniversidaddeValencia1.1Procesadorvectorialbasico 7Instruction Operands FunctionADDVADDSVV1,V2,V3V1,F0,V2Add elements of V2 and V3, then put each result in V1.Add F0 to each element of V2, then put each result in V1.SUBVSUBVSSUBSVV1,V2,V3V1,V2,F0V1,F0,V2Subtract elements of V3 from V2, then put each result in V1.Subtract F0 from elements of V2, then put each result in V1.Subtract elements of V2 from F0, then put each result in V1.MULTVMULTSVV1,V2,V3V1,F0,V2Multiply elements of V2 and V3, then put each result in V1.Multiply F0 by each element of V2, then put each result in V1.DIVVDIVVSDIVSVV1,V2,V3V1,V2,F0V1,F0,V2Divide elements of V2 by V3, then put each result in V1.Divide elements of V2 by F0, then put each result in V1.Divide F0 by elements of V2, then put each result in V1.LV V1,R1 Load vector register V1 from memory starting at address R1.SV R1,V1 Store vector register V1 into memory starting at address R1.LVWS V1,(R1,R2) Load V1 from address at R1 with stride in R2, i.e., R1+i R2.SVWS (R1,R2),V1 Store V1 from address at R1 with stride in R2, i.e., R1+i R2.LVI V1,(R1+V2) Load V1 with vector whose elements are at R1+V2(i), i.e., V2 is an index.SVI (R1+V2),V1 Store V1 to vector whose elements are at R1+V2(i), i.e., V2 is an index.CVI V1,R1 Create an index vector by storing the values 0, 1 R1, 2 R1,...,63 R1 into V1.S--VS--SVV1,V2F0,V1Compare the elements (EQ, NE, GT, LT, GE, LE) in V1 and V2. If condition is true, put a 1 in the corresponding bit vector; otherwise put 0. Put resulting bit vector in vector-mask register (VM). The instruction S--SV performs the same compare but using a scalar value as one operand.POP R1,VM Count the 1s in the vector-mask register and store count in R1.CVM Set the vector-mask register to all 1s.MOVI2SMOVS2IVLR,R1R1,VLRMove contents of R1 to the vector-length register.Move the contents of the vector-length register to R1.MOVF2SMOVS2FVM,F0F0,VMMove contents of F0 to the vector-mask register.Move contents of vector-mask register to F0.Figura1.4: InstruccionesvectorialesdelDLXV.LD F0,aADDI R4,Rx,#512 ; ultima direccion a cargarloop:LD F2,0(Rx) ; carga X(i) en un registroMULTD F2,F0,F2 ; a.X(i)LD F4,0(Ry) ; carga Y(i) en un registroADDD F4,F2,F4 ; a.X(i)+Y(i)SD 0(Ry),F4 ; almacena resultado en Y(i)ADDI Rx,Rx,#8 ; incrementa el ndice de XADDI Ry,Ry,#8 ; incrementa el ndice de YSUB R20,R4,Rx ; calcula lmiteBNZ R20,loop ; comprueba si fin.El programacorrespondienteenunaarquitecturavectorial, comolaDLXV, seradelasiguienteforma:LD F0,a ; carga escalar aLV V1,Rx ; carga vector XMULTSV V2,F0,V1 ; a*X(i)LV V3,Ry ; carga vector YADDV V4,V2,V3 ; sumaSV Ry,V4 ; almacena el resultadoDe los codigos anteriores se desprenden dos cosas. Por un lado la maquina vectorialreduceconsiderablementeel n umerodeinstruccionesaejecutar, yaqueserequierenIngenieraInformatica UniversidaddeValencia8 Procesadoresvectorialessolo 6 frente a casi las 600 del bucle escalar. Por otro lado, en la ejecucion escalar, debebloquearse la suma, ya que comparte datos con la multiplicacion previa; en la ejecucionvectorial,tantolamultiplicaci oncomolasumasonindependientesy,portanto,nosebloquea el cauce durante la ejecucion de cada instruccion sino entre una instruccion y laotra, es decir, una sola vez. Estos bloqueos se pueden eliminar utilizando segmentacionsoftwareodesarrollandoelbucle,sinembargo,elanchodebandadelasinstruccionesseramuchomasaltosinposibilidaddereducirlo.1.1.4 TiempodeejecucionvectorialTressonlosfactoresqueinuyen eneltiempo deejecuciondeunasecuenciadeopera-cionesvectoriales: Lalongituddelosvectoressobrelosqueseopera. Losriesgosestructuralesentrelasoperaciones. Lasdependenciasdedatos.Dadalalongituddel vectorylavelocidaddeinicializacion, queeslavelocidadalacual unaunidadvectorial consumenuevosoperandosyproducenuevosresultados,podemos calcular el tiempoparaunainstruccionvectorial. Lonormal es que estavelocidadseade unopor ciclodel reloj. Sinembargo, algunos supercomputadoresproducen 2 o mas resultados por ciclo de reloj,y otros,tienen unidades que pueden noestarcompletamentesegmentadas. Porsimplicidadsesupondraqueestavelocidadesefectivamentelaunidad.Para simplicar la discusion del tiempo de ejecucion se introduce la nocion de convoy,queesel conjuntodeinstruccionesvectorialesquepodranpotencialmenteiniciarsuejecucionenel mismociclodereloj. Lasinstruccionesenunconvoynodebenincluirni riesgos estructurales ni dedatos (aunqueestosepuederelajar mas adelante); siestos riesgos estuvieranpresentes, las instrucciones potenciales enel convoyhabraqueserializarlaseinicializarlasenconvoyesdiferentes. Parasimplicardiremosquelasinstruccionesdeunconvoydebenterminardeejecutarseantesquecualquierotrainstruccion, vectorial oescalar, puedaempezar aejecutarse. Estose puede relajarutilizandounmetodomascomplejodelanzarinstrucciones.Juntoconlanociondeconvoyestaladetoqueocampanada(chime)quepuedeserusadoparaevaluarelrendimientodeunasecuenciadevectoresformadaporconvoyes.Untoqueocampanadaesunamedidaaproximadadel tiempodeejecucionparaunasecuenciadevectores; lamedidadelacampanadaesindependientedelalongituddelvector. Por tanto, para una secuencia de vectores que consiste en m convoyes se ejecutaenmcampanadas, yparaunalongituddevectorden, seraaproximadamenten mciclosdereloj. Estaaproximaci onignoraalgunassobrecargassobreelprocesadorqueademasdependendelalongituddelvector. Porconsiguiente,lamedidadeltiempoencampanadas es una mejor aproximacion para vectores largos. Se usara esta medida, envezdelosperiodosdereloj, paraindicarexplcitamentequeciertassobrecargasestansiendoignoradas.Paraponerlascosasunpocomasclaras,analicemoselsiguientecodigoyextraiga-mosde ellosconvoyes:LD F0,a ; carga el escalar en F0LV V1,Rx ; carga vector XMULTSV V2,F0,V1 ; multiplicacion vector-escalarIngenieraInformatica UniversidaddeValencia1.1Procesadorvectorialbasico 9LV V3,Ry ; carga vector YADDV V4,V2,V3 ; suma vectorialSV Ry,V4 ; almacena el resultado.Dejando de lado la primera instruccion, que es puramente escalar, el primer convoyloocupalaprimerainstruccionvectorialqueesLV.LaMULTSVdependedelaprimeraporesonopuedeirenelprimerconvoy,encambio,lasiguienteLVsquepuede. ADDVdependedeestaLVportantotendraqueirenotroconvoy, ySVdependedeesta, asquetendraqueirenotroconvoyaparte. Losconvoyesseranportanto:1. LV2. MULTSV LV3. ADDV4. SVComoestasecuenciaestaformadapor4convoyesrequerira4campanadasparasuejecucion.Estaaproximaci onesbuenaparavectoreslargos. Porejemplo,paravectoresde64elementos, el tiempoencampanadasserade4, demaneraquelasecuenciatomaraunos256ciclosdereloj. Lasobrecargadeeventualmentelanzarel convoy2endosciclosdiferentesserapeque naencomparaciona256.TiempodearranquevectorialytasadeinicializacionLafuentedesobrecargamasimportante,noconsideradaenelmodelodecampanadas,es el tiempodearranque vectorial. El tiempo de arranque viene de la latencia del caucedelaoperacionvectorial yestadeterminadaprincipalmentepor laprofundidaddelcauce en relacion con la unidad funcional empleada. El tiempo de arranque incrementael tiempoefectivoenejecutar unconvoyenmas deunacampanada. Ademas, estetiempodearranqueretrasalaejecuciondeconvoyessucesivos. Porlotanto,eltiemponecesarioparalaejecuciondeunconvoyvienedadoporel tiempodearranqueylalongituddelvector. Silalongituddelvectortendieraainnito,entonceseltiempodearranqueseradespreciable,perolonormalesqueeltiempodearranqueseade6a12ciclos, lo que signica un porcentaje alto en vectores tpicos que como mucho rondaranlos64elementosociclos. Operation Start-up penalty Vector add 6Vector multiply 7Vector divide 20Vector load 12 Figura1.5: Penalizaci onporeltiempodearranqueenelDLXV.Siguiendoconelejemplomostradoanteriormente,supongamosquecargarysalvartienen un tiempo de arranque de 12 ciclos, la multiplicaci on 7 y la suma 6 tal y como sedesprende de la gura 1.5. Las sumas de los arranques de cada convoy para este ejemplosera 12+12+6+12=42, como estamos calculando el n umero de campanadas reales paraIngenieraInformatica UniversidaddeValencia10 Procesadoresvectorialesvectoresde64elementos,ladivision42/64=0.65daeln umerodecampanadastotales,que sera entonces 4.65, es decir, el tiempo de ejecucion teniendo en cuenta la sobrecargade arranque es 1.16 veces mayor. En la gura 1.6 se muestra el tiempo en quese iniciacadainstruccionas comoel tiempototal parasuejecucionenfunciondenqueeseln umerodeelementosdelvector. Convoy Starting time First-result time Last-result time 1. LV 0 12 11 + n 2. MULTSV LV 12 + n 12 + n + 12 23 + 2 n 3. ADDV 24 + 2 n 24 + 2 n + 6 29 + 3 n 4. SV 30 + 3 n 30 + 3 n + 12 41 + 4 n Figura 1.6: Tiempos de arranque y del primer y ultimo resultados para los convoys 1-4.Eltiempodearranquedeunainstruccionestpicamentelaprofundidaddelcaucede la unidad funcional que realiza dicha instruccion. Si lo que se quiere es poder lanzarunainstruccionporciclodereloj(tasadeinicializacionigualauno),entoncesProfundidaddelcauce =

TiempototaldeejecuciondelaunidadPeriododereloj

(1.1)Por ejemplo, si una operacion necesita 10 ciclos de reloj para completarse, entonceshacefaltauncauceconunaprofundidadde10paraquesepuedainicializarunains-truccionporcadaciclodereloj. Lasprofundidadesdelasunidadesfuncionalesvaranampliamente (no es raro ver cauces de profundidad 20) aunque lo normal es que tenganprofundidadesentre4y8ciclos.1.1.5 Unidadesdecarga/almacenamientovectorialEl comportamientodelaunidaddecarga/almacenamientoesmascomplicadoqueeldelasunidadesaritmeticas. El tiempodearranqueparaunacargaesel tiempoparacoger la primera palabra de la memoria y guardarla en un registro. Si el resto del vectorsepuedecogersinparadas, latasadeinicializacioneslamismaquelavelocidadalaquelasnuevaspalabrassontradasyalmacenadas. Al contrarioqueenlasunidadesfuncionales, latasadeinicializacionpuedenosernecesariamenteunainstruccionporciclo.Normalmente, el tiempodearranqueparalasunidadesdecarga/almacenamientoesalgomayorqueparalasunidadesfuncionales, pudiendollegarhastalos50ciclos.Tpicamente,estosvaloresrondanentrelos9ylos17ciclos(Cray1yCrayX-MP)Paraconseguir unatasa(ovelocidad) deinicializaciondeunapalabrapor ciclo,el sistemadememoriadebesercapazdeproduciroaceptarestacantidaddedatos.Estosepuedeconseguirmediantelacreaciondebancosdememoriam ultiplescomoseexplica en la seccion 1.2. Teniendo un n umero signicativo de bancos se puede conseguiraccederalamemoriaporlasoporcolumnasdedatos.El n umero de bancos en la memoria del sistema para las unidades de carga y alma-cenamiento, ascomolaprofundidaddelcauceenunidadesfuncionalessondealgunaIngenieraInformatica UniversidaddeValencia1.2Memoriaentrelazadaointercalada 11maneraequivalentes, yaqueambasdeterminanlastasasdeinicializaciondelasope-raciones utilizandoestas unidades. El procesador nopuede acceder aunbancodememoria mas deprisa que en un ciclo de reloj. Para los sistemas de memoria que sopor-tan m ultiples accesos vectoriales simult aneos o que permiten accesos no secuenciales enlacargaoalmacenamientodevectores, el n umerodebancosdememoriadeberasermasgrandequeelmnimo,deotramaneraexistiranconictosenlosbancos.1.2 MemoriaentrelazadaointercaladaLamayorpartedeestaseccionseencuentraenel[Hwa93],aunquesepuedeencontrarunapeque naparteenel[HP96]enelcaptulodedicadoalosprocesadoresvectoriales.ParapodersalvarelsaltodevelocidadentrelaCPU/cacheylamemoriaprincipalrealizadaconmodulosdeRAM,sepresentaunatecnicadeentrelazadoquepermiteelaccesosegmentadoalosdiferentesmodulosdememoriaparalelos.Vamos a suponer que la memoria principal se encuentra construida a partir de variosmodulos. Estosmodulosdememoriaseencuentrannormalmenteconectadosaunbusdelsistema, oaunareddeconmutadores, alacualseconectanotrosdispositivosdelsistemacomoprocesadoresosubsistemasdeentrada/salida.Cuando se presenta una direccion en un modulo de memoria esta devuelve la palabracorrespondiente. Es posiblepresentar diferentes direcciones adiferentes modulos dememoriademaneraquesepuederealizarunaccesoparaleloadiferentespalabrasdememoria. Ambostiposdeacceso, el paraleloyel segmentado, sonformasparalelaspracticadasenunaorganizaciondememoriaparalela.Consideremosunamemoriaprincipal formadaporm=2amodulos, cadaunoconw = 2bpalabras o celdas de memoria. La capacidad total de la memoria es mw = 2a+bpalabras. Aestaspalabrasselesasignandireccionesdeformalineal. Lasdiferentesformasenlasqueseasignanlinealmentelasdireccionesproducendiferentesformasdeorganizarlamemoria.Apartedelosaccesosaleatorios, lamemoriaprincipal esaccedidahabitualmentemediantebloques dedirecciones consecutivas. Los accesos enbloquesonnecesariosparatraerseunasecuenciadeinstruccionesoparaaccederaunaestructuralineal dedatos,etc. Enunsistemabasadoencachelalongituddelbloquesuelecorresponderseconlalongituddeunalneaenlacache, oconvarias lneas decache. Tambienenlosprocesadoresvectorialeselaccesoalamemoriatienehabitualmenteunaestructuralineal, yaqueloselementosdelosvectoresseencuentranconsecutivos. Portodoes-to, resultapreferibledise narlamemoriaprincipal parafacilitarel accesoenbloqueapalabrascontiguas.La gura 1.7 muestra dos formatos de direcciones para realizar una memoria entre-lazada. El entrelazadodeordenbajo (gura 1.7(a)) reparte las localizaciones contiguasdememoriaentrelosmmodulosdeformahorizontal. Estoimplicaquelosabitsdeorden bajo de la direccion se utilizan para identicar el modulo de memoria. Los b bitsdeordenmasaltoformanladirecciondelapalabradentrodecadamodulo. Hayquehacer notar que la misma direccion de palabra esta siendo aplicada a todos los modulosdeformasimultanea. Undecodicadordedireccionesseempleaparadistribuirlase-lecciondelosmodulos. Esteesquemanoesbuenoparatoleranciaafallos, yaqueencasodefallodeunmodulotodalamemoriaquedainutilizable.IngenieraInformatica UniversidaddeValencia12 ProcesadoresvectorialesEl entrelazadodeordenalto(gura1.7(b)) utilizalosabitsdeordenaltocomoselectordemodulo, ylosbbitsdeordenbajocomoladirecciondelapalabradentrodecadamodulo. Localizacionescontiguasenlamemoriaestanasignadasportantoaunmismomodulodememoria. Enunciclodememoria,soloseaccedeaunapalabradel modulo. Por lo tanto, el entrelazado de orden alto no permite el acceso en bloque aposiciones contiguas de memoria. Este esquema viene muy bien para tolerancia a fallos.Porotrolado, el entrelazadodeordenbajosoportael accesodebloquedeformasegmentada. Anoserquesedigaotracosa,sesupondraparaelrestodelcaptuloquelamemoriaesdeltipoentrelazadodeordenbajo.DecodificadorDireccionesBDPPalabra MduloM1Mm-1M0de palabradireccinBuffer dem(w-1)+1 m(w-1)0mmw-1m+11 m-12m-1BDM BDMBDM BDM BDMBDMBus de datosdatos de memoriaBuffer de lasdirecciones demduloBuffer de de memoriaDireccinba(a) Memoria dem vas entrelazada de orden bajo (esquema C de accesoa memoria).M1Mm-1M0BDPDecodificadorDireccionesde palabradireccinBuffer de0mw-1BDM BDMBDM BDM BDMBDMBus de datosdatos de memoriaBuffer de lasdirecciones demduloBuffer de Mdulo Palabrabade memoriaDireccin 1w-1ww+12w-1(m-1)w(m-1)w+1(b) Memoria de m vas entrelazada de orden alto.Figura1.7: Dosorganizacionesdememoriaentrelazadaconm = 2amodulosyw = 2apalabraspormodulo.EjemplodememoriamodularenunprocesadorvectorialSupongamos que queremos captar un vector de 64 elementos que empieza en la direccion136,y queunacceso a memoria supone6 ciclosde reloj. Cuantos bancosdememoriadebemos tener paraacceder acadaelementoenun unicociclodereloj? Conquedireccionseaccedeaestosbancos?CuandollegaranloselementosalaCPU?.IngenieraInformatica UniversidaddeValencia1.2Memoriaentrelazadaointercalada 13Respuesta Con seis ciclos por acceso, necesitamos al menos seis bancos de memoria,perocomoqueremos queel n umerodebancos seapotenciadedos, elegiremos ochobancos. La gura 1.1 muestra las direcciones a las que se accede en cada banco en cadaperiododetiempo. Beginning Bankat clock no. 0 1 2 3 4 5 6 7 0 192 136 144 152 160 168 176 1846 256 200 208 216 224 232 240 24814 320 264 272 280 288 296 304 31222 384 328 336 344 352 360 368 376 Tabla 1.1: Direcciones de memoria (en bytes) y momento en el cual comienza el accesoacadabanco.La gura 1.8 muestra la temporizacion de los primeros accesos a un sistema de ochobancosconunalatenciadeaccesodeseisciclosdereloj. Existendosobservacionesimportantesconrespectoalatabla1.1ylagura1.8: Laprimeraesqueladireccionexacta proporcionada por un banco esta muy determinada por los bits de menor orden;sinembargo, el accesoinicial aunbancoestasiempreentrelasochoprimerasdoblespalabrasdeladireccioninicial. Lasegundaesqueunavezsehaproducidolalatenciainicial(seisciclosenestecaso),elpatronesaccederaunbancocadanciclos,dondeneseln umerototaldebancos(n = 8enestecaso).ActionMemory#accessNext access#+ deliver last#8 wordsNext access#+ deliver last#8 wordsDeliver #last#8 wordsTime0 6 14 22 62 70Figura1.8: Tiempodeaccesoparalasprimeras64palabrasdedobleprecisionenunalectura.1.2.1 Accesoconcurrenteamemoria(accesoC)Losaccesosalosmmodulosdeunamemoriasepuedensolapardeformasegmentada.Paraesto, el ciclodememoria(llamadociclomayordememoriasesubdivideenmciclosmenores.Seael tiempoparalaejecuciondel ciclomayor y parael menor. Estos dostiemposserelacionandelasiguientemanera:=m(1.2)donde m es el grado de entrelazado. La temporizacion del acceso segmentado de 8 pala-bras contiguas en memoria se muestra en la gura 1.9. A este tipo de acceso concurrenteapalabrascontiguasselellamaaccesoCamemoria. El ciclomayoresel tiempototal necesarioparacompletarel accesoaunapalabrasimpledeunmodulo. El cicloIngenieraInformatica UniversidaddeValencia14 Procesadoresvectorialesmenoreseltiemponecesarioparaproducirunapalabraasumiendolasuperposiciondeaccesosdemodulosdememoriasucesivosseparadosunciclomenor.Hayquehacernotarqueel accesosegmentadoal bloquede8palabrascontiguasesta emparedado entre otros accesos de bloque segmentados antes y despues del bloqueactual. Inclusoapesardequeel tiempototal deaccesodel bloquees2, el tiempoefectivodeaccesodecadapalabraes solamente al ser lamemoriacontiguamenteaccedidadeformasegmentada.W0W1W2W3W4W5W6W7=/mTiempoGrado de entrelazadomCiclo mayorCiclo menor 2Figura1.9: Accesosegmentadoa8palabrascontiguasenunamemoriadeaccesoC.1.2.2 Accesosimultaneoamemoria(accesoS)Lamemoriaentrelazadadeordenbajopuedeser dispuestademaneraquepermitaaccesossimultaneos,oaccesosS,talycomosemuestraenlagura1.10.Mdulom-1Mdulo1Mdulo0MultiplexorLatchCiclo de bsqueda Ciclo de accesoEscritura(n-a) bitsde orden altoLecturaa bits de orden bajoAcceso a palabraFigura1.10: OrganizaciondeaccesoSparaunamemoriaentrelazadademvas.Alnaldecadaciclodememoria,m = 2apalabrasconsecutivassoncapturadasenlos buers de datos de forma simult anea. Los a bits de orden bajo se emplean entoncesparamultiplexarlasmpalabrashaciafuera, unaporcadaciclomenor. Si seeligeelciclomenorparaquevalgaun1/mdeladuraciondelciclomayor(Ec.1.2), entoncessenecesitandosciclosdememoriaparaaccederampalabrasconsecutivas.IngenieraInformatica UniversidaddeValencia1.2Memoriaentrelazadaointercalada 15Sinembargo, si lafasedeaccesodel ultimoacceso, sesuperponeconlafasedeb usquedadel accesoactual, entoncessonmpalabraslasquepuedenseraccedidasenun unicociclodememoria.1.2.3 MemoriadeaccesoC/SUnaorganizaciondememoriaquepermitelosaccesosdetipoCytambienlosdetipoSsedenominamemoriadeaccesoC/S. Esteesquemadefuncionamientosemuestraenlagura1.11, dondenbusesdeaccesoseutilizanjuntoammodulosdememoriaentrelazada conectados a cada bus. Losmmodulos en cada bus son entrelazados demvasparapermitiraccesosC.LosnbusesoperanenparaleloparapermitirlosaccesosS. Encadaciclodememoria, al menosm npalabrassoncapturadassi seempleancompletamentelosnbusesconaccesosamemoriasegmentados.M(0,0)M(1,0) M(1,1)M(0,1)M(n-1,0) M(n-1,1)P(0)P(1)MC(0)MC(1)MC(n-1) P(n-1)M(0,m-1)M(n-1,m-1)M(1,m-1)InterconexinBarraCruzadaMemorias ProcesadoresFigura1.11: OrganizaciondeaccesoC/S.LamemoriaC/Sestaespecialmenteindicadaparaserusadaenconguracionesdemultiprocesadoresvectoriales,yaqueproveeaccesosegmentadoenparalelodeuncon-junto vectorial de datos con un alto ancho de banda. Una cache vectorial especialmentedise nadaesnecesariaenel interiordecadamodulodeprocesoparapodergarantizarelmovimientosuaveentrelamemoriayvariosprocesadoresvectoriales.1.2.4 RendimientodelamemoriaentrelazadaytoleranciaafallosCon la memoria pasa algo parecido que con los procesadores: no por ponerm modulosparalelosenel sistemadememoriasepuedeaccedermvecesmasrapido. Existeunmodelomas omenos empricoquedael aumentodel anchodebandapor el hechodeaumentar el n umerodebancos delamemoria. EstemodelofueintroducidoporHellermanydaelanchodebandaBenfunciondeln umerodebancosm:B= m0.56mEsta raz cuadrada da una estimacion pesimista delaumento delasprestacionesdelamemoria. Si porejemploseponen16modulosenlamemoriaentrelazada, soloseobtieneunaumentode4veceselanchodebanda. Esteresultadolejanoaloesperadovienedequeenlamemoriaprincipaldelosmultiprocesadoreslosaccesosentrelazadossemezclanconlosaccesossimplesoconlosaccesosdebloquedelongitudesdispares.IngenieraInformatica UniversidaddeValencia16 ProcesadoresvectorialesParalos procesadores vectoriales estaestimacionnoes realista, yaquelas tran-saccionesconlamemoriasuelensercasi siemprevectorialesy, portanto, puedenserfacilmenteentrelazadas.En 1992 Cragon estimo el tiempo de acceso a una memoria entrelazada vectorial delasiguientemanera: Primerosesuponequelosnelementosdeunvectorseencuen-tranconsecutivosenunamemoriademmodulos. Acontinuaci on, yconayudadelagura1.9, noesdifcil inferirqueel tiempoquetardaenaccederseaunvectordenelementoseslasumadeloquetardael primerelemento(), quetendraquerecorrertodo el cauce, y lo que tardan los (n 1) elementos restantes ((n 1)/m) que estarancompletamenteencauzados. Eltiempoquetardaunelemento(t1)seobtieneentoncesdividiendoloquetardaelvectorcompletoentren:t1= +(n 1)mn=n+(n 1)nm=m

mn+n 1n

=m

1 +m1n

Porlotantoel tiempomediot1requeridoparaaccederaunelementoenlamemoriaharesultadoser:t1=m

1 +m1n

Cuandon (vector muygrande), t1/m= tal ycomose derivoenlaecuacion(1.2). Ademassi m=1, nohaymemoriaentrelazadayt1=. Laecuacionqueseacabadeobteneranunciaquelamemoriaentrelazadaseaprovechadel accesosegmentado de los vectores, por lo tanto, cuanto mayor es el vector mas rendimiento seobtiene.ToleranciaafallosLa division de la memoria en bancos puede tener dos objetivos: por un lado permite unacceso concurrente lo que disminuye el acceso a la memoria (memoria entrelazada), porotro lado se pueden congurar los modulos de manera que el sistema de memoria puedaseguirfuncionandoenel casodequealg unmodulodejedefuncionar. Si losmodulosformanunamemoriaentrelazadael tiempodeaccesoseramenorperoel sistemanoseratoleranteafallos, yaqueal perderunmodulosepierdenpalabrasenposicionessalteadasentodalamemoria, conloqueresultadifcil seguirtrabajando. Si porelcontrario los bancos se han elegido por bloques de memoria (entrelazado de orden alto)en vez de palabras sueltas, en el caso en que falle un bloque lo programas podran seguirtrabajando con los bancos restantes aislandose ese bloque de memoria erroneo del resto.En muchas ocasiones interesa tener ambas caractersticas a un tiempo, es decir, porunladointeresatenermemoriaentrelazadadeordenbajoparaacelerarelaccesoalamemoria,peroporotrointeresatambienunamemoriaentrelazadadeordenaltoparatenerlamemoriadivididaenbloquesypoderseguirtrabajandoencasodefallodeunmoduloobanco. Paraestoscasosenqueserequierealtorendimientoytoleranciaafallos se puede dise nar una memoria mixta que contenga modulos de acceso entrelazado,ybancosparatoleranciaafallos.Lagura1.12muestradosalternativasquecombinanelentrelazadodeordenaltocon el de orden bajo. Ambas alternativas ofrecen una mejora del rendimiento de la me-moria junto con la posibilidad de tolerancia a fallos. En el primer ejemplo (gura 1.12a)IngenieraInformatica UniversidaddeValencia1.2Memoriaentrelazadaointercalada 17semuestraunamemoriadecuatromodulosdeordenbajoydosbancosdememoria.Enelsegundoejemplo(gura1.12b)secuentaconelmismon umerodemodulosperodispuestosdemaneraquehayunentrelazadodedosmodulosycuatrobancosdeme-moria. El primerejemplopresentaunmayorentrelazadoporloquetendraunmayorrendimientoqueel segundo, perotambienpresentamenosbancosporloqueencasodefallosepierdeunamayorcantidaddememoria,apartedequeelda noquesepuedecausaralsistemaesmayor.Figura1.12: Dos organizaciones de memoriaentrelazadausando8modulos: (a) 2bancosy4modulosentrelazados,(b)4bancosy2modulosentrelazados.Si la tolerancia a fallos es fundamental para un sistema, entonces hay que establecerun compromiso entre el grado de entrelazado para aumentar la velocidad y el n umero debancosparaaumentarlatoleranciaafallos. Cadabancodememoriaesindependientedelascondicionesdeotrosbancosyportantoofreceunmejoraislamientoencasodeavera.IngenieraInformatica UniversidaddeValencia18 Procesadoresvectoriales1.3 LongituddelvectoryseparaciondeelementosEstaseccionpretendedarrespuestaadosproblemasquesurgenenlavidareal, unoesquehacercuandolalongituddel vectoresdiferentealalongituddelosregistrosvectoriales(porejemplo64elementos), ylaotraescomoaccederalamemoriasi loselementosdelvectornoestancontiguososeencuentrandispersos.1.3.1 ControldelalongituddelvectorLalongitudnaturaldeunvector vienedeterminadaporeln umerodeelementosenlosregistrosvectoriales. Estalongitud, casi siempre64, nosuelecoincidirmuchasvecesconlalongituddelosvectoresrealesdel programa. Aunmas, enunprogramarealse desconoce inclusolalongitudde ciertovector uoperacioninclusoentiempodecompilacion. Dehecho,unmismotrozodecodigopuederequerirdiferenteslongitudesen funcion de parametros que cambien durante la ejecucion de un programa. El siguienteejemploenFortranmuestrajustoestecaso:do 10 i=1,n10 Y(i)=a*X(i)+Y(i)La solucion de estos problemas es la creacion de un registro de longitud vectorial VLR(Vector-Lengthregister). ElVLRcontrolalalongituddecualquieroperacionvectorialincluyendolasdecargayalmacenamiento. Detodasformas, el vectorenel VLRnopuedesermayor quelalongituddelosregistrosvectoriales. Por lotanto,estoresuelveel problemasiemprequelalongitudreal seamenorquelalongitudvectorial maximaMVL(MaximumVectorLength)denidaporelprocesador.Parael casoenel quelalongituddel vectorreal seamayorqueel MVLseutilizauna tecnica denominada seccionamiento (strip mining). El seccionamiento consiste en lageneracion de codigo de manera que cada operacion vectorial se realiza con un tama noinferior oigual queel del MVL. Estatecnicaessimilar aladedesenrollamientodebucles, es decir, se crea un bucle que consiste en varias iteraciones con un tama no comoel del MVL, y luego otra iteracion mas que sera siempre menor que el MVL. La versionseccionadadelbucleDAXPYescritaenFortransedaacontinuacion:low=1VL=(n mod MVL) /* Para encontrar el pedazo aparte */do 1 j=0,(n/MVL) /* Bucle externo */do 10 i=low,low+VL-1 /* Ejecuta VL veces */Y(i)=a*X(i)+Y(i) /* Operacion principal */10 continuelow=low+VL /* Comienzo del vector siguiente */VL=MVL /* Pone la longitud al maximo */1 continueEn este bucle primero se calcula la parte que sobra del vector (que se calcula con elmodulo de n y MVL) y luego ejecuta ya las veces que sea necesario con una longitud devectormaxima. Osea, elprimervectortieneunalongitudde(n mod MVL)yelrestotieneunalongituddeMVLtal ycomosemuestraenlagura1.13. Normalmenteloscompiladoreshacenestascosasdeformaautomatica.Junto con la sobrecarga por el tiempo de arranque, hay que considerar la sobrecargaporlaintroducciondelbucledelseccionamiento. Estasobrecargaporseccionamiento,IngenieraInformatica UniversidaddeValencia1.3Longituddelvectoryseparaciondeelementos 191..m (m+1)..m+MVL(m+MVL+1).. m+2 *MVL(m+2 *MVL+1)..m+3 *MVL. . . (n-MVL+1).. nRange of iValue of j n/MVL 12 3 . . . 0. . .. . .Figura1.13: Unvectordelongitudarbitrariaprocesadomedianteseccionamiento. To-doslosbloquesmenosel primerosondelongitudMVL. Enestagura, lavariablemseusaenlugardelaexpresion(n modMV L).queaparecedelanecesidaddereiniciarlasecuenciavectorial yasignarel VLR, efec-tivamentesesumaal tiempodearranquedel vector, asumiendoqueel convoynosesolapaconotrasinstrucciones. Silasobrecargadeunconvoyesde10ciclos,entonceslasobrecargaefectivaporcada64elementosseincrementaen10,oloqueeslomismo0.15ciclosporelementodelvectorreal.1.3.2 CalculodeltiempodeejecucionvectorialCon todo lo visto hasta ahora se puede dar un modelo sencillo para el calculo del tiempodeejecuciondelasinstruccionesenunprocesadorvectorial. Repasemosestoscostes:1. Por unladotenemos el n umerode convoyes enel bucle que nos determinaeln umerodecampanadas. UsaremoslanotacionTcampanadaparaindicarel tiempoencampanadas.2. Lasobrecargaparacadasecuenciaseccionadadeconvoyes. Estasobrecargacon-sisteenel costedeejecutarel codigoescalarparaseccionarcadabloque, Tbucle,maselcostedearranqueparacadaconvoy,Tarranque.3. Tambienpodrahaberunasobrecargajaasociadaconlapreparaciondelase-cuenciavectorial laprimeravez, peroenprocesadoresvectorialesmodernosestasobrecargasehaconvertidoenalgomuypeque noporloquenoseconsideraraenlaexpresiondecargatotal. EnalgunoslibrosdondetodavaapareceestetiemposelellamaTbase.Con todo esto se puede dar una expresion para calcular el tiempo de ejecucion paraunasecuenciavectorialdeoperacionesdelongitudn,quellamaremosTn:Tn=

nMVL

(Tbucle + Tarranque) + n Tcampanada(1.3)Los valores para Tarranque, Tbucley Tcampanadadependen del procesador y del compiladorque se utilice. Un valor tpico para Tbucle es 15 (Cray 1). Podra parecer que este tiempodeberasermayor, perolociertoesquemuchasdelasoperacionesdeestasobrecargasesolapanconlasinstruccionesvectoriales.Paraaclarar todoestoveamos unejemplo. Setratadeaveriguar el tiempoquetarda un procesador vectorial en realizar la operacion A = Bs, donde s es un escalar,AyBsonvectores conunalongitudde200elementos. Loquesehaceprimeroesver el codigo en ensamblador que realiza esta operacion. Para ello supondremos que lasdirecciones de A y B son inicialmente Ra y Rb, y que s se encuentra en Fs. SupondremosqueR0siemprecontiene0(DLX).Como200mod64=8,laprimeraiteraciondelbucleseccionadoserealizarasobreunvectordelongitud8, yel restoconunalongituddeIngenieraInformatica UniversidaddeValencia20 Procesadoresvectoriales64 elementos. La direccion delbyte decomienzo delsegmento siguiente decada vectoresochoveceslalongituddel vector. Comolalongituddel vectoresuochoo64, seincrementaelregistrodedireccionpor8 8 = 64despuesdelprimersegmento,ypor864 = 512 para el resto. El n umero total de bytes en el vector es 8200 = 1600, y secomprueba que ha terminado comparando la direccion del segmento vectorial siguienteconladireccioninicialmas1600. Acontinuaci onsedaelcodigo:ADDI R2,R0,#1600 ; Bytes en el vectorADD R2,R2,Ra ; Final del vector AADDI R1,R0,#8 ; Longitud del 1er segmentoMOVI2S VLR,R1 ; Carga longitud del vector en VLRADDI R1,R0,#64 ; Longitud del 1er segmentoADDI R3,R0,#64 ; Longitud del resto de segmentosLOOP: LV V1,Rb ; Carga BMULTVS V2,V1,Fs ; Vector * escalarSV Ra,V2 ; Guarda AADD Ra,Ra,R1 ; Direccion del siguiente segmento de AADD Rb,Rb,R1 ; Direccion del siguiente segmento de BADDI R1,R0,#512 ; Byte offset del siguiente segmentoMOVI2S VLR,R3 ; Longitud 64 elementosSUB R4,R2,Ra ; Final de A?BNZ R4,LOOP ; sino, repite.Lastresinstruccionesvectorialesdel bucledependenunasdeotrasydebenirentresconvoyesseparados,porlotantoTcampanada= 3. Eltiempodelbucleyahabamosdichoquerondalos15ciclos. El valordel tiempodearranqueseralasumadetrescosas: Eltiempodearranquedelainstrucciondecarga,quesupondremos12ciclos. Eltiempodearranquedelamultiplicacion,7ciclos. Eltiempodearranquedelalmacenamiento,otros12ciclos.PorlotantoobtenemosunvalorTarranque= 12 + 7 + 12 = 31ciclosdereloj. Contodoesto, y aplicando la ecuacion (1.3), se obtiene un tiempo total de proceso de T200= 784ciclos dereloj. Si dividimos por el n umerodeelementos obtendremos el tiempodeejecucionporelemento,esdecir,784/200 = 3.9ciclosderelojporelementodelvector.ComparadoconTcampanada,queeseltiemposinconsiderarlassobrecargas,vemosqueefectivamentelasobrecargapuedellegaratenerunvalorsignicativamentealto.Resumiendolasoperacionesrealizadassetieneel siguienteprocesohastallegaralresultadonal:Tn=

nMV L

(Tloop + Tarranque) + n TcampanadaT200= 4 (15 + Tstart) + 200 3T200= 60 + (4 Tstart) + 600 = 660 + (4 Tstart)Tstart=12+7+12=31T200= 660 + 4 31 = 784Lagura1.14muestralasobrecargayel tiempototal deejecucionporelementodel ejemploqueestamosconsiderando. El modeloquesoloconsideralascampanadastendrauncoste de 3ciclos, mientras que el modelomas precisoque incorporalasobrecargaa nade0.9aestevalor.IngenieraInformatica UniversidaddeValencia1.3Longituddelvectoryseparaciondeelementos 2120 40 60 80 100 120 140 160 180 200012345678Elementos en el vectorCiclos de reloj por elementoTiempo total por elementoSobrecarga total por elementoFigura1.14: Tiempodeejecucionporelementoenfunciondelalongituddelvector.1.3.3 SeparaciondeelementosenelvectorEl otro problema que se presenta en la programacion real es que la posicion en memoriade elementos adyacentes no siempre son contiguas. Por ejemplo, consideremos el codigotpicoparamultiplicaciondematrices:do 10 i=1,100do 10 j=1,100A(i,j)=0.0do 10 k=1,10010 A(i,j)=A(i,j)+B(i,k)*C(k,j)Enlasentenciaconetiqueta10, sepuedevectorizarlamultiplicaci ondecadaladeBconcadacolumnadeC, yseccionar el bucleinterior usandokcomovariablendice. Cuandounamatrizseubicaenmemoria, selinearizaorganizandolaenlasoencolumnas. El almacenamientopor las, utilizadopor muchos lenguajes menosel Fortran, consisteenasignarposicionesconsecutivasaelementosconsecutivosenlala, haciendoadyacentesloselementosB(i, j)yB(i, j+ 1). El almacenamientoporcolumnas,utilizadoenFortran,haceadyacentesloselementosB(i, j)yB(i + 1, j).SuponiendoqueutilizamoselalmacenamientoporcolumnasdeFortrannosencon-tramosconquelosaccesosalamatrizBnosonadyacentesenmemoriasinoqueseencuentranseparadosporunalacompletadeelementos. Enestecaso, loselemen-tosdeBquesonaccedidosenel lazointerior, estanseparadosporel tama nodelamultiplicadopor8(n umerodebytesporelemento)loquehaceuntotalde800bytes.Aestadistanciaenmemoriaentreelementosconsecutivosselellamaseparacion(stride). Conel ejemploqueestamosviendopodemosdecirqueloselementosdeCIngenieraInformatica UniversidaddeValencia22 Procesadoresvectorialestienenunaseparacionde1,(1palabradoble,8bytes),mientrasquelamatrizBtieneunaseparacionde100(100palabrasdobles,800bytes).Unavezcargadosestoselementosadyacentesenelregistrovectorial,loselementossonlogicamentecontiguos. Portodoesto,yparaaumentarelrendimientodelacargay almacenamiento de vectores con elementos separados, resulta interesante disponer deinstrucciones que tengan en cuenta la separacion entre elementos contiguos de un vector.Laformadeintroducirestoenel lenguajeensambladoresmediantelaincorporaciondedosinstruccionesnuevas, unadecargayotradealmacenamiento, quetenganencuentanosololadirecciondecomienzodelvector,comohastaahora,sinotambienelpaso o la separacion entre elementos. En DLXV, por ejemplo,existen las instruccionesLVWSparacargaconseparacion, ySVWSparaalmacenamientoconseparacion. As, lainstruccionLVWS V1,(R1,R2)cargaenV1loquehayapartirdeR1conunpasooseparacion de elementos de R2, y SVWS (R1,R2),V1 guarda los elementos del vector V1enlaposicionapuntadaporR1conpasoR2.Naturalmente,elqueloselementosnoestenseparadosdeformaunitariacreacom-plicaciones en la unidad de memoria. Se haba comprobado que una operacion memoria-registrovectorial podaprocederavelocidadcompletasi el n umerodebancosenme-moriaeraal menostangrandeel tiempodeaccesoamemoriaenciclosdereloj. Sinembargo, paradeterminadasseparacionesentreelementos, puedeocurrirqueaccesosconsecutivosserealicenalmismobanco,llegandoinclusoadarseelcasodequetodosloselementosdelvectorseencuentrenenelmismobanco. Aestasituacionselellamaconictodel bancodememoriayhacequecadacarganecesiteunmayortiempodeaccesoamemoria. Elconictodelbancodememoriasepresentacuandoselepidealmismo banco que realice un acceso cuando el anterior a un no se haba completado. Porconsiguiente, la condicion para que se produzca un conicto del banco de memoria sera:Mn. com unmult.(separaci on,n um. modulos)Separacion< LatenciaaccesoamemoriaLosconictosenlosmodulosnosepresentansilaseparacionentreloselementosyel n umero de bancos son relativamente primos entre s, y ademas hay sucientes bancosparaevitar conictos enel casodeseparacionunitaria. El aumentoden umerodebancos de memoria a un n umero mayor del mnimo, para prevenir detenciones con unaseparacion 1,disminuir a la frecuencia dedetencionespara lasdemas separaciones. Porejemplo, con 64 bancos, una separacion de 32 parara cada dos accesos en lugar de cadaacceso. Si originalmentetuviesemosunaseparacionde8con16bancos, pararacadados accesos; mientras que con 64 bancos, una separacion de 8 parara cada 8 accesos. Sitenemosaccesoavariosvectoressimultaneamente,tambiensenecesitaranmasbancosparaprevenirconictos. Lamayoradesupercomputadoresvectorialesactualestienencomomnimo64bancos,yalgunosllegana512.Veamos un ejemplo. Supongamos que tenemos 16 bancos de memoria con un tiempodeaccesode12ciclosdereloj. Calculareltiempoquesetardaenleerunvectorde64elementos separadosunitariamente. Repetir el calculo suponiendo que la separacion esde 32. Como el n umero de bancos es mayor que la latencia, la velocidad de acceso seradeelementoporciclo, portanto64ciclos, peroaestohayquea nadirleel tiempodearranque que supondremos 12, por tanto la lectura se realizara en 12+64 = 76 ciclos dereloj. La peor separacion es aquella en la que la separacion sea un m ultiplo del n umerodebancos,comoenestecasoquetenemosunaseparacionde32y16bancos. Enestecaso siempre se accede al mismo banco con lo que cada acceso colisiona con el anterior,IngenieraInformatica UniversidaddeValencia1.4Mejoradelrendimientodelosprocesadoresvectoriales 23estonosllevaauntiempodeaccesode12ciclosporelementoyuntiempototal de12 64 = 768ciclosdereloj.1.4 Mejora del rendimiento de los procesadores vec-toriales1.4.1 EncadenamientodeoperacionesvectorialesHastaahora, se habanconsideradoseparadas, ypor tantoenconvoyes diferentes,instruccionessobrevectoresqueutilizaranelmismoolosmismosregistrosvectoriales.Esteeselcaso,porejemplodedosinstruccionescomoMULTV V1,V2,V3ADDV V4,V1,V5Si setrataenestecasoal vectorV1nocomounaentidad, sinocomounaseriedeelementos, resulta sencillo entender que la operacion de suma pueda iniciarse unos ciclosdespues de la de multiplicacion, y no despues de que termine, ya que los elementos que lasuma puede ir necesitando ya los ha generado la multiplicaci on. A esta idea, que permitesolapar dos instrucciones,se le llama encadenamiento. El encadenamiento permite queunaoperacionvectorial comience tanprontocomolos elementos individuales de suoperando vectorial fuente esten disponibles, es decir, los resultados de la primera unidadfuncional de la cadena se adelantan a la segunda unidad funcional. Naturalmente debenserunidadesfuncionalesdiferentes,delocontrariosurgeunconictotemporal.Silasunidadesestancompletamentesegmentadas,bastaretrasarelcomienzodelasiguienteinstruccionduranteel tiempodearranquedelaprimeraunidad. El tiempototaldeejecucionparalasecuenciaanteriorsera:Longituddelvector + Tiempodearranquesuma + TiempodearranquemultiplicacionLagura1.15muestralostiemposdeunaversiondeejecucionnoencadenadaydeotraencadenadadel pardeinstruccionesanteriorsuponiendounalongitudde64elementos. El tiempototal delaejecucionencadenadaesde77ciclosderelojqueessensiblemente inferior a los 145 ciclos de la ejecucion sin encadenar. Con 128 operacionesenpuntootanterealizadas enesetiempo, seobtiene1.7FLOPpor ciclodereloj,mientras que con la versi on no encadenada la tasa sera de 0.9 FLOP por ciclo de reloj.1.4.2 SentenciascondicionalesSepuedecomprobarmedianteprogramasdetest, quelosnivelesdevectorizacionenmuchasaplicacionesnosonmuyaltos[HP96]. DebidoalaleydeAmdahlelaumentodevelocidadenestos programas estamuylimitado. Dos razones por las quenoseobtieneunaltogradodevectorizacionsonlapresenciadecondicionales (sentenciasif)dentrodelosbuclesyel usodematricesdispersas. Losprogramasquecontienensentencias if en los bucles no se pueden ejecutar en modo vectorial utilizando las tecnicasexpuestas en este captulo porque las sentencias condicionales introducen control de ujoenelbucle. Deigualforma, lasmatricesdispersasnosepuedentratarecientementeIngenieraInformatica UniversidaddeValencia24 Procesadoresvectoriales64No encadenadaEncadenada64Total=77MULTVMULTVADDV664 776ADDV64Total=141Figura1.15: Temporizacionparalaejecucionnoencadenadayencadenada.utilizando algunas de las capacidades que se han mostrado; esto es por ejemplo un factorimportanteenlafaltadevectorizaci ondeSpice. Seexplicanacontinuacionalgunastecnicasparapoderejecutardeformavectorialalgunasdeestasestructuras.Dadoelsiguientebucle:do 100 i=1,64if (A(i) .ne. 0) thenA(i)=A(i)-B(i)endif100 continueEstebuclenopuedevectorizarseacausadelaejecucioncondicional del cuerpo.Sinembargo, si el bucleanteriorsepudieraejecutarenlasiteracionesparalascualesA(i) = 0 entonces se podra vectorizar la resta. Para solucionarlo se emplea una mascarasobreelvector.ElcontroldemascaravectorialesunvectorbooleanodelongitudMVL.Cuandosecargael registrodemascaravectorial conel resultadodeuntestdel vector, cualquierinstruccionvectorial quesevayaaejecutar solamenteoperasobrelos elementos delvectorcuyasentradascorrespondientesenelregistrodemascaravectorialsean1. Lasentradas del registro vectorial destino que corresponden a un 0 en el registro de mascaranosemodicanporlaoperaciondelvector. Paraquenoact ue,elregistrodemascaravectorial se inicializatodoa1, haciendoque las instrucciones posteriores al vectoroperen con todos los elementos del vector. Con esto podemos reescribir el codigo anteriorparaqueseavectorizable:LV V1,Ra ; Carga vector A en V1LV V2,Rb ; Carga vector B en V2LD F0,#0 ; Carga F0 con 0 en punto flotanteSNESV F0,V1 ; Inicializa VM a 1 si V1(i)!=0SUBV V1,V1,V2 ; Resta bajo el control de la mascaraCVM ; Pone la mascara todo a unosSV Ra,V1 ; guarda el resultado en A.El usodel vector demascaratienealgunadesventaja. Primero, laoperacionserealizaparatodosloselementosdelvector,porloquedalomismoquelacondicionsecumplaono,siempreconsumetiempodeejecucion. Detodasformas,inclusoconunamascara repleta de ceros, el tiempo de ejecucion del codigo en forma vectorial suele sermenor que la version escalar. Segundo, en algunos procesadores lo que hace la mascaraesdeshabilitarel almacenamientoenel registrodel resultadodelaoperacion, perolaoperacionsehaceencualquier caso. Estotieneel problemadequesi por ejemploIngenieraInformatica UniversidaddeValencia1.4Mejoradelrendimientodelosprocesadoresvectoriales 25estamos dividiendo, y no queremos dividir por cero (para evitar la excepcion) lo normales comprobar los elementos queseanceroynodividir, peroenunprocesador cuyamascarasolodeshabiliteelalmacenamientoynolaoperacion,realizaraladivisionporcerogenerandolaexcepcionquesepretendaevitar.1.4.3 MatricesdispersasLas matrices dispersas son matrices que tienen una gran cantidad de elementos, siendolamayoradeelloscero. Estetipodematrices, quehabitualmenteocuparanmuchamemoriadeformainnecesaria, seencuentranalmacenadasdeformacompactaysonaccedidasindirectamente. Paraunarepresentaciontpicadeunamatrizdispersanospodemosencontrarconcodigocomoelsiguiente:do 100 i=1,n100 A(K(i))=A(K(i))+C(M(i))Este codigo realiza la suma de los vectores dispersosA yC, usando como ndices losvectoresKyMquedesignanloselementosdeAyBquenosoncero(ambasmatricesdeben tener el mismo n umero de elementos no nulos). Otra forma com un de representarlas matrices dispersas utiliza un vector de bits como mascara para indicar que elementosexistenyotrovectorparaalmacenarsusvalores. Amenudoambasrepresentacionescoexisten en el mismo programa. Este tipo de matrices se encuentran en muchos codigos,y hay muchas formas de tratar con ellas dependiendo de la estructura de datos utilizadaenelprograma.Unprimer mecanismoconsiste enlas operaciones de dispersionyagrupamientoutilizandovectores ndices. El objetivoesmoversedeunarepresentaciondensaaladispersanormal yviceversa. Laoperaciondeagrupamientocogeel vectorndiceybuscaenmemoriael vector cuyos elementos seencuentranenlas direcciones dadasporlasumadeunadireccionbaseylosdesplazamientosdadosporel vector ndice.El resultadoes unvector nodisperso(denso) enunregistrovectorial. Unavez sehanrealizadolasoperacionessobreestevectordenso, sepuedenalmacenardenuevoenmemoriadeformaexpandidamediantelaoperaciondedispersionqueutilizaraelmismovector dendices. El soporte hardware paraestas operaciones se denominadispersar-agrupar(scatter-gather). Enel ensamblador vienendos instrucciones pararealizar este tipo de tareas. En el caso del DLXV se tiene LVI (cargar vector indexado),SVI(almacenarvectorindexado), yCVI(crearvector ndice, porejemploCVI V1,R1introduce en V1 los valores 0,R1,2*R1,3*R1,...,63*R1). Por ejemplo, suponer que Ra, Rc,RkyRmcontienenlasdireccionesdecomienzodelosvectoresdelasecuenciaanterior,entonceselbucleinternodelasecuenciasepodracodicarcomo:LV Vk,Rk ; Carga KLVI Va,(Ra+Vk) ; Carga A(K(i))LV Vm,Rm ; Carga MLVI Vc,(Rc+Vm) ; Carga C(M(i))ADDV Va,Va,Vc ; Los sumaSVI (Ra+Vk),Va ; Almacena A(K(i))Deestamaneraquedavectorizadalapartedecalculoconmatricesdispersas. ElcodigoenFortrandadoconanterioridadnuncasevectorizaradeformaautomaticapuestoqueel compiladornosabrasi existedependenciadedatos, yaquenosabeaprioriloquecontieneelvectorK.IngenieraInformatica UniversidaddeValencia26 ProcesadoresvectorialesAlgoparecidosepuederealizar medianteel usodelamascaraquesevioenlassentenciascondicionales. El registrodemascaraseusaenestecasoparaindicarloselementosnonulosyaspoderformarelvectordensoapartirdeunvectordisperso.Lacapacidaddedispersar/agrupar(scatter-gather)estaincluidaenmuchosdelossupercomputadoresrecientes. Estasoperacionesraravezalcanzanlavelocidaddeunelementoporciclo,perosonmuchomasrapidasquelaalternativadeutilizarunbucleescalar. Si lapropiedaddedispersiondeunmatrizcambia, esnecesariocalcularunnuevo vector ndice. Muchos procesadores proporcionan soporte para un calculo rapidodedichovector. LainstruccionCVI(CreateVector Index) del DLXcreaunvectorndicedadounvalordesalto(m), cuyosvaloresson0, m, 2 m, ..., 63 m. Algunosprocesadores proporcionanunainstruccionparacrear unvectorndice comprimidocuyas entradas se corresponden con las posiciones a 1 en el registro mascara. En DLX,denimoslainstruccionCVI paraquecreeunvector ndiceusandoelvectormascara.Cuandoel vector mascaratiene todas sus entradas auno, se creaunvectorndiceestandar.Las cargas y almacenamientos indexados y la instruccion CVI proporcionanunmetodoalternativoparasoportar laejecucioncondicional. Acontinuacionsemues-tralasecuenciadeinstruccionesqueimplementael buclequevimosal estudiaresteproblemayquecorrespondeconelbuclemostradoenlapagina24:LV V1,Ra ; Carga vector A en V1LD F0,#0 ; Carga F0 con cero en punto flotanteSNESV F0,V1 ; Pone VM(i) a 1 si V1(i)F0CVI V2,#8 ; Genera ndices en V2POP R1,VM ; Calcula el numero de unos en VMMOVI2S VLR,R1 ; Carga registro de longitud vectorialCVM ; Pone a 1 los elementos de la mascaraLVI V3,(Ra+V2) ; Carga los elementos de A distintos de ceroLVI V4,(Rb+V2) ; Carga los elementos correspondientes de BSUBV V3,V3,V4 ; Hace la restaSVI (Ra+V2),V3 ; Almacena AEl quelaimplementaci onutilizandodispersar/agrupar(scatter-gather)seamejorquelaversionutilizandolaejecucioncondicional,dependedelafrecuenciaconlaquesecumplalacondicionyel costedelas operaciones. Ignorandoel encadenamiento,el tiempodeejecucionparalaprimeraversi ones5n + c1. El tiempodeejecuciondelasegundaversi on, utilizandocargasyalmacenamientoindexadosconuntiempodeejecuciondeunelementoporciclo, es4n + 4 f n + c2, dondefeslafracciondeelementosparalacual lacondicionescierta(esdecir, A =0. Si suponemosquelosvaloresc1yc2soncomparables,yquesonmuchomaspeque nosquen,entoncesparaquelasegundatecnicaseamejorquelaprimerasetendraquecumplir5n 4n + 4 f nloqueocurrecuando14 f.Esdecir, el segundometodoesmasrapidoqueel primerosi menosdelacuartapartedeloselementossonnonulos. Enmuchoscasoslafrecuenciadeejecucionesmuchomenor. Sielmismovectorde ndicespuedeserusadovariasveces,osicreceeln umerodesentenciasvectorialesconlasentenciaif, laventajadelaaproximaci ondedispersar/agruparaumentaraclaramente.IngenieraInformatica UniversidaddeValencia1.5Elrendimientodelosprocesadoresvectoriales 271.5 Elrendimientodelosprocesadoresvectoriales1.5.1 RendimientorelativoentrevectorialyescalarApartirdelaleydeAmdahlesrelativamentesencillocalcularelrendimientorelativoentre la ejecucion vectorial y la escalar, es decir, lo que se gana al ejecutar un programadeformavectorial frentealaescalartradicional. Supongamosquereslarelaciondevelocidad entre escalar y vectorial, y que fes la relacion de vectorizacion. Con esto, sepuededenirelsiguienterendimientorelativo:P=1(1 f) + f/r=r(1 f)r + f(1.4)Esterendimientorelativomideelaumentodelavelocidaddeejecuciondelprocesadorvectorial sobre el escalar. La relacion hardware de velocidad r es decision del dise nador.Elfactordevectorizacionfreejaelporcentajedecodigoenunprogramadeusuarioquesevectoriza. Elrendimientorelativoesbastantesensiblealvalordef. Estevalorsepuedeincrementarutilizandounbuencompiladorvectorial oatravesdetransfor-macionesdelprograma.Cuantomas grande es r tantomayor es este rendimientorelativo, perosi f espeque no, no importa lo grande que sea r, ya que el rendimiento relativo estara cercanoalaunidad. FabricantescomoIBMtienenunarquerondaentre3y5, yaquesupolticaesladetenerciertobalanceentrelasaplicacionescientcasylasdenegocios.Sinembargo,empresascomoCrayyalgunasjaponesaseligenvaloresmuchomasaltosparar, yaquelaprincipal utilizaciondeestasmaquinasesel calculocientco. Enestoscasoslarrondaentrelos10y25. Lagura1.16muestraelrendimientorelativoparaunamaquinavectorialenfuncionderyparavariosvaloresdef.1 2 3 4 5 6 7 8 9 1011.522.533.544.555.5relacion de velocidad escalar/vectorial (r)Rendimiento relativo (P)30%50%70%80%90%Figura1.16: Rendimientorelativoescalar/vectorial.IngenieraInformatica UniversidaddeValencia28 Procesadoresvectoriales1.5.2 MedidasdelrendimientovectorialDado que la longitud del vector es tan importante en el establecimiento del rendimientode un procesador, veremos las medidas relacionadas con la longitud ademas del tiempodeejecucionylos MFLOPSobtenidos. Estas medidas relacionadas conlalongitudtiendenavariardeformamuyimportantedependiendodel procesadoryquesonim-portantes de comparar. (Recordar, sin embargo, que el tiempoes siempre la medida deinteres cuando se compara la velocidad relativa de dos procesadores.) Las tres medidasmasimportantesrelacionadasconlalongitudson Rn. Eslavelocidaddeejecucion,dadaenMFLOPS,paraunvectordelongitudn. R. Es la velocidad de ejecucion, dada en MFLOPS, para un vector de longitud in-nita. Aunque esta medida puede ser de utilidad para medir el rendimiento maximo,los problemas reales no manejan vectores ilimitados, y la sobrecarga existente en losproblemasrealespuedesermayor. N1/2. LalongituddevectornecesariaparaalcanzarlamitaddeR. Estaesunabuenamedidadelimpactodelasobrecarga. Nv. Lalongituddevectorapartirdelacual el modovectorial esmasrapidoqueelmodoescalar. Estamedidatieneencuentalasobrecargaylavelocidadrelativadelmodoescalarrespectoalvectorial.Veamoscomosepuedendeterminarestasmedidasenel problemaDAXPYejecutadoenel DLXV. Cuandoexisteel encadenamientodeinstrucciones, el bucleinteriordelcodigoDAXPYenconvoyseselquesemuestraenlagura1.17(suponiendoqueRxyRycontienenladirecciondeinicio). LV V1,Rx MULTSV V2,F0,V1 Convoy 1: chained load and multiplyLV V3,Ry ADDV V4,V2,V3 Convoy 2: second load and ADD, chainedSV Ry,V4 Convoy 3: store the result Figura1.17: Formaci ondeconvoysenelbucleinteriordelcodigoDAXPY.Eltiempodeejecuciondeunbuclevectorialconnelementos,Tn,es:Tn=

nMV L

(Tbucle + Tarranque) + n TcampanadaEl encadenamientopermitequeel bucleseejecuteentrescampanadasynome-nos, dadoqueexisteuncaucedememoria; as Tcampanada=3. Si Tcampanadafueraunaindicacioncompleta del rendimiento, el bucle podraejecutarse a una tasade2/3 tasa del reloj MFLOPS(yaquehay2FLOPs por iteracion). As, utilizando unicamenteTcampanada,unDLXVa200MHzejecutaraestebuclea133MFLOPSsu-poniendo la no existencia de seccionamiento (strip-mining) y el coste de inicio. Existenvarias maneras de aumentar el rendimiento: a nadir unidades de carga-almacenamientoadicionales, permitir el solapamiento de convoys para reducir el impacto de los costes deinicio, y decrementar el n umero de cargas necesarias mediante la utilizacion de registrosvectoriales.IngenieraInformatica UniversidaddeValencia1.5Elrendimientodelosprocesadoresvectoriales 29RendimientomaximodelDLXVenelDAXPYEnprimerlugardebemosdeterminarelsignicadorealdelrendimientomaximo, R.Por ahora, continuaremos suponiendo que un convoy no puede comenzar hasta que todaslas instrucciones del convoy anterior hayan nalizado; posteriormente eliminaremos estarestriccion. Teniendo en cuenta esta restriccion, la sobrecarga de inicio para la secuenciavectorialessimplementelasumadelostiemposdeiniciodelasinstrucciones:Tarranque= 12 + 7 + 12 + 6 + 12 = 49UsandoMV L=64, Tloop=15, Tstart=49, yTchime=3enlaecuaciondelrendimiento, ysuponiendoquennoesunm ultiploexactode64, el tiempoparaunaoperaciondenelementosesTn=

n64

(15 + 49) + 3n = (n + 64) + 3n = 4n + 64La velocidad sostenida esta por encima de 4 ciclos de reloj por iteracion, mas que lavelocidadteoricade3campanadas, queignoraloscostesadicionales. Lamayorpartede esta diferencia es el coste de inicio para cada bloque de 64 elementos (49 ciclos frentea15delasobrecargadelbucle).PodemoscalcularRparaunafrecuenciaderelojde200MHzcomoR= limn

Operaciones por iteraci on frecuencia de relojCiclos de reloj por iteraci on

Elnumeradoresindependienteden,porloqueR=Operaciones por iteraci on frecuencia de relojlimn(Ciclos de reloj por iteraci on)limn(Ciclos de reloj por iteraci on) = limn

Tnn

= limn

4n + 64n

= 4R=2 200 MHz4= 100 MFLOPSEl rendimiento sin el coste de inicio, que es el rendimiento maximo dada la estructuradelaunidadfuncionalvectorial,es1.33vecessuperior. Enrealidad,ladistanciaentreelrendimientodepicoyelsostenidopuedeserinclusomayor.RendimientosostenidodelDLXVenelBenchmarkLinpackEl benchmark Linpack es una eliminacion de Gauss sobre una matriz de 100100. As,lalongituddeloselementosvandesde99hasta1. Unvectordelongitudkseusakveces. As,lalongitudmediadelvectorvienedadapor

99i=1 i2

99i=1 i= 66.3IngenieraInformatica UniversidaddeValencia30 ProcesadoresvectorialesAhora podemos determinar de forma mas precisa el rendimiento del DAXPY usandounalongituddevectorde66.Tn= 2 (15 + 49) + 3 66 = 128 + 198 = 326R66=2 66 200 MHz326= 81 MFLOPSEl rendimientomaximo, ignorandoloscostesdeinicio, es1.64vecessuperiorqueel rendimientosostenidoque hemos calculado. Enrealidad, el benchmarkLinpackcontiene unafraccionnotrivial de codigoque nopuede vectorizarse. Aunque estecodigosuponemenosdel20%deltiempoantesdelavectorizaci on,seejecutaamenosde una decima parte del rendimiento cuando se mide en FLOPs. As, la ley de Amdahlnos dice que el rendimientototal serasignicativamente menor que el rendimientoestimadoalanalizarelbucleinterno.Dado que la longitud del vector tiene un impacto signicativo en el rendimiento, lasmedidasN1/2yNvseusanamenudoparacompararmaquinasvectoriales.EjemploCalcularN1/2paraelbucleinternodeDAXPYparaelDLXVconunrelojde200MHz.RespuestaUsando R como velocidad maxima, queremos saber para que longitud delvectorobtendremos50MFLOPS. EmpezaremosconlaformulaparaMFLOPSsuponiendoquelasmedidasserealizanparaN1/2elementos:MFLOPS=FLOPs ejecutados en N1/2iteracionesCiclos de reloj para N1/2 iteracionesCiclos de relojSegundos10650 =2 N1/2TN1/2200SimplicandoestaexpresionysuponiendoqueN1/2 64, tenemosqueTn64=1 64 + 3 n,loquedalugaraTN1/2= 8 N1/21 64 + 3 N1/2= 8 N1/25 N1/2= 64N1/2= 12.8Por lo tanto, N1/2= 13; es decir, un vector de longitud 13 proporciona aproxima-damentelamitaddelrendimientomaximodelDLXVenelbucleDAXPY.EjemploCual es la longitud del vector, Nv, para que la operacion vectorial se ejecutemasrapidamentequelaescalar?RespuestaDenuevo, sabemosqueRv