PIP PCP SRP
Atribuição de Prioridade Fixas Fixas Fixas ou Dinâ-
micas
Instante de Bloqueio No acesso ao
recurso
No acesso ao recurso
Na preempção
Transparência para o Programador Sim Não Não
Prevenção de Deadlocks Não Sim Sim
Tabela 3.3: Principais características dos protocolos de sincronização apresentados.
3.9 Notas sobre a Implementação de EDF e SRP
A política de escalonamento das tarefas de tempo-real críticas que vai ser empregue nas im- plementações realizadas no contexto deste trabalho é a EDF uma vez que permite alcançar taxas de utilização do processador de 100% mantendo a escalonabilidade. O critério EDF resulta também em escalonamentos com um menor número de comutações de contexto re- lativamente às políticas baseadas em prioridades fixas RM e DM. A sua implementação em software pode ser baseada em listas ordenadas pela deadline absoluta ou pelo tempo que que resta até esse instante.
No acesso a recursos partilhados o protocolo que vai ser empregue é o SRP, uma vez que pode ser utilizado com políticas de escalonamento baseadas em prioridades dinâmicas (como a EDF) e possui, relativamente ao PIP e PCP a vantagem de possibilitar a partilha da pilha pelas tarefas e relativamente ao PIP a prevenção da ocorrência de bloqueios em cadeia e de
deadlocks. Além disso, é bastante simples de implementar, desde que os recursos possuam
apenas uma unidade, isto é, os semáforos sejam binários e portanto usados como mutexes. Por uma questão de simplificação da linguagem, aos sistemas que conjuguem a política de escalonamento EDF e o protocolo de sincronização SRP passarão a ser designados por EDF+SRP.
Segundo [Bar06] a verificação de sistemas EDF+SRP pode ser realizada eficientemente com uma complexidade computacional praticamente equivalente à dos sistemas escalonados se- gundo EDF e sem recursos partilhados. Em [Bar06] é também demonstrado o melhor de- sempenho de um sistema EDF+SRP comparativamente a outro que empregue a política RM para escalonamento de tarefas juntamente com o protocolo PCP para gestão dos semáforos. Este é mais um aspecto a favor da utilização de prioridades dinâmicas no escalonamento de
tarefas e mais concretamente na discussão entre os prós e os contras de EDF relativamente a
RM [MBB+04, But05b].
Para simplificar o teste de preempção em sistemas EDF+SRP, todos os tectos dos recursos podem ser determinados estaticamente, durante o arranque do sistema ou na configuração dos respectivos semáforos e armazenados numa tabela. Além disso, pode ser usada uma pilha para armazenamento e gestão do tecto do sistema, encontrando-se o valor actual no respectivo topo.
Assumindo recursos com apenas uma unidade, quando o recurso R é alocado, através do
bloqueio do respectivo semáforo, se CR >
Q
, o valor do tecto do sistema é actualizado
(Q = CR), caso contrário permanece inalterado. Em qualquer dos casos é reservada uma
nova posição da pilha para armazenar o valor deQapós a alocação do recurso.
Quando um recurso é libertado, é eliminada a última posição ocupada da pilha, pelo que o valor do tecto do sistema passa a ser o armazenado no topo da pilha anterior à alocação. Se nesta situação houver um decréscimo do tecto do sistema, é executado o teste de preempção sobre a tarefa mais prioritária que se encontra à cabeça da lista ready.
Se esta tarefa tiver uma deadline mais próxima, i.e. uma prioridade superior à que se encontra em execução e o seu nível de preempção for superior ao tecto do sistema, é realizada uma comutação de contexto. Caso contrário permanece em execução a tarefa actual que libertou o recurso.
Neste capítulo foram resumidos alguns conceitos fundamentais sobre sistemas de tempo- real. A informação apresentada foi essencialmente compilada de [But05a] e [AP05], além das restantes referências explícitas.
Capítulo 4
Implementação de Processadores
Pipelined em FPGA
Sumário
Este capítulo é dedicado à discussão da arquitectura, projecto e implementação em FPGA de processadores RISC pipelined. Mais concretamente, é apresentada e analisada uma imple- mentação da arquitectura MIPS32, designada por ARPA-CP, em FPGAs da Xilinx. Para tal, foi elaborado, em VHDL, um modelo parametrizável e sintetizável da arquitectura MIPS32. Com este modelo pretende-se determinar a abordagem e a estrutura mais adequadas à im- plementação de processadores MIPS32 em FPGA. O modelo concebido baseia-se numa es- trutura pipelined com as cinco etapas tradicionais (Instruction Fetch, Instruction Decode,
Execute, Memory Access e Write back). A parametrização permite alterar a latência de al-
gumas das etapas do pipeline, assim como seleccionar várias opções relativas à resolução de dependências de dados entre instruções.
O capítulo começa por apresentar um resumo das características mais importantes da arqui- tectura MIPS32. De seguida é descrita a organização interna do modelo concebido e enume- rados os respectivos parâmetros. Seguidamente, é mostrado o fluxo de projecto de aplicações baseadas no processador ARPA-CP, concebido a partir das ferramentas de compilação stan- dard da arquitectura MIPS32 e da FPGA utilizada. No final do capítulo são apresentados os resultados de algumas implementações do processador ARPA-CP, com diferentes valores dos parâmetros. Para cada especialização do modelo são indicados os parâmetros utilizados e os resultados da síntese e implementação obtidos, nomeadamente a área ocupada da FPGA e a frequência máxima de funcionamento.
4.1 Introdução
Este capítulo é dedicado à discussão de uma implementação da arquitectura MIPS32, desig- nada por ARPA-CP (Advanced Real-time Processor Architecture - with Configurable Pipe-
line). O processador ARPA-CP apresenta um desempenho determinístico e incorpora prati-
camente todos os aspectos da arquitectura MIPS32. Mais concretamente, implementa todas as instruções da versão (release) 1 da arquitectura MIPS32 (excepto as relacionadas com vír- gula flutuante, cache e memória virtual) e suporta algumas instruções específicas da release 2. As instruções não suportadas não são geradas implicitamente no processo de compila- ção, pelo que o processador ARPA-CP é completamente compatível com as ferramentas de desenvolvimento MIPS-SDE [MIP07].
Este processador está disponível na forma de um núcleo de propriedade intelectual descrito por um modelo sintetizável, elaborado em VHDL ao nível de abstracção “Transferência entre Registos” (Register Transfer Level - RTL). A síntese do modelo é executada com ferramentas de projecto assistido por computador e a sua implementação realizada numa FPGA da Xilinx. A finalidade do processador ARPA-CP é, por um lado permitir analisar algumas métricas re- lativas à utilização de recursos e desempenho de uma implementação da arquitectura MIPS32 em FPGA, e por outro lado, servir de ponto de partida à apresentação do processador multi- tarefa ARPA-MT descrito no próximo capítulo.
A família de FPGAs seleccionada para este trabalho foi a Spartan-3 da Xilinx [Xil06a] por ser uma FPGA relativamente recente, de baixo custo e por disponibilizar além dos recursos programáveis, um conjunto de módulos dedicados, tais como blocos de memória estática de acesso aleatório (Static Random Access Memory - SRAM) de duplo porto, multiplicadores e Delay Locked Loops (DLLs) para sincronização de sinais de relógio. Estes componentes simplificam a concepção do processador e proporcionam uma implementação mais eficiente que a obtida no caso de serem utilizados somente os recursos programáveis da FPGA. No projecto do processador foi utilizada uma estrutura pipelined para aumentar o ritmo de execução das instruções e para reduzir o impacto negativo no desempenho do processador devido aos maiores atrasos provocados pelos recursos programáveis de uma FPGA. Além disso, o custo de uma implementação pipelined de um processador em FPGA é reduzido devido ao elevado número de flip-flops normalmente disponíveis nas FPGAs actuais.
Antes de iniciar a apresentação e discussão do processador ARPA-CP serão resumidos na próxima secção alguns dos aspectos fundamentais da arquitectura MIPS32.