• Nenhum resultado encontrado

Os ambientes tradicionais de desenvolvimento, que utilizam modelos com precisão de ciclo ou Cycle-Accurate (CA) ou com aproximação de ciclo ou Cycle-Approximate (CX), recaem em baixo desempenho de simulação, pelo excessivo detalhamento das informações de tempo, ou em baixa precisão, por simplificar demasiadamente o modelo de aproximação, respectivamente. O trabalho de Lo et al. [3] busca uma modelagem que ofereça alto desempe- nho de simulação, mas mantendo a precisão de tempo exata para simulações de sistema, através de um modelo de processador de contagem de precisão de ciclos ou Cycle-Count-Accurate (CCA) que abstrai os modelos internos de pipeline e cache em modelos com contagem de ciclos de tempo.

3.1.3.1 Fluxo de Desenvolvimento

Na abordagem de contagem de ciclo aproximada ou CCA, é atingido o caminho do meio entre as ideias de precisão de ciclo e de aproximação de ci- clo, melhorando o desempenho da simulação e reduzindo os níveis de detalhe de tempo a um nível que não comprometam a precisão esperada. No fluxo de desenvolvimento proposto, o modelo CCA atende ao requisito que todas as operações de acesso as interfaces, como barramento, serão corretas tanto no funcionamento como na precisão de tempo, abstraindo completamente os detalhes internos.

PS1 PS2 PS3CacheBIF ProcessorInterior BIF

PS (Pipeline Stages) Cache Observable Behavior BIF (Bus Interface) Cycle Cycle (b) Space Space 1 2 3 4 5 6 1 2 3 4 5 6 2 3 4 5 6 Cycle

Figura 21: Modelo abstrato de Lo et al. [3]

Na figura 21, este modelo abstrato de processador é melhor detalhado, onde a precisão é implementada considerando o princípio da observabili- dade, ou seja, do que será observado pelo projetista do sistema (neste caso as interfaces) e todo os demais detalhes serão eliminados para melhorar o de- sempenho. Neste exemplo fornecido na figura 21, o processador acessa a um componente de hardware da plataforma, utilizando a interface com o bar- ramento (BIF) que é o ponto de observação do modelo para verificação de precisão e de tempo.

Os estágios de pipeline (PS) e a cache, que representam o comporta- mento interno e não observável do sistema, são convertidos para um modelo CCA (Processor Interior) que abstrai todos os detalhes, fornecendo uma con- tagem de ciclos equivalente para que o comportamento observado em BIF seja o mesmo. Esta abstração é realizada pelo subsistema de modelagem de

pipeline ou Pipeline Subsystem Modeling (PSM) e pelo subsistema de modela- gem de cache ou Cache Subsystem Model (CSM).

n delay delay=1; delay=2; delay+=call_ next_hier(); delay+=1; PSM L1 L2 BIF delay+=2 delay+=1 Simulation Time External Access Delay 2 S0 S0 data_ok count=1 PSM L1 L2 !data_ok S0 S1 S2 hit !hit data_ok S0

Figura 22: Máquina de estado de cache de Lo et al. [3]

No PSM, são construídos modelos de comportamento de blocos básicos do programa a partir do grafo de controle de fluxo ou Control Flow Graph (CFG), para a realização da análise de comportamento e tempo estáticos. Na etapa de análise dinâmica, cada um dos blocos básicos tem seu compor- tamento e tempo de contagem de ciclos, obtidos estaticamente, simulados para execução em ordem do programa equivalente. Com o comportamento interno modelado, é preciso fazer o mesmo para a cache através do CSM, im- plementando com precisão o comportamento das operações de acerto (hit) ou de falta (miss). No modelo de cache é utilizada uma máquina de estados finito com relógio ou Clocked Finite State Machine (CFSM), como é ilustrado na figura 22, que implementa o comportamento da cache e implementa os atrasos necessários para cada operação realizada.

3.1.3.2 Resultados

Como estudo de caso foi escolhido o processador OpenRISC 1200 (OR1200), devido a sua natureza de código aberto com todos os detalhes de projeto dis- poníveis, o que torna a verificação dos modelos gerados relativamente fácil. Este processador utiliza a arquitetura Harvard, com 5 estágios de pipeline e pa- radigma RISC com 32 bits, tendo desempenho comparável ao seu competidor ARM9.

DCache Pi pe lin e ICache ROM RAM LCD bus port PSM CSM bus port

Figura 23: Plataforma OR1200 de Lo et al. [3]

A maioria das aplicações de referência utilizadas era do próprio OR1200, mas foi adicionado um decodificador de 32 quadros MPEG-4 QCIF que realiza a busca da imagem de uma ROM e a exibe em uma tela de LCD, como pode ser visto na arquitetura da plataforma na figura 23.

Tabela 3: Comparativo de simulação de Lo et al. [3]

Casos Tempo CA CA CCA Melhoria

de Teste de Análise Tradicional Compilado Proposto Desempenho

fib 0,12 1,33 2,69 68,31 51x

mul 0,13 1,42 2,67 53,72 38x

cbasic 0,25 1,55 2,66 62,56 40x

dhry 0,33 1,94 2,88 117,12 60x

mpeg4 2,60 1,93 2,87 114,51 59x

Na tabela 3, as velocidades de simulação são expressas em Milhões de Ciclos por Segundo (MCPS), comparando-se o modelo tradicional CA, o mo- delo CA compilado e o modelo CCA proposto. O tempo de análise obtido é medido em segundos e é referente ao tempo gasto para análise e gera- ção do modelo CCA, crescendo linearmente com o aumento do tamanho do número de blocos básicos da aplicação em questão. A melhoria de de- sempenho obtida gira em torno de 50 vezes, quando comparado ao modelo CA tradicional, significando em termos práticos a redução de uma simulação que dura mais de 6 dias para apenas 3 horas.

3.1.3.3 Contextualização

O trabalho de Lo et al. [3] confronta alguns dos problemas mais relevantes desenvolvimento de software: o baixo desempenho das simulações com ISS, abstrair modelos de execução com precisão e a cultura de desenvolvimento baseada em código, ao invés de modelos de sistema. Como solução foi pro- posta uma abordagem de CCA que permite uma abstração exata, sob uma perspectiva de caixa preta do sistema, do ISS clássico, sem causar impacto

na precisão gerada e sem demandar do projetista novas habilidades para o projeto de sistemas.

A proposta de Lo et al. [3] está fortemente alinhada com os objetivos pro- postos, possuindo todos os requisitos que foram enumerados, basicamente por apresentar uma representação exata e mais rápida do que um modelo ba- seado em ISS. Porém, os resultados obtidos, apesar de positivos e mostrarem ganhos de cerca de 50 vezes sobre simulações com ISS, ainda estão muito abaixo do desempenho que pode ser alcançado por plataformas virtuais que utilizam modelos nativos.

3.1.4

Automatic Timing Granularity Adjustment for Host-Compiled