**.X: REl..ATóR:(O TÉN.:[(:O *.** UiA !:>i{OPOSTA O::: j:H ... · non-overlapping layout areas....

16
**.X: REl..ATóR:(O TÉN.:[(:O *.** Ui"A !:>i"{OPOSTA O::: j:H':>I.-I::H!::NTAÇAO 00 AI-.GOR ITMO DE LEE NO i'it.J!- Tj:)J I"{OC\~S~1ADO'~ HUI- T J:I:)I-US ...llllio Sa1k Aild NC\:: 22/9 i Dz~~mbFo/91 Un i vr.s i dade FedeFa1 do R i O de Jane i FO Nilcleo d Coml:>l.ltaç:~\o !::letF':'n i ca Caj:.~a Posta1 2324 20001. I~io de JaneiFo -I~J BRASIL j:.\ ;,r~ti~r:, ; " ... ~

Transcript of **.X: REl..ATóR:(O TÉN.:[(:O *.** UiA !:>i{OPOSTA O::: j:H ... · non-overlapping layout areas....

**.X: REl..ATóR:(O TÉN.:[(:O *.**

Ui"A !:>i"{OPOSTA O::: j:H':>I.-I::H!::NTAÇAO 00

AI-.GOR ITMO DE LEE NO

i'it.J!- Tj:)J I"{OC\~S~1ADO'~ HUI- T J:I:)I-US

...llllio Sa1�k Aild�

NC\:: 22/9 i

D�z~~mbFo/91

Un i v�r.s i dade FedeFa1 do R i O de Jane i FO

Nilcleo d� Coml:>l.ltaç:~\o !::letF':'n i ca

Caj:.~a Posta1 2324

20001. I~io de JaneiFo -I~J

BRASIL

j:.\ ;,r~ti~r:,; " ...

~

UMA PROPOSTA DE IMPLEMENTAÇÃO DO ALGORITMODE LEE NO MULTIPROCESSADOR MULTIPLUS

RESUMO

Este trabalho discute a implementação do algoritmo de roteamentoproposto por Lee no multiprocessador MULTIPLUS em desenvolvimentono NCE/UFRJ. O MULTIPLUS suporta até 2048 nós de processamentoorganizados em até 32 "clusters" com 8 nós de processamento. Oespaço de endereçamento global de memória é de 32 Gbytes,fisicamente distribuído em módulos de até 32 Mbytes locais a cadanó de processamento. A proposta de implementação apresentada tirapartido das características de hierarquia e partição de memóriapresentes na arquitetura do MULTIPLUS para explorar de forma maiseficiente o paralelismo inerente às fases de expansão ereinicilaização do algoritmo. Além disso, a implementação propostaé capaz de realizar concorrentemente o roteamento de conexõessituadas em áreas disjuntas do layout.

A PROPOSITION FOR THE IMPLEMENTATION OF LEE'SALGORITHM WITHIN THE MULTIPLUS MULTIPROCESSOR

ABSTRACT

This paper discusses some issues concerning the implementation ofLee's routing algorithm on MULTIPLUS, a multiprocessor underdevelopment at NCE/UFRJ. MULTIPLUS supports up to 2048 processingnodes which can be organized into 32 clusters consisting of up to8 processing nodes. The overall global memory address space is 32Gbytes, which is physically distributed into modules of up to 32Mbytes that are local to the processing nodes. The proposedimplementation takes advantage of the memory hierarchy andpartition within MULTIPLUS architecture to efficiently exploit theintrinsic parallelism of the expansion and reset phases of thealgorithm. In addition, the proposed implementation is also ableto perform in parallel the routing of nets constrained tonon-overlapping layout areas.

1. Introdução

Devido à crescente complexidade dos circuitoseletrônicos, a demanda por maior eficiência no processamento dasferramentas de CAD tem aumentado substancialmente nos últimosanos. Em conseqUência, o uso de processamento paralelo paraimplementação de algoritmos de CAD vem despertando grandeinteresse [THAM87]. A implementação de algoritmos paralelos de CADpode ser feita em arquiteturas paralelas de propósito geral ou emarquiteturas dedicadas.

As arquiteturas paralelas de uso geral são construídascom base na utilização de diversos processadores que acessam umamemória global compartilhada ou que se comunicam através de trocade mensagens, sem compartilhar o espaço de endereçamento damemória. Máquinas implementadas segundo o primeiro modelo sãochamadas de multiprocessadores e as implementadas de acordo com osegundo esquema são muitas vezes chamadas de multicomputadores. Emambos os casos, no entanto, as arquiteturas são do tipo MIMD(Multiple Instruction -Multiple Data) .

As arquiteturas dedicadas seguem muitas vezes o modeloSIMD (Single Instruction Multiple Data) .Neste modelo, ocontrole dos processadores pode ser centralizado, já que todos osprocessadores executam a cada instante uma mesma instrução queopera sobre dados diferentes. Arquiteturas dedicadas são tambémfreqUentemente implementadas com o uso de técnicas de pipeline[AUDE90].

O objetivo deste trabalho é discutir alternativas deimplementação do algoritmo de roteamento proposto por Lee [LEE61]em arquiteturas de sistemas multiprocessadores com memória globalcompartilhada. Em particular, o artigo apresenta uma proposta deimplementação do algoritmo de Lee para a arquitetura domultiprocessador MULTIPLUS [AUDE91] em desenvolvimento noNCE/UFRJ.

A Seção 2 deste artigo descreve em linhas gerais aarquitetura do MULTIPLUS. Na Seção 3, faz-se uma breve revisão doalgoritmo de roteamento proposto por Lee. A Seção 4 discute aspossibilidades de paralelismo no algoritmo de Lee que podem serexploradas adequadamente em um ambiente de multiprocessamento. NaSeção 5 uma proposta de implementação do algoritmo de Lee naarquitetura do MULTIPLUS é apresentada. Finalmente, a Seção 6comenta sobre as conclusões do trabalho e as direções de pesquisafutura na área de implementação de algoritmos de roteamento emarquiteturas paralelas baseadas no uso de memória globalcompartilhada.

2. A Arquitetura do Multiplus

O MULTIPLUS é um sistema do tipo multiprocessador, commemória global compartilhada, projetado para ter uma arquiteturamodular capaz de suportar até 2048 nós de processamento. Cada nó

de processamento consiste de:

um microprocessador RISC baseado na definição daarquitetura SPARC[SUN 87] com capacidade de processamento igual a25 MIPS VAX a 40 MHz;

.32 Mbytes de memória que representam uma região doespaço de endereçamento global de 32 Gbytes;

.um cache de instruções e um cache de dados de 64Kbytescada um;

.um co-processador de ponto flutuante com capacidade deprocessamento de 6 MFLOPS a 40 MHz;

.hardware de suporte à gerência de memória;

Até oito nós de processamento podem ser interconectadosatravés de um barramento duplo de 64 bits de largura, formando um"cluster" de processadores. Os diferentes "clusters" deprocessadores se comunicam através de uma rede de interconexãomultiestágio do tipo n-cubo invertido.

A Figura 1 mostra um esquema geral da arquitetura doMULTIPLUS. Com esta arquitetura pode-se criar uma família decomputadores cobrindo um espectro que vai desde estações detrabalho de alto desempenho, com configurações de 1 a 8 nós deprocessamento, passando por mini-supercomputadores, com 16 a 128nós, e chegando até os supercomputadores com 256 ou mais nós.

No MULTIPLUS, um processador pode acessar a memória dequatro maneiras diferentes. A primeira delas é um acesso direto aocache local. A segunda possibilidade é um acesso ao módulo dememória físicamente local ao nó de processamento. Estes dois tiposde acesso à memória não requerem o uso do sistema de barramentos.A terceira possibilidade é um acesso a um banco de memória nãolocal, mas pertencente a um nó de processamento do mesmo"cluster". Neste caso o sistema de barramentos que interliga o"cluster" deve ser utilizado para a execução do acesso à memória.Finalmente, há a possibilidade de um processador acessarinformação que está armazenada em um nó de processamentopertencente a um outro "cluster". Para esta última situação, osistema de barramentos do cluster origem, a ~ede de interconexão eo sistema de barramentos do cluster destino devem ser utilizadospara a operação de acesso ser realizada.

A fim de que o problema de manutenção de coerência decache [MESL90], no âmbito do projeto MULTIPLUS, fosse tratável naprática, duas decisões foram tomadas. A primeira delas foiespecializar o uso de cada um dos dois barramentos que interligamos nós de processamento em cada "cluster". Em um dos barramentos,são realizadas operações de leitura de instruções e, no outrobarramento, tem-se operações de leitura e escrita de dados. Asegunda decisão foi a de que dados que podem ser modificados sósão cacheáveis dentro de um mesmo "cluster". Instruções e dados sóde leitura são sempre cacheáveis. Com estas decisões, só énecessário manter a coerência de caches dentro de um mesmo"cluster" e, dentro deste, apenas o barramento de dados precisaser monitorado pelos controladores dos caches de dados queimplementam o esquema denominado "write-through". Neste esquema,

toda operação de escrita em dados não pertencente à memória localou compartilhados deve ocupar o barramento de dados.

A rede de interconexão multiestágio [BRON90] do tipon-cubo invertido é implementada com módulos de chaves cross )ar2x2 com FIFOs nas saídas e se liga aos barramentos através decircuitos de interface inteligentes. Este tipo de rede possuiduas características bastante interessantes para a filosofia doprojeto MULTIPLUS. A primeira delas é a modularidade. Estacaracterística faz com que a rede possa crescer pela simplesadição de novos módulos de chaves. A segunda característica é a departicionamento. Esta característica permite a formação desub-redes independentes compostas de um número igual a umapotência de 2 de "clusters". O tráfego gerado por uma sub-redeindependente não interfere com o tráfego gerado por outra sub-redeindependente. A condição para se obter tal particionamento é queno conjunto de bits que define a faixa de endereços de memóriaassociada a cada sub-rede, um subconjunto destes bits possuaconfiguração constante para todos os "clusters" de cada sub-rede.

A arquitetura de EIS do MULTIPLUS [OLIV90] é distribuída.A cada "cluster" estão associados dois processadores de Eis. Umdeles é orientado a caracter, processa operações de EIS comterminais e impressoras e interfaceia o MULTIPLUS com redesETHERNET. O outro processador de EIS é orientado a bloco eprocessa operações de Eis com discos e fitas. Os processadores deEIS orientados a bloco situados em clusters diferentes seinterligam através de uma rede de alta velocidade.

0 sistema operacional do MULTIPLUS, o MULPLIX, será umaextensão do Plurix [FALL89], sistema operacional totalmentedesenvolvido no NCE, compatível com o UNIX System V da AT&T ecapaz de suportar multiprocessamento. As alterações previstas noPlurix para a implementação da versão 0.0 do MULPLIX [AZEV90]visam basicamente: a criação de processos leves (threads) parapossibilitar a exploração de paralelismo com granularidadei a�e~ia~ àq'-le:ba §l:le é yiá'Je:b ba~ e na BI,r-rRIX .~ GQIQGa~ão de

l-'l-i,,-~ ~j"-,as êe si"e~e"i~a'?ãe ~saêas ~ei::i ;'~@LI,@i::l3 F'i,l~i;~c::lis1::::Tol:v:eis };:c,~,,- t,st,ã~~ e. a ~ m~ 1 emeal?1a~ãe êe ~E' imi fiI ~-~~ ,le~ia'~-1:~nIzB'Ja,::, ,l,-, til-"-' I'l-,tj~~-",'i~i,s.. "e fe,--,,-,a a e,;ifia~ B

---~ ~~~~-

iiiiiiiiiiiiii

---~~-5i&--~~~-,~eSe",t;3";3 l-"'-'~. !1"-, a ma~~-~ ~ Be eél !1las ~..ai~aêa5 e. em~LI/o::;i~I=,. BJ:eT,Bs t~iihc,s t-~ig,-,tc,ic;-" "j'e~~~ea~s SãB ',eE'a,-lBS

iiiiiiiiiiii

e~@,::;ll'Ja~ ,l,=, -~I.J'-'~itK'-' ,:'e ~ee l-';-'~-"" r"'-.r- fj~es el?1a~as. ~,,~

1111

descobrir se há um caminho interligando os dois pontos. Oprocedimento utilizado nesta fase consiste na definição, a cadaiteração, de uma nova fonteira de células a partir da expansãodas células da fronteira atual nas direções norte, sul, leste eoeste. Inicialmente, a fronteira de células é composta apenaspela célula que corresponde ao ponto de origem do caminho a sertraçado. A fase de expansão termina quando a célula querepresenta o ponto destino é atingida ou quando não há maiscélulas na fronteira para serem expandidas, significando que nãoexiste caminho entre os dois pontos. Para um caminho decomprimento 111", expresso em número de células atravessadas, otempo gasto na fase de expansão é proporcional a 1**2 , se oprocessamento for realizado seqUencialmente.

A segunda fase do algoritmo de Lee é o retraço. Seuobjetivo é traçar o caminho entre os dois pontos encontrados nafase de expansão. O procedimento adotado começa na céluladestino. A cada passo, a próxima célula a ser usada no caminho éescolhida dentre as vizinhas da última célula llC" utilizada, quepertençam a uma fronteira imediatamente anterior a da célula "C"....E poss1vel fazer 1Sto porque, na fase de expansão, células

pertencentes a fronteiras subsequentes são marcadas com númerosconsecutivos. O procedimento de retraço se encerra quando a célulaque representa o ponto de origem é encontrada. O tempo gasto noretraço é proporcional ao comprimento 111" do caminho.

A terceira fase do algoritmo é a reinicialização. Seupapel é preparar a matriz de células que representa asuperfície de roteamento para a execução da fase de expansão dapróxima conexão. Basicamente, nesta fase, as células utilizadasno caminho definido pelo retraço são transformadas em células debloqueio para as próximas conexões e os valores marcados nascélulas durante a expansão, para identificar a fronteira a queelas pertenciam, são apagados. O tempo gasto nesta fase éproporcional a p*q, onde IIp" e IIq" são as dimensões da matriz decélulas que representa a superfície a ser roteada.

Três alterações do algoritmo básico de Leesão em geral necessárias para sua utilização prática. A primeiradelas é a possibilidade de se rotear sinais interligando mais dedois pinos. Esta interligação pode ser feita com ou sem a geraçãode ligações em IIT", conforme o sinal deva ou não ser tratado comolinha de transmissão respectivamente.

A segunda alteração é a extensão do algoritmo pararoteamento em pelo menos duas camadas. O algoritmo supõe quedireções preferenciais de roteamento (vertical ou horizontal)estão associadas a cada camada.

Finalmente, a terceira alteração permite que custosdiferentes sejam atribuídos às células que compoem a matriz querepresenta a superfície a ser roteada. A atribuição de custos éfeita de forma a conduzir o algoritmo a evitar a criação debloqueios em regiões vizinhas a terminais e a favorecer oempilhamento de ligações.

Na implementação do algoritmo, cada célula é, em geral,representada por um registro contendo tres campos: status, custo esenha. O status de uma célula diz, por exemplo, se ela estábloqueada, se ela é uma célula origem ou destino ou ainda se elaestá livre podendo ou não ter furo de contacto. A senha identificaa fronteira a que pertence a célula durante o procedimento de

expansão.

Para cada sinal a ser roteado, o procedimento adotado ébasicamente o seguinte. Marca-se a célula origem e a céluladestino, caso se esteja realizando a primeira ligação de um sinal.Caso contrário, marca-se apenas a célula origem, pois todas ascélulas ocupadas pelo roteamento das outras ligações do sinal sãoassumidas, em princípio, como células de destino. Além disso,coloca-se a célula origem também na lista que descreve a fronteiraa ser expandida. A partir deste ponto dá-se início à fase de

expansão.

O procedimento adotado na fase de expansão é o seguinte:

RepitaLê próxima célula da lista de fronteira;Se o custo da célula for diferente de 1 armazena a

célula de volta na lista de fronteira após as células que compoema fronteira atualmente em expansão com o valor de custo

decrementado de 1Senão

Marca todas as células vizinhas livres destacélula nas duas camadas com a senha da próxima fronteira;

Amazena todas as células marcadas ao final da

lista de fronteira;Até que a lista de fronteira esteja vazia ou célula

destino tenha sido marcada;

Caso tenha sido encontrado um caminho ao final da fase deexpansão, a fase de retraço é iniciada. O procedimento adotado nafase de retraço parte da célula destino, que foi atingida naexpansão, e se repete até que a célula origem seja encontrada. O

procedimento é basicamente o seguinte:

RepitaProcura célula vizinha obedecendo a seguinte ordem

de prioridade na direção de busca:1. direção preferencial da camada atual2. direção preferencial da outra camada3. direção não preferencial da camada atual4. direção não preferencial da outra camada;

Marca a célula encontrada como célula destino paraa próxima ligação do mesmo sinal se o roteamento puder terligações em T. Caso contrário, marca a célula como bloqueio;

Atualiza, se necessário, o custo das células

vizinhas à célula marcada;Atualiza o status das células vizinhas para, se

necessário, desabilitar a permissão de furos nestas células;Até que célula origem tenha sido alcançada;

Finda a fase de retraço, é iniciada a fase dereinicialização, que executa o seguinte algoritmo para cada célulado layout:

Faz senha = O;Se houver sido completada a última ligação de um

sinalEntão Se a célula estiver marcada como destino

Então marque-a como bloqueio;

4. possibilidades de Uso de Paralelismo no Algoritmo de Lee emAmbientes Multiprocessados

Na sua fase de expansão, o algoritmo de Lee permite aexploração de paralelismo em duas situações. A primeira delas estárelacionada com a marcação simultânea das células vizinhas àquelaque está sendo expandida e a segunda diz respeito à expansãoconcorrente de diversas células presentes na lista de fronteira.

No primeiro caso, para um layout de duas camadas, atéoito células (quatro em cada camada) podem ser marcadas emparalelo, já que o processo de marcação de uma dada célula étotalmente independente do processo de marcação das demais. Noentanto, para que este potencial paralelismo possa ser exploradoefetivamente na prática, é necessário que as oito células vizinhasestejam armazenadas em módulos de memória que possam ser acessadosconcorrentemente. No caso da arquitetura do MULTIPLUS, estaexigência implica em se ter um mapeamento bastante complexo dolayout na memória física da máquina, já que as oito célulasvizinhas devem residir em módulos de memória distintos. Aindaassim, para evitar uma grande perda de paralelismo devido aconflitos nos barramentos nas operações de acesso à memória paramarcação das células, é necessário assegurar que a célula a sermarcada está armazenada no módulo de memória do processadorresponsável pela sua marcação. Esta última exigência levaforçosamente a que os di forçosamente a que os diverprocesso de marcação de células acessem de forma sequencial omódulo de memória que esteja armazenando a par1~e da lista defronteira contendo a célula a ser expandida.

Em suma, a exploração de paralelismo neste primeiro casoé inadequada a uma arquitetura geral como a do MULTIPLUS, sendomais adequada a arquiteturas dedicadas como a proposta por Aude etal. [AUDE90]. O ganho obtido é relativamente pequeno e para seevitar perdas no paralelismo decorrentes de conflitos de acesso abarramentos ou a módulos de memória, as soluções que devem seradotadas dificultam a exploração de paralelismo na expansãosimultânea de diversas células presentes na lista de fronteira, asegunda situação propícia à exploração de paralelismo mencionadaanteriormente.

Nesta segunda situação, o potencial de paralelismo émuito maior do que no primeiro caso, em que o fator 8 determina omáximo de paralelismo que pode ser atingido. Entretanto, para umaefetiva exploração de paralelismo na arquitetura do MULTIPLUS, é

necessário que cada processador tenha acesso a uma lista defronteira local, ou seja, armazenada em sua memória local, e que aexpansão das células desta lista de fronteira impliquemajoritariamente na marcação de células residentes também namemória local daquele processador. Com a adoção destas medidas, aspossibilidades de conflitos de acessos à memória ou ao sistema deinterconexão de nós de processamento ficam bastante reduzidas, jáque somente esporádicamente um dado processaclor necessitaráadicionar células a uma lista de fronteira não local. Aimplementação desta solução requer que o layout seja visto como umconjunto de regiões quadradas ou retangulares mapeadas em módulosde memória distintos. Um compromisso existe na definição dotamanho destas regiões. Quanto maior o tamanho das regiões,menores são as possibilidades de conflitos de acessos, porém umnúmero menor de células é efetivamente expandido em paralelo.

A fase de retraço do algoritmo de Lee é eminentementesequencial. Devido a isto e ao fato de que esta fase não é muitocustosa em termos de tempo de execução, a tentativa de exploraçãode paralelismo, por exemplo no processo de busca da próxima célulade um caminho, implicará certamente em soluções que são difíceisde serem implementadas numa arquitetura geral como a do MULTIPLUSe que produzem um pequeno ganho em termos de desempenho.

Já na fase de reinicialização, há um grande potencial deparalelismo para ser explorado. Na verdade, a divisão do layout emregiões mapeadas em módulos de memória distintos propostaanteriormente sugere a forma de exploração de paralelismo nestafase. Cada processador reinicializa de forma concorrente com osdemais a região de layout associada à sua memórj.a local. Nesteprocesso a interferência entre processadores é nula e o fator deparalelismo obtido é igual ao número de processadores utilizado.

Cabe ressaltar ainda que um outro tipo de paralelismopode ser muito bem explorado numa arquitetura como a do MULTIPLUS:o roteamento concorrente de ligações entre terminais situados emáreas disjuntas do layout. Para a implementação deste esquema,pode-se associar a grupos de processadores áreas distintas delayout. Neste quadro, os diversos grupos de processadorestrabalhariam de forma concorrente no roteamento de ligaçõesdistintas, considerando, cada um destes grupos, que a rota a sertraçada deve ficar totalmente contida na área de layoutcorrespondente aquele grupo. No MULTIPLUS, os grupos deprocessadores podem trabalhar sem interferência com os demaisgrupos desde que seja explorada corretamente a capacidade departicionamento da arquitetura fornecida pela rede de interconexãomultiestágio.

5. Proposta de Implementação do Algoritmo de Lee

Em arquiteturas de memória global compartilhada, como ado MULTIPLUS, dois fatores devem ser observados cuidadosamentepara evitar que propostas de exploração de paralelismo nestasarquiteturas venham a produzir um desempenho fraco. O primeiroaspecto que deve ser considerado é a redução dos conflitos em

acessos a recursos de hardware compartilhados, tais como a memóriaglobal e os barramentos ou sistemas de interconexão. O segundoaspecto é a minimização das situações em que a sincronização entreprocessos se faz necessária para regular o acesso a variáveiscompartilhadas residentes na memória principal. A não atenção comestes dois pontos pode levar a uma sequencialização das ações dosprocessadores que reduz consideravelmente o ganho esperado com ouso de paralelismo.

Estes dois aspectos foram fortemente considerados naformulação da proposta a ser apresentada nesta Seção que visaexplorar as situações em que o uso de paralelismo na implementaçãodo algoritmo de Lee na arquitetura do MULTIPLUS mostrou-se naanálise feita na Seção 4.

A proposta será formulada considerando-se a seguinteconfiguração para a arquitetura do MULTIPLUS: 64 nós deprocessamento organizados em oito clusters idênticos, sendo quecada nó possui 16 Mbytes de memória. O uso desta configuração nãoretira a generalidade da proposta a ser apresentada, que pode serfacilmente adaptada para outras configurações da arquitetura doMULTIPLUS.

Tomando-se as necessidades de layout dos circuitosintegrados atuais, em que grids de 1 micron devem ser utilizados,pode-se supor que 16k x 16k em 2 camadas são dimensõessatisfatórias para a maior matriz de células que se necessitarepresentar. A memória total necessária para armazenamento dascélulas componentes desta matriz é de 512 Mbytes, considerando-seque cada célula pode ser representada por apenas 1 byte como foiproposto por Aude et al. [AUDE90]. A memória total disponível naconfiguração proposta é de 1 Gbyte, portanto apenas metade destamemória será utilizada para armazenamento da matriz.

A proposta de implementação do algoritmo de Leeestabelece que o roteamento de ligações curtas, confinadas aregiões pequenas, residentes num módulo de memória único, sejaatacado primeiramente com o uso dos 64 processadores trabalhandode forma independente e em paralelo. As ligações não bem sucedidasdesta fase, juntamente com as ligações confinadas a regiõesvizinhas residentes em dois módulos de memória distintos, devemser roteadas em um segundo passo pela ação cooperativa de pares deprocessadores. Este processo de aglutinação de processadoresaumenta gradativamente fazendo com que, em um certo ponto, todosos processadores de um mesmo cluster e, posteriormente, grupos declusters atuem cooperativamente no roteamento de ligações comcomprimento crescente ou de ligações que não puderam ser roteadasnas fases anteriores. Como último estágio, temos todos os 64processadores trabalhando cooperativamente no roteamento dasligações ainda não roteadas.

Visando explorar as características de particionamento daarquitetura, conforme foi sugerido na Seção 4, o layout serámapeado nas memórias pertencentes aos oito clusters conforme oesquema matricial abaixo de dimensões 8x8, onde os números de O a7 identificam os 8 clusters e cada referência a um cluster

representa uma região de memória de 8 Mbytes:

7645764532013201764576453201320176457645320132017645764532013201

Além disso, dentro de cada cluster, cada região de 8Mbytes assinalada no esquema acima é mapeada nos 8 módulos dememória do cluster conforme o esquema matricial 8 x 8 abaixo, ondeas letras A a H identificam módulos distintos de memória e cadareferência a um módulo de memória correspondem a 128 Kbytes querepresentam um grid 256 x 256 em 2 camadas:

ABCDEFGHDEFGHABCGHABCDEFBCDEFGHAEFGHABCDHABCDEFGCDEFGHABFGHABCDE

Com esta distribuição do layout nas memórias dosclusters, é possível se particionar de 4 modos distintos aarquitetura, formando subredes compostas de grupos de clusters quenão interferem entre si no roteamento de sinais em paralelo:

a} Clusters isoladosCom esta partição podemos ter as seguintes

situações:a.1} 64 processadores roteando sinais diferentes em

paraleloa.2} 4 pares de processadores por cluster roteando

32 sinais em paraleloa.3} 2 grupos de 4 processadores por cluster

roteando 16 sinais em paraleloa.4} 8 clusters roteando sinais diferentes em

paralelo

b} Pares de Clusters, formando as seguintes partições:b.1} (0,1} , (2,3} , (4,5} , (6,7}b.2} (0,2} , (1,3} , (4,6) , (5,7)b.3) (0,4) , (1,5) , (2,6} , (3,7)Para cada uma destas partições, até 4 sinais

podem ser roteados em paralelo

c) Conjuntos de 4 Clusters, formando as seguintes

partições:c.1) (0,1,2,3) , (4,5,6,7)c.2) (0,2,4,6) , (1,3,5,7}c.3) (0,1,4,5) , (2,3,6,7)

Para cada uma destas partições, até 2 sinaispodem ser roteados em paralelo

d) oito clusters trabalhando cooperativamente noroteamento de um único sinal

O esquema proposto de mapeamento do layout sobre osbancos de memória é possível de ser implementado na arquitetura doMULTIPLUS pelo fato de a Gerência de Memória suportar alocaçãoesparsa de memória. Esta proposta de mapeamento é interessanteporque permite que se tenha vários processadores em clustersdiferentes ou não executando cooperativamente a fase de expansãode um mesmo sinal. A probabilidade de isto ocorrer aumenta com ocomprimento da ligação e é justamente nestes casos que aimplementação proposta se utiliza de processadores ou até mesmo declusters diferentes para o roteamento cooperativo de um mesmosinal. Tal fato não ocorreria com a mesma intensidade se regiõesretangulares únicas do layout tivessem sido mapeadas em cadacluster e, dentro de cada cluster, em cada processador. Uma outracaracterística importante do esquema de mapeamento proposto é quecada processador sabe a priori em qual cluster e em queprocessador residem as regiões de layout adjacentes àquela mapeadaem sua memória local.

Cabe ainda notar que a implementação proposta utiliza aarquitetura do MULTIPLUS para explorar o paralelismo de duasformas distintas. A primeira delas é relativa ao roteamento deligações curtas, confinadas a módulos de memória de alguns poucosprocessadores em um mesmo cluster. Neste caso, o paralelismo éexplorado principalmente no roteamento concorrente de diferentesligações curtas. Para ligações longas, a sit.uação se inverte.Poucos ligações são roteadas concorrentemente, porém cresce oparalelismo na fase de expansão do algoritmo de Lee com a atuaçãocooperativa de diversos processadores.

A implementação eficiente de paralelismo na execução doalgoritmo de Lee, através do uso de processadores trabalhandocooperativamente, requer que sejam observados os seguintes pontos:

a) Cada processador deve armazenar em sua memória locala lista de fronteira que ele deve expandir de forma a minimizar asnecessidades de sincronização e as possibilidades de conflito noacesso aos recursos de hardware compartilhados;

b) A expansão da lista de fronteira associada a cadaprocessador deve acarretar apenas a marcação de célulaspertencentes a regiões do layout mapeadas na memória local daqueleprocessador. Quando se expande células situadas nas bordas destasregiões, o processador deverá acrescentar estas células às listasde fronteira dos processadores vizinhos correspondentes, que sãoconhecidos;

c) A adição de células por um processador na lista defronteira de outro requer o uso de sincronização para assegurar ouso exclusivo da lista de fronteira em operações de escrita,conforme o esquema abaixo que caracteriza uma região crítica no

programa executado pelos processadores na fase de expansão:

Repita"Test and Set" na variável que indica se a lista

de fronteira selecionada está sendo escritaAté que a lista de fronteira esteja disponível para

escrita;Le endereço final da lista;Armazena célula neste endereço;Incrementa o endereço final da lista;Libera uso da lista de fronteira para escrita;

d) O fato de um processador só poder marcar célulasresidentes em sua memória local faz com que o barramento de dadosnão seja ocupado pelo controlador de cache de dados nestasoperações, pois as células a serem escritas correspondem sempre aposições não compartilhadas residentes em memória local;

e) Conforme mencionado por Aude et al [AUDE90], éimportante evitar que um processador inicie a expansão de umafronteira dois passos a frente de uma fronteira anterior que aindanão tenha sido completamente expandida pelos demais processadores.Isto pode ser conseguido através do uso do mecanismo de barreirapara sincronização de processos trabalhando cooperativamente noroteamento de um mesmo sinal;

f) A fase de retraço deve ser executada de formasequencial. É possível, no entanto, imaginar sua execução emparalelo com a fase de expansão da próxima ligação desde que estaligação pertença a um sinal diferente e se restrinja a uma outraregião do layout disjunta da atual, mas mapeada nas memóriaslocais do mesmo conjunto de processadores. Neste caso, a execuçãodo retraço ficaria sempre ao encargo de algum processador que nãoestivesse ocupado no momento com a fase de expansão .da outraligação. A adoção deste esquema, no entanto, exige uma organizaçãomuito especial da lista de ligações a ser roteada e requer umesquema complexo de ativação de processos nos processadores;

g) Na fase de reinicialização, cada processadorreinicializa em paralelo com os demais as regiões de layoutmapeadas em sua memória local.

6. Conclusões

O artigo apresentou uma proposta de implementação doalgoritmo de Lee na arquitetura do multiprocessador MULTIPLUS. Aproposta feita não pôde ser ainda avaliada na prática já que nãohá um protótipo do MULTIPLUS disponível em laboratório.Entretanto, é possível se prever que a implementação proposta deveproduzir ganhos de desempenho significativos pelo uso deparalelismo, já que ela produz um índice baixo de conflito noacesso aos recursos de hardware compartilhados e requer poucasincronização entre processadores.

O ganho a ser obtido com a exploração de paralelismo na

implementação proposta é devido a dois fatores: o roteamento devárias ligações pequenas em paralelo e o uso de processamentocooperativo de diversos processadores no roteamento de ligações degrande comprimento.

Além da avaliação da proposta de implementaçãoapresentada em ambiente simulado e na máquina MULTIPLUS real, esteprojeto de pesquisa deve prosseguir com a investigação de novosalgoritmos paralelos de roteamento. Em particular, deseja-seinvestigar a possibilidade de se realizar modificações noalgoritmo de Lee de forma a que seja possível executarsimultâneamente o roteamento de várias ligações em uma mesmaregião do layout. O objetivo é procurar superar a gravedeficiência do algoritmo no tratamento puramente sequencial dasligações.

7. Agradecimentos:

O autor agradece à FINEP e ao CNPq o apoio dado aodesenvolvimento deste projeto.

8. Referências

[AUDE90] "Implementação do Algoritmo de Lee em Hardware", Aude, J.S., Lopes Filho, E.P., Martins, M.F., pinto, S.B., Anais do VCongresso da SBMicro, Campinas, Julho de 1990

[AUDE91] "MULTIPLUS: A Modular High-Performance Multiprocessor", aser publicado nos Proceedings of the EUROMICRO 91, Viena, Austria,Setembro de 1991

[AZEV90] "MULPLIX: Um sistema Operacional tipo UNIX para oMultiprocessador MULTIPLUS", Azevedo, G.P., Azevedo, R.P.,Figueira, N.R., Aude, J.S., Anais do III SBAC-PP, Rio de Janeiro,Novembro 1990, pp. 122-137

[BRON90] "Análise de Desempenho de Redes de Interconexão paraMáquinas Paralelas", Bronstein, G., Cruz, A.J.O., Duarte, O.C.M.B., Anais do III SBAC-PP, Rio de Janeiro, Novembro de 1990, pp.345-360

[FALL89] "Plurix: A Multiprocessing Unix-like Operating System",Faller, N., Salenbauch, P., Proceedings of the 2nd Workshop onWorkstation operating Systems, Setembro 1989, Pacific Grove,California, EUA

[LEE 61] " An Algorithm for Path Connections and itsApplications", Lee, C.Y, IRE TRansactions on Electronic Computers,Vol. EC-10, Setembro 1961, pp. 346-365

[MESL90] "sistema de Memória Multicache para uma Máquina ParalelaMIMO -Projeto MULTIPLUS", Pacheco, A., Meslin, A.M., Anais do IIISBAC-PP, Rio de Janeiro, Novembro 1990, pp. 179-193

[OLIV90] "O sistema de Memória de Massa do MultiprocessadorMULTIPLUS", Oliveira, S.C., Aude, J.S., Anais do III SBAC-PP, Riode Janeiro, Novembro 1990, pp. 298-313

[SUN 87] "The SPARC Architecture Manual", Sun Microsystems Inc.,Outubro, 1987

[THAM87] "Parallel Processing for CAD Applications", Tham, K.Y.,IEEE Design and Test of Computers, Outubro de 1987, pp. 13-17

MULTISTAGE

INTERCONNECT1ON

NETWORK

Figura I: Arquitetura do MULTIPLUS