2. HASAR VE RİSK KAVRAMLARINA TERMİNOLOJİK YAKLAŞIM,
2.1. HASAR VE RİSK KAVRAMLARINA TERMİNOLOJİK YAKLAŞIM
2.1.3. Riskin Görünüm Biçimleri
O conjunto de instru¸c˜oes originais do processador Hivek s´o possuia dois tipos de opera¸c˜oes: as de 14 bits e as de 30 bits, cada uma dessas com um cabe¸calho de dois bits, com um total de 16 e 32 bits, respectivamente, por opera¸c˜ao. Neste trabalho ´e usado um novo conjunto de instru¸c˜oes a fim de se obter um c´odigo mais denso do que o do Hivek original.
O novo formato das instru¸c˜oes ´e apresentado na figura FIG. O primeiro bit indica se a pr´oxima opera¸c˜ao pode ser executada em paralelo com a atual. Esse bit ´e usado pelo escalonamento SMT para identificar se ser´a necess´ario buscar uma instru¸c˜ao de uma outra thread para preencher o restante do pipeline. Logo em seguida, os dois bits indicam qual o tipo de opera¸c˜ao. As combina¸c˜oes 00 e 01 indicam opera¸c˜oes de 16 bits, permitindo o dobro de instru¸c˜oes de 16 bits quando comparado com o processador Hivek original. J´a a combina¸c˜ao 10 ´e referente `as instru¸c˜oes de 24 bits. Essas instru¸c˜oes s˜ao aquelas que as opera¸c˜oes s˜ao realizadas entre registradores e que n˜ao necessitem de predica¸c˜ao para serem executadas. Por fim, a combina¸c˜ao 11 representa todas as instru¸c˜oes de 32 bits normais.
Esse novo conjunto de instru¸c˜oes segue a mesma ideia do conjunto original: reduzir ou eliminar por completo alguns operandos das opera¸c˜oes mais utilizadas. A op¸c˜ao por um novo conjunto foi porque, depois de se avaliar a arquitetura Hivek, percebeu-se que o processo de expans˜ao de uma instru¸c˜ao compacta em uma normal n˜ao constituia o caminho cr´ıtico do pipeline e nem ocupava muita ´area no processador. A nova classe de instru¸c˜oes inseridas, a de 24 bits, ´e t˜ao simples de se extender que consiste em uma simples concatena¸c˜ao de bits.
Al´em das instru¸c˜oes l´ogico-aritm´eticas, de acesso `a mem´oria e de salto, tamb´em foram implementadas as instru¸c˜oes referentes `a passagem do tempo, manipula¸c˜ao da scratchpad e as de suporte `a execu¸c˜ao do sistema operacinal. As instru¸c˜oes de passagem do tempo s˜ao aquelas explicadas no cap´ıtulo das Precision Timed Machines. S˜ao elas: get time, delay until, exception on expired e deactivate exception. A instru¸c˜ao get time lˆe o con- tador de 64 bits e transfere o valor lido para um par de regitradores no banco de registra- dores. A instru¸c˜ao delay until bloqueia a thread de tempo real, o que permite que mais instru¸c˜oes de uma thread normal possam ser escalonadas para a execu¸c˜ao no pipeline.
A instru¸c˜ao exception on expired inicializa um contador alarme decrescente. Como explicado, esse alarme permite a detec¸c˜ao de um deadline perdido e emite uma exce¸c˜ao
caso ocorra a perda do deadline, permitindo ao programa tomar alguma a¸c˜ao a respeito da perda. J´a a instru¸c˜ao deactivate exception desativa a contagem do alarme.
Tamb´em foram implementadas instru¸c˜oes de manipula¸c˜ao da scratchpad a fim de au- xiliar na transferˆencia de dados entre a scratchpad e a mem´oria principal. Essas instru¸c˜oes basicamente transferem dados entre a mem´oria principal e as scratchpads de dados e de instru¸c˜oes, evitando que a aplica¸c˜ao tenha que fazer a opera¸c˜ao de transferˆencia atrav´es de la¸cos de repeti¸c˜ao. De fato, essas opera¸c˜oes podem ser vistas como opera¸c˜oes de DMA entre as mem´orias. Por fim, as instru¸c˜oes referentes ao sistema operacional, que permite manipula¸c˜ao da palavra de status de cada thread e instru¸c˜oes similare como explicado na se¸c˜ao de suporte ao sistema operacional.
5.7
Implementa¸c˜ao em FPGA
O Hivek-RT foi descrito em VHDL, simulado nas ferramentas GHDL e ModelSim e prototipado em FPGA usando o programa Altera Quartus vers˜ao 11.0. A plataforma de alvo de prototipagem foi uma placa DE0, que cont´em um FPGA Cyclone III EP3C16F484C6 da Altera. O projeto consiste na implementa¸c˜ao do pipeline, banco de registradores, scrat- chpads, caches e do controlador de mem´oria.
A tabela 1 apresenta os resultados de s´ıntese obtidos para ´area (usado / dispon´ıvel), frequˆencia e a quantidade de mem´oria (usado / dispon´ıvel) utilizada na implementa¸c˜ao dos bancos de registradores para os processadores Hivek e Hivek-RT. Os dados referentes `a hierarquia de mem´oria n˜ao s˜ao apresentados uma vez que estes n˜ao possuem valor fixo como ´e o caso do banco de registradores.
Tabela 1: Resultados de s´ıntese
Processador Area ocupada´ Frequˆencia Mem´oria utilizada
Hivek 4701 / 15,408 EL (30%) 74 MHz 8192 / 504K bits (1%)
Hivek-RT 4398 / 15,408 EL (28%) 81 MHz 16384 / 504K bits (2%)
´
E poss´ıvel perceber que o Hivek-RT mesmo implementando mais funcionalidades do que o Hivek como, por exemplo: maior quantidade de instru¸c˜oes de tamanho variado e suporte `a SMT, gasta menos l´ogica reconfigur´avel e possui uma frequˆencia de opera¸c˜ao maior quando comparada com o Hivek. Isto se deve principalmente a ausˆencia da l´ogica de adiantamento que foi eliminada pelo uso das threads intercaladas.
registradores. Entretanto, esta n˜ao chega a ser uma desvantagem de fato pois o custo para implementar dezesseis threads apenas dobrou. Mais uma vez a raz˜ao para isso ´e a explora¸c˜ao do funcionamento intercalado das threads que permitiu amortizar o n´umero de replica¸c˜oes necess´arias para prover a quantidade de portas de escrita e leitura em paralelo. Isso mostra como essa estrat´egia ´e interessante do ponto de vista arquitetural.
0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 T0 T1 T2 T3 T4 T5 T6 T7
No tempo T0 podem ser lidos os operandos da thread 0 ou da thread 8, dependendo de qual thread foi escalonada para a execução no estágio de expansão.
De forma análoga, no tempo T1 podem ser acessados os operandos das threads 1 e 9, mais uma vez escalonados também pelo estágio de expansão. Essa forma de acesso intercalado continua até o instante T4, onde ocorre o acesso das thread 4 e 12.
No instante T4, ocorre simultaneamente a leitura dos operandos das threads 4 ou 12 e a escrita do resultado da thread 0. Percebe-se a ausência de conflito estrutural entre leitura e escrita nas threads mencionadas.
De forma análoga, ocorre o acesso intercalado entre leitura dos operandos das threads 5 e 13 e escrita de resultado da thread 1. Este processo se repete em laço infinito enquanto a arquitetura está em operação.