• Nenhum resultado encontrado

Assim como apresentado na Figura 3.11, o último passo da heurística deste projeto consiste no balanceamento de desempenho. O objetivo dessa etapa consiste em distribuir os processos sobre as CPUs da arquitetura, de modo que o resultado final dessas associações seja a maximização do desempenho do sistema como um todo. O resultado da etapa de projeção, confome Fi- gura 3.11, consiste em uma matriz de projeções de todos os processos para todos os processadores. Essa matriz pode ser modelada do seguinte modo: as colunas estão relacionadas aos processadores e cada uma das linhas repre- senta as projeções de desempenho de um processo para cada um dos proces- sadores. Nesse contexto, a matriz A, a seguir, representa um exemplo hipoté- tico de uma matriz de projeção de desempenho, composta por três processos (linhas), três processadores (colunas), onde cada elemento corresponde a uma projeção de desempenho. Os elementos destacados na matriz correspondem aos valores máximos de desempenho escolhidos. Essa associação deve ser re- alizada de modo que somente um elemento seja selecionado na linha e coluna, levando em consideração que a associação final deve compreender o somatório máximo dos elementos escolhidos. O resultado é um conjunto de associações entre processos e processadores balanceado e com desempenho maximizado.

A =    12 1 1 4 5 7 2 6 5   

A escolha das projeções que maximizam o desempenho é considerada um problema clássico do campo da programação linear, nomeado problema de de- signação. Existem diversos algoritmos com o objetivo de alcançar um conjunto maximizado de designações (associações). No entanto, como um dos objetivos deste projeto é realizar a tarefa de maximização em tempo real, considerando o fato que esses algoritmos normalmente tem uma complexidade que chegam

a ordem O(n3) e O(n4), é necessário que o algoritmo escolhido para realizar

tal tarefa tenha um bom desempenho para ser implementando em hardware, buscando ganhar desempenho na maximização deixando os processadores li- vres para executarem outras tarefas.

Nesse contexto, este projeto considera dois algoritmos discretos clássicos, o algoritmo Auction e o algoritmo Hungarian(Bertsekas, 1992)(Kuhn & Yaw, 1955).

Algoritmo 3.1: Algoritmo Hungarian

input : Matriz de projeções de desempenho (Processos vs.

Processadores)

output: Conjunto de associação maximizado

Regra: Considerar a desiginação ótima como sendo a matriz que possui

1

somente um elemento designado em cada linha e coluna, para todas as linhas e colunas;

• Passo 1: A partir da matriz original, para cada linha, procurar seu menor elemento e subtraí-lo dos demais elementos da mesma linha; • Passo 2: Para cada coluna, procurar seu menor elemento e subtraí-lo

dos demais elementos da mesma coluna;

• Passo 3: Realizar designações a partir dos elementos que possuem valor 0. Se encontrou a designação ótima o procedimento é terminado, senão continue;

• Passo 4: Marque todas as linhas que possuem designação e, em seguida, selecione todas as colunas que possuem zero nas linhas marcadas; • Passo 5: A partir do resultado do Passo 4, marque cada linha que tem

uma designação em uma coluna marcada;

• Passo 6: Repetir os passos 4 e 5 até que nenhuma linha ou coluna possa ser marcada;

• Passo 7: Trace uma linha imaginária sobre cada linha da matriz não selecionada nos passos anteriores e também sobre as colunas

selecionadas;

• Passo 8: Selecione o minimo elemento da matriz que não esteja sob o traço imaginário. Subtraia esse elemento de todos os elementos que não estão sob o traço e some o mesmo elemento a todos os elementos que estão sob a intersecção do traço;

• Passo 9: Vá para o Passo 3;

Segundo Narayanan et al. (2000), o algoritmo Hungarian é superior em desempenho em relação ao algoritmo Auction, como também ocupa menor es- paço em memória. Em (Zhu et al., 2012), o algoritmo Auction é implementado

em FPGA, ocupando grande quantidade de recursos, apesar de alcançar um bom desempenho.

Neste trabalho foi adotado o algoritmo Hungarian, principalmente pelo fato de utilizar somente operações de soma e subtração de números inteiros, faci- litando sua implementação em hardware.

O algoritmo Hungarian original tem o objetivo de realizar as designações de modo a minimizar o somatório total dos pesos designados. Contudo, pode ser facilmente modificado para a maximização, requisito principal desta heu- rística. O algoritmo hungarian é descrito em Algoritmo 3.1.

3.11 Considerações finais

A heurística abordada neste capítulo compreende a obtenção das projeções de desempenho de todos os processos para todos os processadores. Essas projeções são calculadas de acordo com os comportamentos mensurados por meio do monitor de desempenho, localizado dentro do processador, o qual calcula os ciclos gastos em todos os componentes de CPI. Desse modo, a e- xecução de todos os processos é acompanhada em tempo real, ciclo por ciclo. Obtendo-se assim, as medidas comportamentais utilizadas na designação dos processadores que melhor se adequam aos comportamentos atuais dos pro- cessos.

CAPÍTULO

4

Co-projeto do escalonador

Neste capítulo são abordados os principais componentes do modelo pro- posto para a implementação da heurística descrita no Capítulo 3. A aborda- gem adotada para a modelagem consiste no co-projeto de hardware e software, na qual os componentes a serem implementados são divididos entre as duas camadas (hardware e software) de acordo com os requisitos do sistema. Neste capítulo são apresentados os principais requisitos considerados no co-projeto que delinearam a divisão em camadas. Na sequência, será detalhado cada componente da arquitetura proposta para implementação da heurística, as- sim como, são propostas soluções para problemas conhecidos envolvidos na implementação de suporte da heterogeneidade nos processadores e nos siste- mas operacionais.

4.1 Modelagem do co-projeto da arquitetura

O particionamento em hardware e software da arquitetura do escalonador fornece ao sistema grandes benefícios de desempenho e maior precisão nas designações entre processos e processadores.

Um dos principais objetivos de implementar as tarefas em hardware, é a possibilidade de processamento em tempo real das informações dos processos adquiridas do processador no momento em que estão sendo executados. Com isso, é possível obter uma imagem atual do comportamento do processo e acompanhar seu dinamismo durante seu tempo de execução. Além disso, algoritmos de maximização podem ocupar grande parte do tempo de uso do processador. A implementação em hardware faz com que esse tempo seja destinado à execução de tarefas ao invés da execução do escalonador.

Outro objetivo é o paralelismo de execução. Enquanto o processo está exe- cutando, o algoritmo de escalonamento está analisando seu comportamento e atribuindo-lhe o processador que melhor se adapta às suas necessidades. Com isso é possível que, ao fim da execução do processo, já se obtenha o resul- tado final da designação, retirando do processador a necessidade de executar os algoritmos e gastar diversos ciclos com o escalonamento. Essa caracterís- tica de paralelismo aliada ao desempenho fornecido na execução de tarefas em hardware, atua fortemente no aumento do desempenho sistema como um todo.