Projeto e Implementação de Decodificadores de Código em Plataformas FPGA

Tamanho: px
Começar a partir da página:

Download "Projeto e Implementação de Decodificadores de Código em Plataformas FPGA"

Transcrição

1 Projeto e Implementação de Decodificadores de Código em Plataformas FPGA Felipe de Oliveira de Araújo 1 Ricardo Ribeiro dos Santos 2 1 Aluno do Curso de Engenharia Elétrica da UFMS, bolsista de Iniciação Científica CNPq PIBIC 211/212 2 Professor da UFMS, Faculdade de Computação; Resumo: Esse relatório apresenta os impactos gerados pelo mecanismo decodificador da técnica de codificação de instruções PBIW (Pattern Based Instruction Word). Objetivou-se neste trabalho caracterizar o mecanismo decodificador para a técnica PBIW sobre a via de dados do processador ρ-vex sob duas perspectivas: o hardware decodificador PBIW com e sem restrições. O trabalho foi desenvolvido em quatro etapas: 1) projeto e implementação dos mecanismos de decodificação, 2) integração dos mecanismos projetados junto à arquitetura do processador ρ-vex, 3) simulação e validação das implementações desenvolvidas e 4) caracterização dos impactos gerados com relação à área, desempenho e consumo de energia. A simulação e a validação das implementações desenvolvidas foram realizadas utilizando os software Mentor Graphics ModelSim SE 6.3 e o Altera Quartus R II Web Edition. Para a caracterização foram utilizadas as ferramentas PowerPlay Power Analyzer e o TimeQuest Timing Analyzer integradas ao ambiente do Altera Quartus R. Os experimentos revelam que o mecanismo decodificador PBIW com restrição trouxe uma maior redução na área total do processador de 15% e uma redução de potência dinâmica consumida de 4%. Não influênciando na velocidade (frequência máxima alcançada pelo circuito) do processador. Contudo, o mecanismo decodificador sem restrição é a melhor alternativa para minimizar o consumo e a quantidade de dados armazenados nas mémorias de instrução com redução de 6% e 62%, respectivamente. Apesar dos ganhos da compressão na codificação PBIW sem restrição variarem entre 59,56% e 93,27% entre os programas avaliados, há um impacto negativo na velocidade de processamento de 1%. Palavras-chave: PBIW, decodificador, hardware, circuitos digitais, FPGA 1 INTRODUÇÃO Diversas propostas foram desenvolvidas na tentativa de minimizar o problema de Memory Wall [9, 14, 16]. Muitas delas focaram em novos esquemas de codificação enquanto outras utilizavam técnicas para redução do tamanho dos programas, como as técnicas de compressão. Contudo, todas possuem um único objetivo: reduzir a quantidade de dados armazenados na memória principal. Especificamente, estas técnicas têm sido aplicadas em arquiteturas que buscam instruções largas na memória e em arquiteturas voltadas para domínios específicos de aplicações, como os sistemas embarcados [1, 12]. A evolução da tecnologia em torno de novos modelos arquiteturais tem chegado até o projeto de processadores embarcados. Atualmente, processadores embarcados utilizam cores de processamento e caches on-chip para aumentar o desempenho de forma que a redução da área ocupada, seja pelos programas ou mesmo pelo projeto do sistema embarcado, tornou-se a principal preocupação para otimizações na fase de projeto. Do objetivo inicial de reduzir o tamanho do código do programa para questões envolvendo o impacto do descompressor/decodificador no sistema computacional, as técnicas de compressão/codificação de código focaram no compromisso entre área do programa versus desempenho do código, projeto de baixo consumo de potência e aumento do tempo de ciclo do processador. Assim, embora a preocupação inicial tenha sido a eficiência na compressão/codificação do código, os impactos gerados pela inclusão de um descompressor/decodificador no processador não podem ser desconsiderados. Existem várias propostas, como em [11], descrevendo técnicas de compressão com foco em arquiteturas VLIW (Very Long Instruction Word). Trabalhos como em [5] mostraram que é possível obter redução no tamanho do código e no consumo de energia através de uma compressão de código eficiente e um descompressor bastante simples. No entanto, boa parte das propostas que tentam reduzir os programas causam queda no desempenho do processador devido ao overhead da descompressão.

2 A técnica de codificação de instruções PBIW (Pattern Based Instruction Word) [13] é voltada para arquiteturas que buscam instruções longas na memória. A técnica é composta por um algoritmo baseado em fatoração de operandos [3, 6] e por uma memória cache chamada de Pattern Cache (P-Cache). Este trabalho buscou caracterizar o mecanismo decodificador PBIW sobre a via de dados do processador ρ- VEX [15]. Em particular, o trabalho investiga o impacto na inserção do circuito decodificador na via de dados do processador implementado em uma plataforma de hardware com tecnologia FPGA (Field Programmable Gate Array) com relação à área, consumo de potência dinâmica e frequência máxima de operação. A escolha da tecnologia FPGA como plataforma para implementação e síntese em hardware se dá pela flexibilidade dessa tecnologia (pode-se programá-la e reprogramá-la) e sua disponibilidade para utilização imediata no Laboratório de Sistemas Computacionais de Alto Desempenho (LSCAD) da UFMS. Este projeto está relacionado com o desenvolvimento de um projeto maior voltado para o desenvolvimento de técnicas, algoritmos e implementação em hardware em arquiteturas avançadas de computadores. 2 MATERIAIS E MÉTODOS O trabalho foi desenvolvido no Laboratório de Sistemas Computacionais de Alto Desempenho (LSCAD) da UFMS em Campo Grande. A organização das entidades da P-cache e do módulo de decodificação foram implementados utilizando linguagem VHDL e inicialmente sintetizados no ambiente da ferramenta Altera Quartus R II Web Edition [2]. O Altera Quartus II é um software da empresa Altera focado no projeto de circuitos digitais que possibilita a prototipação sobre dispositivos de lógica programável. O software possui as seguintes características: suporte para implementação em VHDL e Verilog para descrição de hardware, edição de circuitos lógicos utilizando esquemáticos, e simulação temporal utilizando vetores de onda. A depuração e a validação da funcionalidade da implementação foi realizada utilizando o software ModelSim SE 6.3 da empresa Mentor Graphics. Os experimentos de caracterização do mecanismo decodificador em uma plataforma de hardware reconfiguravel (FPGA) foram feitos utilizando as ferramentas PowerPlay Power Analyzer e o TimeQuest Timing Analyzer integradas ao ambiente do Altera Quartus R. A caracterização do consumo de potência pode ser conhecido através de dois métodos: estimação por software e medição real. Os experimentos apresentados nesse relatório foram feitos utilizando uma estimação via software. Foi utilizado neste experimento o software PowerPlay Power Analysis integrado ao ambiente do Altera Quartus II. O PowerPlay permite estimar o consumo de potência estática e dinâmica apresentando os resultados parciais, relativos ao núcleo e aos pads da FPGA, e totais da corrente que percorre o circuito, e do consumo de potência associado. O PowerPlay realiza a estimação do consumo de potência de circuitos implementados em FPGA com base no conhecimento das características internas da FPGA, correntes de fugas, capacidades de cada um dos nós internos e ainda da taxa de comutação associada a cada um destes nós. A taxa de comutação, ou taxa de atividade de cada um dos nós, depende do circuito e de todos os eventos das entradas do mesmo. As taxas de atividade podem ser fornecidas para ferramenta de duas formas: por inserção manual ou através de um ficheiro de simulação que contenha essas informações (*.vcd). A construção do testbench para produção desse ficheiro deve ser feita reproduzindo fielmente o funcionamento real do circuito. Tão importante quanto minimizar o consumo e potência, atingir uma alta velocidade de execução é essencial em aplicações de computação intensiva. A velocidade de um bloco lógico é geralmente medida em termos da máxima frequência clock (isso se aplica apenas aos circuitos síncronos). A frequência de clock máxima indica a máxima frequência que o dispositivo pode operar. Para caracterizar o desempenho utilizamos a ferramenta TimeQuest Timing Analyzer (TA) do software Altera Quartus R II [2]. O TimeQuest (TA) é um analisador de métricas de tempo de circuito digitais estilo ASIC. Utilizando o analisador TimeQuest pode-se restringir, analisar e obter relatórios para todos os caminhos críticos de projeto do circuito. 2.1 O PROCESSADOR ρ-vex O ρ-vex [15] é um processador reconfigurável, de código aberto e extensível VLIW (Very-Long Instruction Word). Devido a sua flexibilidade foi escolhido para validar e experimentar a técnica de codificação PBIW neste trabalho. O ρ-vex [15] é um processador VLIW softcore configurável descrito em VHDL baseado no ISA VEX [7]. O ISA VEX é inspirado no ISA da família de processadores HP/ST Lx [7] (o mesmo usado para os processadores

3 ST2). O ρ-vex é baseado em uma arquitetura de Harvard, que define memórias para instruções de programas e dados fisicamente separados. O modelo de execução consiste em quatro estágios: Busca, Decodificação, Execução e de Escrita. O modelo de execução é composto por quatro unidades lógicas aritméticas (ULA), duas unidades de multiplicação (MULs), uma unidade de controle (CTRL), uma unidade de memória (MEM), um banco de registradores geral (GR) com 64 registradores de 32 bits e outro banco de registradores de branch (BR), com 8 registradores de 1 bit. A Figura 1 mostra a organização geral do processador. PC GR CTRL A Instruction Memory A M Fetch Decode Execute Writeback A M A Data Memory ρ-vex BR MEM Figura 1. Via de dados arquitetural do processador ρ-vex. O ρ-vex possui uma micro-arquitetura VLIW minimalista: não possui unidade de gerenciamento de memória nem unidade para cálculo de números de ponto-flutuante. Apesar dessas limitações, o processador ρ-vex possui diversas características, como instruções longas em memória, além de ser de código aberto, que o torna adequado para o uso de técnicas de codificação. A unidade fetch busca uma instrução VLIW da memória de instrução, divide as instruções em sílabas e passa para a unidade decode (decodificação). Nesta etapa, os conteúdos dos registradores utilizados como operandos são obtidos a partir das unidades de registradores GR e BR. Depois dos estágios de busca e decodificação, as sílabas de uma instrução são despachadas para unidades de execução individuais. Cada instrução contém 4 sílabas. Todas as sílabas podem ser operações ALU, porém operações de controle só estão presentes na primeira sílaba. Operações de multiplicação e divisão podem estar presentes somente nas segunda e terceira sílabas e as operações de acesso à memória só estão presentes na quarta sílaba. Todas as operações de jump e branch são tratadas pela unidade (CTRL), e todas as operações de memória de dados, de carregamento ou armazenamento são processadas pela unidade (MEM). Por último, o ρ-vex termina sua execução no estágio de escrita (Writeback) escrevendo todos os seus dados para garantir que todos os destinos (GR, BR, PC ou memória externa) sejam atualizados. O conjunto de ferramentas de geração de código e simulação para ρ-vex contém um compilador C, bibliotecas ANSI C, um simulador em software (disponibilizado pela HP [8]) e o montador ρ-asm. Apesar da existência de ferramentas para geração e simulação de código, tais ferramentas não suportam a compilação e simulação de qualquer tipo de programa. Especificamente, não há ferramentas de link-edição, forçando, assim, a remoção de todas as chamadas a funções presentes em bibliotecas externas. Todas as funções em um programa devem ser expandidas inline na função main de forma a preservar o endereçamento global de variáveis. 2.2 A TÉCNICA DE CODIFICAÇÃO PBIW A técnica de codificação Pattern Based Instruction Word (PBIW) [13] percorre o programa realizando a fatoração de operandos redundantes e opcodes em dois elementos: instruções codificadas e padrões. PBIW explora a sobrejeção entre o conjunto de instruções e o conjunto de padrões. A técnica é embasada na técnica de fatoração de operandos [3, 6]. Uma instrução codificada PBIW é uma estrutura de dados que não contém dados redundantes (registradores ou imediatos) e é armazenada em uma Cache de Instruções. Um padrão PBIW é uma estrutura de dados que contém as informações necessárias para reconstituir, junto a um decodificador de instruções, a instrução original para o estágio de execução. O padrão contém ponteiros para as posições da instrução codificada e é armazenado em uma

4 cache ou tabela chamada de Tabela de Padrões (P-Tabela ou P-Cache). O projeto do decodificador PBIW explora o paralelismo entre as atividades de hardware, como decodificação de instruções na unidade de controle e leitura de operandos no banco de registradores. Considerando que PBIW não é uma técnica de codificação com enfoque em um conjunto de instruções ou processador específico, o projeto do padrão e instrução codificada deve levar em consideração algumas informações: número de registradores de leitura e escrita, número e tamanho de imediatos na instrução codificada e tamanaho da tabela de padrões. Cada instrução codificada PBIW tem R > campos para representar registradores de leitura, onde R é o número máximo de portas de leitura do banco de registradores. A instrução precisa ter log 2 Regs bits para endereçar cada registrador, onde Regs é o número total de registradores da arquitetura. A instrução codificada aponta para seu respectivo padrão através do campo ponteiro do padrão, cujo tamanho é log 2 P-Tabela, ou seja, a quantidade de bits para endereçar as entradas da tabela de padrões. A instrução codificada PBIW pode oferecer campos de cancelamento que são utilizados para anular operações/sílabas específicas da instrução. A quantidade de bits de cancelamento é N bits, onde N é o número de operações que constituem o padrão PBIW. Cada operação contém um opcode e um número fixo de operandos. Cada operando tem log 2 X bits, onde X é o número de campos dedicados para operandos (escrita e da instrução PBIW). Os campos de cancelamento na instrução codificada PBIW indicam que operações do padrão não serão executadas em tempo de execução. A utilização de campos de cancelamento permite que o padrão seja utilizado por mais que uma instrução codificada (reúso de padrões). O algoritmo de codificação PBIW acrescenta um novo passo na infraestrutura de complicação ρ-vex. O algoritmo de codificação e a otimização de junção de padrões têm complexidade de tempo (O(N 2 ), onde N = número de instruções não codificadas). A utilização de ambos algoritmos não afeta o desempenho da compilação EXEMPLO DE CODIFICAÇÃO PBIW Um exemplo da técnica de codificação de instruções PBIW sobre o processador ρ-vex é apresentada na Figura 2. Nessa figura são mostradas duas instruções originais (128 bits), duas instruções codificadas e um padrão após a codificação PBIW. O padrão é compartilhado entre ambas instruções codificadas, demonstrando a possibilidade de reúso. Instruções ρ-vex originais ADD ADDI NOP NOP SUB SUBI NOP NOP Padrão e instruções PBIW para ρ-vex Bits de cancelamento Ponteiro do Padrão 11 Ponteiro do Padrão (Instr. ) (Instr. 1) ADD ADDI SUB SUBI Executado pela Instrução Executado pela Instrução 1 Figura 2. Instruções originais, codificadas e padrão PBIW ρ-vex. Pode-se observar que as operações ADD e ADDI são executadas apenas pela instrução e as operações SUB e SUBI são executadas pela instrução 1. Os bits de cancelamento para ambas instruções são 11 e 11, respectivamente. Nos campos de cancelamento da instrução, a sequência 11 indica que a primeira e segunda operações (ADD e ADDI) do padrão, devem ser escritas em um registrador ou memória e, a terceira e quarta operações (SUB e SUBI) não devem escrever, qualquer que seja seus resultados, em um registrador ou mesmo em um endereço de memória (efeito NOP).

5 2.3 PROJETO DO DECODIFICADOR PBIW COM RESTRIÇÃO Na implementação do hardware decodificador PBIW com restrição junto ao processador ρ-vex, uma das primeiras etapas consiste na definição do formato do padrão e da instrução codificada. O padrão ficou definido como mostrado na Figura 3, tendo 9 bits para o campo do Opcode, 4 bits para o campo do operando de destino GR (Write Opnd), 4 bits para os campos dos operandos 1 e 2 de leitura (Read Opnd1 e Read Opnd2), 3 bits para o operando de destino BR (Br Destiny) totalizando 24 bits por operação. Um padrão completo possui 96 bits (24 bits x 4 operações) conforme apresentado na Figura 3. Opcode (7 bits) Write Opnd (4 bits) 24 bits Read Opnd1 (4 bits) Read Opnd2 (4 bits) Br Destiny (3 bits) Immediate Switch (2 bits) Operação Operação Operação Operação 96 bits Figura 3. Padrão PBIW com restrição. A instrução PBIW codificada pode ser vista na Figura 4. A instrução ρ-vex original possui 128 bits de comprimento enquanto que a nova instrução codificada possui 64 bits. Cada instrução codificada possui um campo ponteiro para o padrão PBIW (Ponteiro de Padrão), que possui um tamanho de 6 bits, e um campo de anulação com um tamanho de 4 bits para armazenar os bits de anulação. Na instrução PBIW, 35 bits foram reservados para os campos dos Registradores de Leitura, divididos em 7 campos de 5 bits para cada registrador. Para os Registradores de Escrita e Imediatos foram reservados 18 bits sendo divididos em 3 campos de 5 bits e um campo de 3 bits. Ponteiro de Padrão Registradores de Leitura Registradores de Escrita 1,21cm Bits de cancelamento Banch Source Register Imediato 9 bit ρ-vex Imediato 12 bit ρ-vex Figura 4. Instrução codificada PBIW com restrição. Os registradores de branch de destino são armazenados nos campos dos Registradores de Leitura da instrução PBIW. Isso se deve ao objetivo de deixar mais espaços disponíveis no campo de Registradores de Escrita e Imediatos da instrução PBIW. O ρ-vex define apenas 3 tipos de operandos imediatos para seus formatos de sílabas com 9 bits (short immediate), 12 bits (branch offset immediate) e 32 bits (long immediate). Porém, a implementação atual não suporta a utilização de long immediate (32 bits). Buscando otimizar o armazenamento, os imediatos são armazenados nos últimos 3 campos da área dedicada aos Registradores de Escrita e Imediatos na instrução PBIW, que têm tamanhos de 5 bits, 5bits, 5bits e 3 bits respectivamente. Se o imediato for de 9 bits (short immediate), ele utilizará somente os dois últimos campos de 5 bits (totalizando 1 bits, sendo truncado para 9 bits quando decodificado). Se o imediato for de 12 bits (branch offset immediate), utilizará todos os 3 campos finais (totalizando 13 bits, sendo truncado para 12 bits quando decodificado). Caso não haja imediatos, os campos para os registradores de destino serão utilizados normalmente. Para resolver o problema das instruções que precisam ler dados do banco de registradores BR foi definido que o endereço (src BR) seria armazenado no campo 1. Caso não seja uma instrução que necessite ler dados do banco

6 de registradores BR, o campo pode ser utilizado para outro fim. Na sintaxe do ρ-vex as operações que têm essa necessidade são as instruções do tipo III IV e VIII (ADDCG, DIVS, SLCT, SLCTF, BR e BRF) descritas em [15]. Vale observar ainda que como o último campo tem somente 3 bits, podem ser endereçados somente os registradores gerais de a 7. Os outros campos podem utilizar todos os outros registradores de a 31. Figura 5. Visão geral do decodificador PBIW com e sem restrição junto a via de dados do Processador. A Figura 5 apresenta uma visão geral do circuito decodificador PBIW com restrição implementado junto a via de dados do processador ρ-vex. Após a busca da instrução codificada, já no estágio de decodificação, os endereços dos registradores que devem ser lidos são enviados para as portas de leitura do banco de registradores BR e GR. Concomitantemente com a leitura dos registradores, o padrão é recuperado da cache de padrões utilizando o índice armazenado na instrução PBIW. Sendo o tamanho do campo do Índice da Tabela de Padrões de 6 bits, a implementação da cache de padrões (P-cache) tem um tamanho de 1,5 Kbytes (128 linhas x 96 bits = 12,288 kbits= 1,5 Kbytes) e está implementada como uma ROM (Memória apenas para leitura). Após a leitura dos registradores, os valores são disponibilizados nas entradas dos multiplexadores referentes aos operandos de origem (leitura), e os números dos registradores/imediatos que não são lidos do banco de registradores são disponibilizados nas entradas dos multiplexadores referentes aos operandos de destino (escrita). Os sinais que selecionam os valores disponibilizados nas entradas dos multiplexadores são os ponteiros existentes no padrão. Instrução PBIW Índice da Tabela de Padrões Padrão PBIW Banco de Registradores GR Extensão e Concatenação de Sinal 9 bit imm 12 bit imm Operação PBIW Opcode Banco de Registradores BR Operação rvex OPCODE Imm Switch Operando de Leitura BR Operando de Destino BR Operando de Leitura 1 Operando de Leitura 2 Registrador BR Destiny de Destino Register GR Figura 6. Diagrama de blocos do decodificador PBIW com restrições. De acordo com as especificações do projeto, o campo Write Opnd do padrão só pode apontar para os itens 8 ao 11 da instrução PBIW. Os campos Read Opnd1 e Read Opnd2 podem apontar para os itens a 7 da instrução PBIW. Quando uma determinada operação manipula imediatos de 9 bits ou de 12 bits, o campo Read Opnd2 deve conter o valor 1 se a instrução for de imediato de 9 bits (short immediate) e 11 se a instrução for de imediato de

7 12 bits (branch offset immediate). A visão geral do circuito decodificador PBIW com restrição de uma operação pode ser vista na Figura 6. O campo Br Destiny do padrão deve apontar para os itens de a 7 da instrução PBIW. Deve-se observar que para decidir qual é o registrador de destino que o resultado da operação deve ser direcionado, o campo Write Opnd da instrução é verificado. Quando o campo Write Opnd contém o valor zero, seleciona a entrada zero do multiplexador que está aterrada. Assim, o endereço de destino BR é usado para armazenar o resultado da operação. O responsável por essa avaliação é a unidade Decode do processador ρ-vex. 2.4 PROJETO DO DECODIFICADOR PBIW SEM RESTRIÇÃO Na implementação do hardware decodificador PBIW sem restrições foram adotados os mesmos formatos do padrão e da instrução codificada da implementação do hardware decodificador PBIW com restrição. Porém, com diferenças de definições na instrução PBIW. A instrução PBIW codificada pode ser vista na Figura 7. A instrução ρ-vex original possui 128 bits de comprimento enquanto que a nova instrução codificada possui 64 bits. Cada instrução codificada possui um campo de ponteiro para padrão PBIW (7 bits), o campo de anulação (4 bits), 7 campos indexados de 1 a 7 para os operandos de leitura, 4 campos para operandos de escrita. Os campos de operandos possuem 5 bits cada, exceto o último campo, que possui 3 bits. O operando no campo zero é aterrado e não existe fisicamente na instrução, mas é útil e usado na codificação para prover o valor zero via hardware code. Os últimos 3 campos são usados para armazenar valores imediatos. Registradores Gerais de Escrita e Leitura Ponteiro de Padrão Registradores de Destino e Origem BR Bits de cancelamento 1,2cm BR BRF Source Source Register Register Imediato 9 bit ρ-vex Imediato 12 bit ρ-vex Figura 7. Instrução codificada PBIW sem restrição. O padrão PBIW (Figura 8) possui 96 bits divididos em 4 sílabas de 24 bits cada. Uma sílaba contém um campo de opcode de 7 bits, um campo de 2 bits para seletor de imediato, três campos de 4 bits e dois campos de 3 bits usados como índices para os operandos na instrução PBIW. Opcode (7 bits) Write Opnd (4 bits) 24 bits Read Opnd1 (4 bits) Read Opnd2 (4 bits) Br Destiny (3 bits) Br Source (3 bits) Immediate Switch (2 bits) Operação Operação Operação Operação 96 bits Figura 8. Padrão PBIW sem restrição. A localização na via de dados do mecanismo decodificador sem restrições não foi alterada sendo a mesma mostrada na Figura 5. Após a busca da instrução codificada, já no estágio de decodificação, o padrão é recuperado na cache de padrões utilizando o índice armazenado na instrução PBIW. Concomitantemente, os campos da instrução PBIW são disponibilizados nas entradas dos multiplexadores. Considerando que o tamanho do campo Ponteiro de Padrão é de 7 bits, a implementação da cache de padrões (P-cache) para o decodificador sem restrição

8 PBIW Instruction Pattern Table Index PBIW Pattern Signal extension and concatenation 9 bit 12 bit imm imm PBIW Operation Opcode General Registers Bank Branch Registers Bank ρ-vex Operation OPCODE Imm Switch BR Source Operand GR Destiny Register Read Operand 1 Read Operand 2 BR Destiny Register Figura 9. Diagrama de blocos do decodificador PBIW sem restrição. também tem um tamanho de 1,5 Kbytes (128 linhas x 96 bits = 12,288 kbits= 1,5 Kbytes) e está implementada como uma tabela de acesso direto junto a unidade Decode. Após a recuperação do padrão na cache de padrões, com os campos da instrução PBIW disponibilizados nas entradas dos multiplexadores os campos que contém os endereços dos operandos de origem (leitura) e os operandos de destino (escrita) são selecionados utilizando os ponteiros existentes no padrão. A visão geral do circuito decodificador PBIW sem restrição de uma sílaba é apresentada na Figura 9. Como nessa versão do circuito decodificador PBIW não existe restrições de posição na instrução PBIW, o campo Write Opnd do padrão pode apontar para qualquer um dos itens de a 11 da instrução PBIW. Da mesma forma, o campo Br Destiny do padrão pode apontar para qualquer um dos itens de a 7 da instrução PBIW. Devese observar que para decidir qual é o registrador de destino que o resultado da operação deve ser direcionada, o campo Write Opnd da instrução é verificado. Quando o campo Write Opnd contém o valor zero, seleciona a entrada zero do multiplexador que está aterrada. Assim, o endereço de destino BR é usado para armazenar o resultado da operação. O responsável por essa avaliação é a unidade Decode do processador ρ-vex, como já comentado. Os campos Read Opnd1, Read Opnd2 também podem apontar para os itens de a 11 da instrução PBIW. Já o campo Br Destiny pode apontar apenas para os itens de a 7 da instrução PBIW. Diferentemente da versão com restrição, o endereço do operando de leitura de branch também pode ser armazenado nos itens de a 7 da instrução PBIW. Na sintaxe do ρ-vex as operações que necessitam ler dados do banco de registradores BR são as instruções (ADDCG, DIVS, SLCT,SLCTF, BR e BRF). Nessas operações os últimos 3 bits do opcode ficavam inutilizável na versão com restrição. Na versão sem restrição o campo Br Source é armazenados nos últimos três bits do opcode. Assim, as operações ADDCG, DIVS, SLCT e SLCTF têm a opção de armazenar os endereços de seus operandos de leitura de branch nos itens de a 7 da instrução PBIW. Apenas as operações BR e BRF, que possui seus últimos três bits do opcode fixo, tem que armazenar seus endereços de operando de leitura de branch nos itens 5 e 6 respectivamente da instrução PBIW. Os multiplexadores que têm como seletor os sinais Read Opnd1 e Read Opnd2 selecionam a posição na instrução PBIW que tem o endereço dos seus operandos de origem 1 e 2 respectivamente e os envia para o Banco de Registradores GR. Da mesma forma, o multiplexador que tem como seletor o sinal Br Source seleciona a posição na instrução PBIW que tem o endereço do operando de origem BR e o envia para o Banco de Registradores BR. Quando uma determinada operação manipula imediatos de 9 bits ou de 12 bits, o operando de origem 2 pode ser alterado. O responsável por essa seleção é o campo immediate switch de 2 bits já definido no ρ-vex [15]. Caso o imediato seja de 9 bits o campo immediate switch deve ser 1 selecionando o sinal im 9. Caso o imediato seja de 1 bits o campo immediate switch deve ser 1 selecionando o sinal im 12. Caso contrário, o campo immediate switch deve ser selecionando o sinal data r2.

9 3 EXPERIMENTOS E RESULTADOS Esta seção apresenta os resultados obtidos com a utilização da técnica PBIW sobre o processador ρ-vex. Inicialmente, apresenta-se os resultados estáticos da codificação PBIW, com e sem restrição, em um conjunto de 13 programas de propósito geral. Em seguida discute-se o efeito do circuito decodificador PBIW, com e sem restrição, junto à via de dados do processador com relação à área, consumo de potência dinâmica e frequência máxima de operação. Os 13 programas possuem tamanhos que variam de 1KB-7KBytes. A Tabela 1 enumera os programas e as instâncias de entrada adotadas nos experimentos. Todos os 13 programas foram escritos em linguagem C. Alguns (5 deles) fazem parte do Trimaran Compiler Suite (Simple benchmarks) [4]. Os programas mergesort, counting sort, linked list, doubled linked list, avl tree, kruskal, prim e floyd warshal são implementações de algoritmos clássicos de ordenação e manipulação de estruturas de dados. Todos os programas foram compilados e simulados usando o toolchain VEX [7]. Como ρ-vex não possui hierarquia de memória, todos os programas foram inseridos na memória de instruções do soft-core do ρ-vex antes da síntese do projeto. As memórias de instrução e dados foram prototipadas nas memórias embarcadas M4K de uma FPGA da família Altera Cyclone II. Programas Descrição Entrada avl tree Balan. de Árvores Inserção: 1 a 12 inteiros nested complex Encadeamento de loops Default mergesort Ordenação Vetor: 15 inteiros counting sort Ordenação Vetor: 2 inteiros linked list Estrutura de dados Inserção: 28 inteiros double linked list Estrutura de dados Inserção: 17 inteiros kruskal Árvore geradora mín. 5x5 matriz de adj. strcpy Cópia de strings strings de 55 bytes prim Árvore geradora mín. 3x3 matriz de adj. bmm Mult. de Matrizes vars: NUM=5, BLOCK=1 floyd warshall Algo. Caminho mínimo 5x5 matriz de adj. sqrt Método Newton Raphson var: NUM=4 hyper Desvios internos à loop 2 iterações Tabela 1. Programas usados nos experimentos. 3.1 EXPERIMENTOS COM A CODIFICAÇÃO PBIW A Figura 1 mostra o tamanho do código estático (eixo Y) para programas não-codificados e codificados com PBIW com restrição. As barras dos programas codificados com restrição (segunda barra de cada programa) também mostra a porcentagem do tamanho das instruções e padrões em relação ao tamanho total do programa. Os resultados mostram que a adoção do PBIW provê a redução do tamanho de código para 9 dos 13 programas analisados. A taxa de compressão (tamanho do programa codificado/tamanho do programa não codificado) variou entre 6,97% e 115,91%. A taxa de compressão média foi de 91,78%. Como a técnica PBIW explora o reúso (número de instruções que acessamo mesmo padrão) entre instruções e padrões, programas maiores criam melhores oportunidades de codificação. Essa premissa também é confirmada na Figura 1 pois a diferença entre os tamanhos não-codificado e codificado decresce da esquerda para a direita. Alguns programas codificados obtiveram um tamanho maior devido a geração desproporcional de instruções PBIW. Este comportamento é devido à limitação de espaço na instrução PBIW que força a separação das sílabas presentes na instrução ρ-vex original em até outras 4 instruções. A Figura 11 mostra o tamanho do código estático (eixo Y) para programas não-codificados e codificados com PBIW sem restrição. As barras dos programas codificados com restrição (segunda barra de cada programa) também mostra a porcentagem do tamanho das instruções e padrões em relação ao tamanho total do programa. Os resultados mostram que a adoção do PBIW traz redução no tamanho de todos os programas analisados. A taxa de compressão varia de 59,56% até 93,27%. A taxa de compressão média é de 81,57%. A taxa de reuso de padrões (número de instruções PBIW / número de padrões PBIW) fornece uma proporção média do número de padrão que é utilizado por diferentes instruções do programa. Os programas avaliados tem taxas de reúsos que variam de 2,73 (programa hyper) até 18,96 ( programa avl tree). A taxa de reúso média é de 6,3. A taxa de reúso possui relação direta com a taxa de compressão.

10 Bytes Tamanho Final do Programa PBIW Instruções PBIW Padrões ρ-vex % 92% % 89% 84% 86% 9% 86% 86% 82% 5% 8% 16% 11% 16% 14% 1% 14% 14% 18% 24% 22% 19% avl_tre nested kruskal merge bmm floyd_w countin linked_ double prim sqrt strcpy hyper e _compl ex sort arshall g_sort list _linked _list 76% 78% 81% Figura 1. Resultados estáticos da codificação PBIW com restrição. Bytes Tamanho Final do Programa PBIW Instruções PBIW Padrões p-vex % 93% % 15% avl_tree nested_complex 65% 35% sqrt bmm 73% 83% 75% 72% 64% 81% 79% 78% 74% 75% 27% 17% 25% 28% 36% 19% 21% 22% 26% 25% mergesort kruskal floyd_warshall hyper counting_sort Figura 11. Resultados estáticos da codificação PBIW sem restrição. linked_list double_linked_list prim strcpy 3.2 EXPERIMENTOS COM DECODIFICADOR PBIW Nesta seção discute-se o efeito do circuito decodificador PBIW com e sem restrição junto à via de dados do processador ρ-vex sobre uma plataforma FPGA. Na experimentação das duas versões do mecanismo decodificador, todos os programas foram carregados diretamente na memória de instruções antes da síntese. As memórias de instrução e de dados foram prototipadas utilizando blocos de memórias embarcadas (M4K) da FPGA da família Altera Cyclone II [1] EXPERIMENTOS DE ÁREA E DISSIPAÇÃO DE POTÊNCIA COM A INSERÇÃO DO CIRCUITO PBIW COM RESTRIÇÃO A Figura 12 mostra o número médio de elementos lógicos das unidades existentes na via de dados do processador com e sem a inserção do mecanismo decodificador PBIW com restrição. A inserção do circuito decodificador com restrição trouxe um aumento no tamanho da unidade de decodificação de 87% (média entre os 13 programas utilizados) quando comparado com a versão original do ρ-vex. Esse aumento pode ser explicado pelo fato da tabela de padrões e a lógica do circuito decodificador (multiplexadores) estarem instanciadas na unidade Decode. Apesar do número de operações que lêem dados do Banco de Registrador GR terem aumentado, não houve um aumento significativo no número de elementos lógicos nesta unidade. Esse aumento no número de operações deve-se ao fato que a otimização da junção padrões aumenta o número de operações presentes em um padrão. Embora a unidade Decode tenha tido um aumento em sua área, o consumo da potência dinâmica nesta unidade foi reduzida cerca de 1% (em média). Pode-se observar que a dissipação de potência na unidade Decode aumenta à medida que há um número maior de campos da sílaba com a mesma funcionalidade. A sobreposição de

11 Fetch Média de Área ocupada por Unidade Funcional (Elementos Lógicos / Unidade Funcional) Decode Execute Banco Regs. Gerais Banco Regs. Branch CTRL MEM ρ-vex ρ-vex com PBIW UART WriteBack Figura 12. Média de área ocupada por unidade funcional do processador ρ-vex. funcionalidade entre os campos de uma sílaba aumenta a quantidade de blocos lógicos de diferentes topologias (comparadores, multiplexadores e portas lógicas) que são necessários para identificar o tipo de layout da sílaba a ser executada. A adoção da codificação PBIW com restrição reduz a sobreposição (ambiguidade semântica dos campos) pois a instrução codificada PBIW possui campos com finalidades fixas. Essa nova metodologia no processo de decodificação na unidade Decode influência o roteamento da FPGA permitindo otimizações e com isso minimizando a lógica, em até mesmo outra unidade, do Datapath do processador. O impacto desse efeito está na redução de área de 45% e de 54% nas unidades CTRL e Writeback, respectivamente. Aliado ao fato da redução do número de bits de uma instrução, armazenada na mémoria de instrução, de 128 bits para 64 bits. Com o aumento do reuso dos padrões, as instruções codificadas adquirem características padronizadas e menos reduntantes. Esse efeito reduziu a taxa de comutação (toggle) de sinal na memória de instrução em 27%. Tamanho total da memória M4K embarcada ρ-vex ρ-vex com PBIW Bits sqrt hyper bmm nested_complex kruskal mergesort floyd_warshall counting_sort prim avl_tree double_linked_list linked_list strcpy Figura 13. Tamanho total da memória M4K embarcada. Outro efeito que a codificação PBIW trouxe sobre a memória de instrução foi a redução no número de bits de memória, em média de 25%, como já era esperado de acordo com os experimentos com codificação PBIW com restrição. A Figura 13 mostra o tamanho total do bloco memória M4K utilizado no projeto do ρ-vex com e sem decodificador PBIW com restrição. A consequência dessas reduções tanto na taxa de comutação como no total de número de bits na memória de instrução pode ser vista na Figura 14 que mostra uma redução de cerca 56% de redução no consumo de potência dinâmica na memória de instrução (imem). A técnica de codificação PBIW proporciona um controle maior para evitar computações desnecessárias, em unidade funcionais, na via de dados do processador. Um exemplo desse efeito pode ser observado na unidade CRTL. As operações BR e BRF tem um layout um pouco diferente do comum, e por isso precisam ser identificadas

12 Consumo Médio de Potência Dinâmica (mw) ρ-vex ρ-vex com PBIW Fetch Decode Execute Banco Regs. Gerais Banco Regs. Branch CTRL MEM DMEM IMEM WriteBack Figura 14. Média de potência dinâmica consumida por unidade funcional. no processo de decodificação da unidade Decode. Como definido em [15], essas operações têm seu endereço de operando de origem BR armazenado nos bits 2 a 4 da instrução. Para outras operações os endereços de operando de origem BR são armazenados nos bits 25 a 27 da instrução. Esse bloco de lógica, em hardware, de diferentes topologias (entre elas multiplexadores, comparadores, e portas lógicas) não é utilizado na versão do ρ-vex com decodificador com restrição. Uma vez que a instrução codificada possui campos fixos, e quem define o tipo da operação é o próprio ponteiro no padrão Br Source, o bloco de lógica responsável por esse processo torna-se um simples multiplexador. Essa característica tem um efeito no roteamento na via de dados do processador. Além disso, obtem-se um controle maior para evitar computação desnecessária na unidade CTRL. Levando a uma redução na área e na potência dinâmica da unidade CTRL em média de 25% e 45%, como é mostrado na Figuras 12 e 14 respectivamente. Em média, o circuito decodificador com restrição trouxe um redução de 4% no consumo de potência dinâmica e 15% na redução no número de elementos lógicos EXPERIMENTOS DE PERFORMANCE COM A INSERÇÃO DO CIRCUITO DECODIFICADOR PBIW COM RESTRIÇÃO Aliar desempenho com o consumo de energia eficiente tem sido o tão sonhado caminho para o desenvolvimento de sistemas de alto desempenho nos últimos anos. Para aplicações de tempo real crítico, o desempenho tem sido o requesito mais importante em comparação até mesmo com o custo de área. Por outro lado, certas aplicações necessitam da concepção de ser a mais compacta possível. Da mesma forma, plataformas de computação portáteis e movidos à bateria necessitam da concepção de serem eficientes com relação ao consumo de energia. A técnica de codificação PBIW vem demonstrando se tornar uma alternativa para otimizações de área e consumo de potência dinâmica. Nessa seção busca-se caracterizar o impacto no desempenho, na velocidade, do softcore ρ- VEX com a inserção do circuito decodificador PBIW com restrição em seu datapath sobre uma plataforma FPGA. Os experimentos foram feitos utilizando a ferramenta TimeQuest Timing Analyzer (TA) do software Altera Quartus R II. A velocidade de projetos em uma FPGA pode ser avaliada com base nos seguintes fatores: Frequência máxima de clock, Latência (delay) e Desempenho (Rendimento). Atingir uma alta velocidade de execução é uma importante consideração em aplicações de computação intensiva. A velocidade de um bloco lógico é geralmente medida em termos da máxima frequência clock. A frequência de clock máxima indica a máxima frequência que o dispositivo pode operar. É o resultado, entre outros fatores, da soma dos tempos de atraso nos caminhos críticos. As principais fontes desses atrasos são os atrasos devidos comutação nos blocos lógicos e aos efeitos RC (Resistivos e Capacitivos), devido aos pass transistors e aos tri-state buffers, existentes nas interconexões das FPGAs. A frequência máxima calculada pelo TimeQuest (TA) independe da frequência de clock especificadas pelo usuário. A frequência máxima obtida na execução de cada programa com o processador ρ-vex com e sem circuito decodificador PBIW com restrição é apresentada na Figura 15. O caminho crítico é definido como o caminho entre uma entrada e uma saída com o atraso máximo. A redução na freqüência de clock máxima é causada pelo aumento do rising slack no maior caminho crítico. O rising slack é o tempo associado à diferença entre o tempo requerido de um dado e do tempo em que o dado chega, a cada

13 Frequência Máxima de Operação (MHz) ρ-vex ρ-vex com PBIW strcpy avl_tree double_linked_list linked_list kruskal hyper nested_complex bmm floyd_warshall mergesort prim counting_sort sqrt Figura 15. Frequência máxima de operação com o circuito decodificador PBIW com restrição. conexão. O tempo de chegada (arrival time) de um dado é o tempo decorrido para que um sinal chegue a um determinado ponto. O tempo requerido (required time) é o tempo máximo que um dado pode chegar sem fazer com que o ciclo de relógio seja atrasado. As Tabelas 2 e 3 investigam o impacto no tempo de chegada (arrival time) na execução dos programas counting sort (melhor caso) e avl tree(pior caso), respectivamente. Data arrival ρ-vex ρ-vex com decodificador PBIW por unidade com restrição Clock Path 2,723 3,549 Memória de Instruções 3,22 3,22 Fetch,595 Decode 1,55 4,418 WriteBack 2,343 GR 5,243 Execute 16,8 Total arrival time 23,438 19,35 Tabela 2. Caminho crítico na execução do programa counting sort Data arrival ρ-vex ρ-vex com decodificador PBIW por unidade com restrição Clock Path 2,746 3,811 Memória de Instrução 3,22 3,22 Decode 4,889 1,794 Writeback 2,952 GR 5,266 Execute 13,777 Total arrival time 19,55 22,87 Tabela 3. Caminho crítico na execução do programa avl tree As Tabelas 2 e 3 mostram que o aumento do número de elementos lógicos (circuitos mux) na unidade de Decode não afetou negativamente o tempo de chegada (arrival time). Isto demonstra que o processo de decodificação tornou-se mais simples com a inserção do circuito decodificador PBIW com restrição. A origem na redução da frequência máxima com a inserção do circuito decodificador PBIW com restrição está no aumento do tempo de chegada de dados na unidade Execute. Este atraso pode ser explicado pelo fato de que

14 a codificação PBIW modifica a forma com que os imediatos são armazenados na instrução. Com codificação PBIW, um mesmo imediato pode ser usado por quatro diferentes operações na instrução, ao contrário da instrução VEX que possui campos separados para armazenar imediato de uma determinada operação quando necessário. Aliado ao aumento do número de operações em um padrão, devido à otimização da junção de padrões, o circuito decodificador PBIW aumenta o fluxo de dados nas entradas dos multiplicadores na unidade Execute causando, assim, um atraso no tempo de chegada EXPERIMENTOS DE ÁREA E DISSIPAÇÃO DE POTÊNCIA COM A INSERÇÃO DO CIRCUITO DECODIFICADOR PBIW SEM RESTRIÇÃO A Figura 16 mostra o número médio de elementos lógicos das unidades existentes na via de dados do processador com e sem a inserção do mecanismo decodificador PBIW sem restrição. A inserção do circuito decodificador sem restrição trouxe também um aumento na área da unidade de decodificação de 228% (média entre os 13 programas utilizados) quando comparado com a versão original do ρ-vex. Esse aumento é explicado pelo fato da tabela de padrões e a lógica do circuito decodificador (multiplexadores) estarem instanciadas na unidade Decode. Média de Área ocupada por Unidade Funcional 12 1 (Elementos Lógicos/ Unidade Funcional) ρ-vex ρ-vex com PBIW Fetch Decode Execute Banco Regs Gerais Banco Regs Branch CTRL MEN UART Writeback Figura 16. Média de área ocupada por unidade funcional do processador ρ-vex. Comparado com a versão do mecanismo decodificador com restrição, a unidade Decode aumentou 141%. Esse aumento pode ser explicado pelo fato que o mecanismo decodificador PBIW sem restrição tem um número maior de multiplexadores. Mesmo esses multiplexadores sendo menores do que os da versão do mecanismo decodificador com restrição. Como o número de operações que lêem dados do Banco de Registrador GR aumentou, mais que a versão do decodificador PBIW com restrição, houve um aumento significativo no número de elementos lógicos, cerca de 1%, nesta unidade. O aumento no número de operações deve-se ao fato que a otimização da junção e alta taxa do reuso de padrões aumentou o número de operações presentes em um padrão. Como consequência do aumento na área da unidade Decode, o consumo da potência dinâmica nesta unidade não foi reduzida como na versão do decodificador PBIW com restrição. A técnica de codificação PBIW faz com que o processo de decodificação de instrução torne-se menos complexo. Porém, a dissipação de potência na unidade Decode basicamente se manteve constante comparada com a versão do ρ-vex. Como dito, a adoção da codificação PBIW reduz a sobreposição pois a instrução codificada PBIW possui campos com finalidades fixas. Essa nova metodologia no processo de decodificação na unidade Decode influência o roteamento da FPGA permitindo otimizações e com isso minimizando a lógica, em até mesmo outra unidade, do Datapath do processador. O impacto desse efeito novamente, pode ser visto na redução de área de 2% na unidade CTRL.

15 Aliado ao fato da redução do número de bits de uma instrução, armazenada na mémoria de instrução, de 128 bits para 64 bits, com o aumento do reuso dos padrões, as instruções codificadas adquirem características padronizadas e menos reduntantes. Como a codificação PBIW sem restrição teve uma maior taxa de reuso de padrões, a taxa de comutação (toggle) de sinal na memória de instrução reduziu, em média, 6% comparada com o ρ-vex. Tamanho total da memória M4K embarcada ρ-vex ρ-vex com PBIW sqrt hyper bmm nested_complex kruskal mergesort floyd_warshall counting_sort prim avl_tree Bits double_linked_list linked_list strcpy Figura 17. Tamanho total da memória M4K embarcada. Outro efeito que a codificação PBIW sem restrição trouxe sobre a memória de instrução foi a redução no número de bits de memória em média de 62%. Redução muito maior quando comparada com a versão do mecanismo decodificador PBIW com restrição. A Figura 17 mostra o tamanho total do bloco memória M4K utilizado no projeto do ρ-vex com e sem decodificador PBIW sem restrição. A consequência dessas reduções tanto na taxa de comutação como no total de número de bits na memória de instrução pode ser vista na Figura 18 que mostra uma redução de cerca 6% no consumo de potência dinâmica na memória de instrução (imem). Consumo Médio de Potência Dinâmica 35 3 (mw) ρ-vex ρ-vex com PBIW Fetch Decode Execute Banco Regs Gerais Banco Regs Branch CTRL MEM DMEM IMEM Writeback Figura 18. Média de potência dinâmica consumida por unidade funcional. Além da simplificação no processo de decodificação, que trouxe simplificaçõs no roteamento da FPGA, a técnica de codificação PBIW proporciona um controle maior para evitar computações desnecessárias, em unidade funcionais, na via de dados do processador. Na versão do mecanismo decodificador PBIW sem restrição a taxa de reúso de padrões é maior do que comparado com a versão do mecanismo decodificador PBIW com restrição. A característica de controle para evitar computações desnecessárias, em unidades funcionais, não é tão intensa como na versão com restrição. Em média,

16 o circuito decodificador sem restrição trouxe um redução de 3% no consumo de potência dinâmica e 5% na redução no número de elementos lógicos EXPERIMENTOS DE PERFORMANCE COM A INSERÇÃO DO CIRCUITO DECODIFICADOR PBIW SEM RESTRIÇÃO Nesta seção caracteriza-se o impacto no desempenho do softcore ρ-vex com a inserção do circuito decodificador PBIW sem restrição em seu datapath sobre uma plataforma FPGA. Da mesma forma dos experimentos anteriores, foi utilizado o recurso TimeQuest Timing Analyzer (TA) do software Altera Quartus R II. A frequência máxima obtida na execução de cada programa no processador ρ-vex com e sem decodificador PBIW sem restrição é apresentada na Figura 19. Frequência Máxima de Operação RVEX ρ-vex com PBIW MHz strcpy avl_tree double_linked_list linked_list kruskal hyper nested_complex bmm floyd_warshall mergesort prim counting_sort sqrt Figura 19. Frequência máxima de operação com o circuito decodificador PBIW sem restrição. A Figura 19 mostra, em média, 1% de redução da frequência máxima de clock com a inserção do circuito decodificador PBIW sem restrição. Redução essa superior quando comparada com circuito decodificador PBIW com restrição, que praticamente manteve sua frequência máxima de clock, com um redução em média de menos de 1%. Data arrival ρ-vex ρ-vex com decodificador PBIW por unidade sem restrição Clock Path 2,746 3,314 Memória de Instrução 3,22 3,22 Decode 4,889 1,794 Writeback 2,952 GR 5,266 Execute 14,777 Total arrival time 19,55 23,87 Tabela 4. Caminho crítico na execução do programa avl tree O circuito decodificador PBIW sem restrição também influência o caminho crítico (atraso máximo entre uma entrada e uma saída no circuito) da via de dados do processador. Especificamente, o circuito decodificador PBIW sem restrições tem impacto somente sobre o tempo de chegada (arrival time). A origem na redução da frequência máxima com a inserção do circuito decodificador PBIW está novamente no aumento do tempo de chegada de dados na unidade Execute (Tabelas 4 e 5). Este atraso acontece porque a codificação PBIW sem restrição possibilita que um mesmo imediato seja usado por até quatro diferentes operações

17 Data arrival ρ-vex ρ-vex com decodificador PBIW por unidade sem restrição Clock Path 2,723 3,118 Memória de Instrução 3,22 3,22 Decode 1,55 1,572 Execute 16,8 11,841 Total arrival time 23,438 19,733 Tabela 5. Caminho crítico na execução do programa counting sort na instrução, ao contrário da instrução VEX que possui campos separados para armazenar imediato de uma determinada operação quando necessário. Este atraso é maior que a versão do circuito decodificador PBIW com restrições, pois nessa versão a taxa de reuso é maior. Com isso um maior número de imediatos são executados desnecessariamente na via de dados do processador, mesmo sendo anulados. 4 CONCLUSÕES Este relatório final apresentou a implementação de um decodificador de instruções, baseado na técnica de codificação PBIW aplicada sobre um processador soft-core embarcado denominado ρ-vex. Em particular, apresentou os efeitos do mecanismo decodificador PBIW sob a via de dados do processador ρ-vex sob duas perspectivas: o hardware decodificador PBIW com e sem restrições. Embora não seja limitada a apenas um tipo de conjunto de instruções, a técnica PBIW mostra-se uma alternativa viável para reduzir a utilização de memória, a redução do tempo de busca e a dissipação de potência dinâmica em processadores como ρ-vex. Essa adequação deve-se às características intrínsecas do projeto do processador: modelo de execução VLIW, projeto soft-core, conjunto de instruções fixo e bem-definido. Os resultados apresentados ratificam a possibilidade de adoção de PBIW visando atender os objetivos de projeto assim como alinhar com outras restrições. A taxa de compressão de código estático variam de 6,97% e 81,57% para os mecanismo decodificador PBIW sem e com restrição respectivamente. Para os experimentos que procuraram observar o comportamento do decodificador de instruções, junto à via de dados do processador, obtivemos uma redução média de área de 15% e 5% para a versão com e sem restrição respectivamente. A dissipação de potência dinâmica teve uma redução média de 4% e 3% com a inserção do circuito decodificador PBIW com e sem restrição. Além disso demonstrou-se que a inserção do circuito decodificador PBIW em média não alterou a frequência de operação do clock para a versão do mecanismo decodificador com restrição. Porém com a versão do mecanismo decodificador PBIW sem restrição obtemos uma redução de 1% na frequência de operação de clock. Como trabalhos futuros objetiva-se estender a infraestrutura de codificação/decodificação PBIW a fim de avaliar programas de benchmarks bem conhecidos como SPEC, MediaBench. Objetiva-se também estender a aplicação da técnica PBIW para processadores escalares. Referências [1] ALTERA. Cyclone II Device Handbook. Altera Corporation, 28. [2] ALTERA. Quartus II Handbook Altera Corporation, 211. [3] G. Araujo, P. Centoducatte, M. Cortes, and R. Pannain. Code Compression Based on Operand Factorization. In Proceedings of the MICRO, pages IEEE Computer Society, [4] L. N. Chakrapani, J. Gyllenhaal, W. Mei, W. Hwu, S. A. Mahlke, K. V. Palem, and R. M. Rabbah. Trimaran - An Infrastructure for Research in Instruction-Level Parallelism. Lecture Notes in Computer Science, 362:32 41, 24. [5] L. L. Ecco, B. C. Lopes, E. C. Xavier, R. Pannain, P. Centoducatte, and R. J. de Azevedo. Sparc16: A new compression approach for the sparc architecture. In Proceedings of the SBAC-PAD, pages , Washington, DC, USA, 29. IEEE Computer Society. [6] J. Ernst, W. Evans, C. W. Fraser, S. Lucco, and T. A. Proebsting. Code compression. In Proceedings of the PLDI, pages ACM, [7] J. A. Fisher, P. Faraboschi, and C. Young. Embedded Computing: A VLIW Approach to Architecture, Compilers and Tools. Elsevier, 25. [8] Hewlett-Packard Laboratories. VEX Toolchain. May 212. [9] S. A. McKee. Reflections on the memory wall. In Proceedings of the 1st Conference on Computing Frontiers, pages , April 24.

18 [1] S. K. Menon and P. Shankar. Space/time tradeoffs in code compression for the tms32c62x processor. Technical Report IISc-CSA-TR-24-4, Indian Institute of Science, 24. [11] J. Prakash, C. Sandeep, P. Shankar, and Y. N. Srikant. Experiments with a new dictionary based code-compression tool on a vliw processor. Technical Report IISc-CSA-TR-24-5, Indian Institute of Science, 24. [12] M. Ros and P. Sutton. Code compression based on operand-factorization for vliw processors. In Proceedings of the CASES, pages ACM, September 24. [13] R. Santos, R. Batistella, and R. Azevedo. A pattern based instruction encoding technique for high performance architectures. International Journal on High Performance Systems and Architecture, 2:71 8, 29. [14] A. Saulsbury, F. Pong, and A. Nowatzyk. Missing the memory wall: the case for processor/memory integration. In Proceedings of the 23rd International Symposium on Computer Architecture, pages 9 11, October [15] T. van As, S. Wong, and G. Brown. ρ-vex: A Reconfigurable and Extensible VLIW Processor. In Proceedings of the FPT. IEEE, 28. [16] W. A. Wulf and S. A. McKee. Hitting the memory wall: Implications of the obvious. ACM SigArch, 23(1):2 24, 1995.

ÁREA: CV ( ) CHSA ( ) ECET ( )

ÁREA: CV ( ) CHSA ( ) ECET ( ) ADAPTAÇÃO E INTEGRAÇÃO DO PROCESSADOR RISCO A UMA ARQUITETURA MULTI-CORE PARA SISTEMAS EMBARCADOS DE PROPOSITO GERAL Laysson Oliveira Luz (Bolsista PIBIC/CNPq), Ivan Saraiva Silva (Orientador, Departamento

Leia mais

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto: Processadores BIP A família de processadores BIP foi desenvolvida por pesquisadores do Laboratório de Sistemas Embarcados e Distribuídos (LSED) da Universidade do Vale do Itajaí UNIVALI com o objetivo

Leia mais

Sistemas Processadores e Periféricos Aula 5 - Revisão

Sistemas Processadores e Periféricos Aula 5 - Revisão Sistemas Processadores e Periféricos Aula 5 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão

Leia mais

Componentes do Computador e. aula 3. Profa. Débora Matos

Componentes do Computador e. aula 3. Profa. Débora Matos Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e

Leia mais

Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática

Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática Francisco Carlos Silva Junior 1, Ivan Saraiva Silva 1 1 Departamento de Computação Universidade Federal do Piauí (UFPI) Caixa Postal

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Pipeline Slide 1 Pipeline Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Organização e Arquitetura de Computadores I Caminho de Dados

Leia mais

Guilherme Quentel Melo Modelagem do processador Nios2 para uma plataforma de SoCs

Guilherme Quentel Melo Modelagem do processador Nios2 para uma plataforma de SoCs Guilherme Quentel Melo Modelagem do processador Nios2 para uma plataforma de SoCs Florianópolis SC 2006/2 Guilherme Quentel Melo Modelagem do processador Nios2 para uma plataforma de SoCs Trabalho de conclusão

Leia mais

UNIVERSIDADE FEDERAL DO MATO GROSSO DO SUL

UNIVERSIDADE FEDERAL DO MATO GROSSO DO SUL UNIVERSIDADE FEDERAL DO MATO GROSSO DO SUL Faculdade de Computação - FACOM Curso de Bacharelado em Ciência da Computação GERAÇÃO DE BACK-END LLVM PARA O PROCESSADOR ρ-vex Richard Stéffano Martins da Silva

Leia mais

Disciplina: Laboratório de Circuitos Digitais

Disciplina: Laboratório de Circuitos Digitais Universidade Federal de São Carlos Disciplina: Laboratório de Circuitos Digitais Prof. Dr. Emerson Carlos Pedrino 9ª Pratica: Computador de 16 bits Data:17/07/2014 Nome: Adrián Agüero Faraldo RA: 612227

Leia mais

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB 2.3 Dependências de dados (Data Hazards) Ocorre quando uma instrução depende do resultado de outra instrução que ainda está no pipeline. Este tipo de dependência é originado na natureza seqüencial do código

Leia mais

Capítulo 3 Processadores de Propósito Geral: Software

Capítulo 3 Processadores de Propósito Geral: Software Capítulo 3 Processadores de Propósito Geral: Software Prof. Romis Attux EA075 2015 Obs: Os slides são parcialmente baseados nos dos autores do livro texto Processadores de Propósito Geral Um processador

Leia mais

Arquitetura de Computadores. Arquitetura de Computadores 1

Arquitetura de Computadores. Arquitetura de Computadores 1 Computadores Computadores 1 Introdução Componentes: Processador; UC; Registradores; ALU s, FPU s, etc. Memória (Sistema de armazenamento de informações; Dispositivo de entrada e saída. Computadores 2 Introdução

Leia mais

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO Rafael Vargas Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Leia mais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de

Leia mais

Edeyson Andrade Gomes

Edeyson Andrade Gomes Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline -- Conflito de dados paradas e adiantamentos -- Conflito de controle detecção de desvios e descarte de instruções -- Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno

Leia mais

FPGA Field Programmable Gate Array

FPGA Field Programmable Gate Array Arquitetura de Computadores FPGA Field Programmable Gate Array Alex Vidigal Bastos Sumário Dispositivos Reconfiguráveis Field Programmable Gate Arrays Funcionamento Desenvolvimento Ferramentas Dispositivos

Leia mais

Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL

Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL Curso de Engenharia de Computação DESENVOLVIMENTO DE UM PROCESSADOR RISC EM VHDL José Carlos Pereira Itatiba São Paulo Brasil Dezembro de 2006 ii Curso de Engenharia de Computação DESENVOLVIMENTO DE UM

Leia mais

Introdução à Arquitetura de Computadores

Introdução à Arquitetura de Computadores 1 Introdução à Arquitetura de Computadores Hardware e software Organização de um computador: Processador: registradores, ALU, unidade de controle Memórias Dispositivos de E/S Barramentos Linguagens de

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 2- Exemplo de Microarquitetura

Leia mais

Estrutura de um Computador

Estrutura de um Computador SEL-0415 Introdução à Organização de Computadores Estrutura de um Computador Aula 7 Prof. Dr. Marcelo Andrade da Costa Vieira MODELO DE VON NEUMANN PRINCÍPIOS A arquitetura de um computador consiste de

Leia mais

Arquitetura e Organização de Computadores 2

Arquitetura e Organização de Computadores 2 Arquitetura e Organização de Computadores 2 Escalonamento Estático e Arquiteturas VLIW Dynamic Scheduling, Multiple Issue, and Speculation Modern microarchitectures: Dynamic scheduling + multiple issue

Leia mais

RISC simples. Aula 7. 31 de Março de 2005 1

RISC simples. Aula 7. 31 de Março de 2005 1 RISC simples Aula 7 31 de Março de 2005 1 Estrutura desta aula Principais características dos processadores RISC Estrutura de um processador (MIPS) sem pipeline, de ciclo único O datapath ou circuito de

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar Componentes de um Computador (5) Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) 2007/01 - INF02597 Com slides de Roberta Lima Gomes

Leia mais

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Processadores Memória Principal Memória Secundária Entrada e

Leia mais

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01 Unidade Central de Processamento (CPU) Processador Renan Manola Introdução ao Computador 2010/01 Componentes de um Computador (1) Computador Eletrônico Digital É um sistema composto por: Memória Principal

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

Unidade Central de Processamento

Unidade Central de Processamento Unidade Central de Processamento heloar.alves@gmail.com Site: heloina.com.br 1 CPU A Unidade Central de Processamento (UCP) ou CPU (Central Processing Unit), também conhecida como processador, é responsável

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 2 - O NÍVEL DA MICROARQUITETURA 1. INTRODUÇÃO Este é o nível cuja função é implementar a camada ISA (Instruction Set Architeture). O seu projeto depende da arquitetura do conjunto das instruções

Leia mais

Sistemas Operacionais Aula 2

Sistemas Operacionais Aula 2 Sistemas Operacionais Aula 2 Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE 1/38 O que

Leia mais

Aula 14: Instruções e Seus Tipos

Aula 14: Instruções e Seus Tipos Aula 14: Instruções e Seus Tipos Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Instruções e Seus Tipos FAC 1 / 35 Conceitos Básicos Diego Passos

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Caminho de Dados Slide 1 Sumário Introdução Convenções Lógicas de Projeto Construindo um Caminho de Dados O Controle da ULA Projeto da Unidade de Controle Principal

Leia mais

- Aula 1 - ARQUITETURA DE COMPUTADORES

- Aula 1 - ARQUITETURA DE COMPUTADORES - Aula 1 - ARQUITETURA DE COMPUTADORES Em arquitetura de computadores serão estudados aspectos da estrutura e do funcionamento dos computadores. O objetivo é apresentar de forma clara e abrangente a natureza

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior

Arquitetura de Computadores. Professor: Vilson Heck Junior Arquitetura de Computadores Professor: Vilson Heck Junior Agenda Conceitos Estrutura Funcionamento Arquitetura Tipos Atividades Barramentos Conceitos Como já discutimos, os principais componentes de um

Leia mais

Implementação de um módulo Ethernet 10/100Mbps com interface Avalon para o processador Nios II da Altera

Implementação de um módulo Ethernet 10/100Mbps com interface Avalon para o processador Nios II da Altera Implementação de um módulo Ethernet 10/100Mbps com interface Avalon para o processador Nios II da Altera Ricardo Menotti Orientador: Prof. Dr. Eduardo Marques Instituto de Ciências Matemáticas e de Computação

Leia mais

PROGRAMAÇÃO EM VHDL DE CIRCUITOS LÓGICOS PARA IMPLEMENTAÇÃO EM FPGA RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA

PROGRAMAÇÃO EM VHDL DE CIRCUITOS LÓGICOS PARA IMPLEMENTAÇÃO EM FPGA RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA PROGRAMAÇÃO EM VHDL DE CIRCUITOS LÓGICOS PARA IMPLEMENTAÇÃO EM FPGA RELATÓRIO FINAL DE PROJETO DE INICIAÇÃO CIENTÍFICA (PIBIC/CNPq/INPE) Yegor Gomes de Mello (UFRN, Bolsista PIBIC/CNPq) E-mail: yegor_melo@crn.inpe.br

Leia mais

Sistemas Computacionais II Professor Frederico Sauer

Sistemas Computacionais II Professor Frederico Sauer Sistemas Computacionais II Professor Frederico Sauer Livro-texto: Introdução à Organização de Computadores 4ª edição Mário A. Monteiro Livros Técnicos e Científicos Editora. Atenção: Este material não

Leia mais

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO

CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO CONSTRUÇÃO DE UMA UCP HIPOTÉTICA M++ INTRODUÇÃO O seguinte artigo apresenta uma UCP hipotética construída no software simulador DEMOWARE Digital Works 3.04.39. A UCP (Unidade Central de Processamento)

Leia mais

Nível da Microarquitetura

Nível da Microarquitetura Nível da Microarquitetura (Aula 10) Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Agradecimentos: Camilo Calvi - LPRM/DI/UFES Máquina de Vários Níveis Modernas (ISA)

Leia mais

Arquitetura de Computadores - Revisão -

Arquitetura de Computadores - Revisão - Arquitetura de Computadores - Revisão - Principais funções de um Sistema Operacional Componentes básicos da Arquitetura Barramentos Registradores da CPU Ciclo de Instruções Interrupções Técnicas de E/S

Leia mais

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores

Infraestrutura de Hardware. Revisão Pipeline, Superescalar e Multicores Infraestrutura de Hardware Revisão Pipeline, Superescalar e Multicores Pipeline Pipeline é uma técnica que visa aumentar o nível de paralelismo de execução de instruções ILP (Instruction-Level Paralellism)

Leia mais

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento 1 Processadores Computador Processador ( CPU ) Memória E/S Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento 2 Pastilha 3 Processadores (CPU,, Microcontroladores)

Leia mais

Primeiros "computadores" digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna

Primeiros computadores digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna Execução de um O executa um Quais os seus componentes? Como estes se organizam e interactuam? entrada de dados processador, memória, input bits periféricos,etc bits saída de dados output Primeiros "es"

Leia mais

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores. 7.3.1.2 Registradores: São pequenas unidades de memória, implementadas na CPU, com as seguintes características:

Leia mais

ARQUITETURA DE COMPUTADORES - 1866

ARQUITETURA DE COMPUTADORES - 1866 7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um

Leia mais

Geração de Back-end LLVM Para o Processador r-vex

Geração de Back-end LLVM Para o Processador r-vex Geração de Back-end LLVM Para o Processador r-vex Richard Stéffano Martins da Silva Orientação: Prof. Dr. Ricardo Ribeiro dos Santos LSCAD/FACOM/UFMS - Campo Grande - MS - Brasil Julho, 2013 LLVM Roteiro

Leia mais

Visão Geral de Pipelining

Visão Geral de Pipelining Pipeline Visão Geral de Pipelining Instruções MIPS têm mesmo tamanho Mais fácil buscar instruções no primeiro estágio e decodificar no segundo estágio IA-32 Instruções variam de 1 byte a 17 bytes Instruções

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Introdução Ivan Saraiva Silva Sumário Introdução Bibliografia Recomendada O que é um computador Organização de um Computador Modelo de Von Neumann IAS Máquina de Von Neuman

Leia mais

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara Carga Horária: 60h Sumário Unidade Lógica Aritmetrica Registradores Unidade Lógica Operações da ULA Unidade de Ponto Flutuante Representação

Leia mais

Caminho dos Dados e Atrasos

Caminho dos Dados e Atrasos Caminho dos Dados e Atrasos Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Pipeline MIPS O MIPS utiliza um pipeline com profundidade 5, porém

Leia mais

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ Microarquiteturas de Alto Desempenho Pipeline Gabriel P. Silva Introdução Pipeline é uma técnica de implementação de processadores

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 01001111 01110010 01100111 01100001 01101110 01101001 01111010 01100001 11100111 11100011 01101111 00100000 01100100 01100101 00100000 01000011 01101111 01101101 01110000 01110101 01110100 01100001 01100100

Leia mais

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP. A ARQUITETURA DE UM COMPUTADOR A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957),

Leia mais

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1

Arquiteturas que Exploram Paralismos: VLIW e Superscalar. Ch9 1 Arquiteturas que Exploram Paralismos: VLIW e Superscalar Ch9 1 Introdução VLIW (Very Long Instruction Word): Compilador empacota um número fixo de operações em uma instrução VLIW As operações dentro de

Leia mais

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Curso Superior de Sistemas de Telecomunicações Unidade São José Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase Bases tecnológicas Dispositivos Lógicos Programáveis. Introdução à Tecnologia

Leia mais

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação. Universidade Federal de Campina Grande Unidade cadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e rquitetura de Computadores I Organização e rquitetura Básicas

Leia mais

Sumário. Parte I Conceitos Básicos de Criptografia, Software e Hardware...19. Agradecimentos...7 Sobre os Autores...9 Prefácio...

Sumário. Parte I Conceitos Básicos de Criptografia, Software e Hardware...19. Agradecimentos...7 Sobre os Autores...9 Prefácio... 11 Sumário Agradecimentos...7 Sobre os Autores...9 Prefácio... 17 Parte I Conceitos Básicos de Criptografia, Software e Hardware...19 Capítulo 1 Conceitos de Segurança de Dados e Criptografia... 21 1.1

Leia mais

Disciplina: Laboratório de Circuitos Digitais

Disciplina: Laboratório de Circuitos Digitais Universidade Federal de São Carlos Disciplina: Laboratório de Circuitos Digitais Prof. Dr. Emerson Carlos Pedrino 7ª Prática: Introdução à Verilog-HDL e á Lógica Sequencial Data: 22/05/2014 Nome: Adrián

Leia mais

Arquiteturas RISC. (Reduced Instructions Set Computers)

Arquiteturas RISC. (Reduced Instructions Set Computers) Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina

Leia mais

Índice. Tudo! (datapath de um ciclo)

Índice. Tudo! (datapath de um ciclo) Índice Sumário Instrução com atraso maior no datapath de um ciclo. Datapath multiciclo: introdução. 4. O Processador: Unidades de Caminho de Dados e de o 4.1 Diagrama de Blocos de um Processador 4.2 Unidade

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Fernando Fonseca Ramos Faculdade de Ciência e Tecnologia de Montes Claros Fundação Educacional Montes Claros 1 Índice 1- Introdução 3- Memórias 4- Dispositivos

Leia mais

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2) Arquitectura de um computador Caracterizada por: Conjunto de instruções do processador (ISA Estrutura interna do processador (que registadores existem, etc Modelo de memória (dimensão endereçável, alcance

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos 1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos Já estudamos anteriormente que os processadores funcionam (ou melhor, o seu hardware funciona) através de ordens simples e básicas,

Leia mais

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo Prototipação de Sistemas Digitais Metodologia de Projetos Cristiano Araújo Fluxo de projeto Emulação/Implementação do componente de harwdare VHDL/Verilog Simulação FPGAs, CPLDs Síntese p/emulação ASICs

Leia mais

Capítulo 8 Arquitetura de Computadores Paralelos

Capítulo 8 Arquitetura de Computadores Paralelos Capítulo 8 Arquitetura de Computadores Paralelos Necessidade de máquinas com alta capacidade de computação Aumento do clock => alta dissipação de calor Velocidade limitada dos circuitos => velocidade da

Leia mais

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva Introdução RISC = Reduced Instruction Set Computer Elementos básicos: Grande número de registradores de propósito geral ou uso

Leia mais

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 6 - ARQUITETURAS AVANÇADAS DE COMPUTADORES 1. INTRODUÇÃO As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com ela o conceito de arquitetura avançada tem se modificado. Nos

Leia mais

Nível 3 Sistema Operacional

Nível 3 Sistema Operacional Nível 3 Sistema Operacional Universidade Tuiuti do Paraná UTP Faculdade de Ciências Exatas - FACET Tecnologia de Análise e Desenvolvimento de Sistemas Organização de Computadores Prof. André Luiz 1 Nível

Leia mais

Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável Prof.: Eduardo Simas eduardo.simas@ufba.

Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável Prof.: Eduardo Simas eduardo.simas@ufba. Universidade Federal da Bahia Escola Politécnica Programa de Pós Graduação em Engenharia Elétrica Disciplina: Processamento Digital de Sinais (ENG577) Aula 05 Parte 2: Dispositivos de Hardware Programável

Leia mais

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Componentes básicos de um sistema computacional. Cap. 1 (Stallings) Componentes básicos de um sistema computacional Cap. 1 (Stallings) 1 Sistema de Operação Explora recursos de hardware de um ou mais processadores Provê um conjunto de serviços aos utilizadores Gerencia

Leia mais

Dispositivos Lógicos Programáveis

Dispositivos Lógicos Programáveis PARTE 1 - TEORIA Dispositivos Lógicos Programáveis Os dispositivos lógicos programáveis (PLD Programmable Logic Device) são circuitos integrados programáveis, que possuem um grande número de portas lógicas,

Leia mais

Implementações e Comparação de Multiplicadores de Alta Velocidade para Dispositivos Reconfiguráveis

Implementações e Comparação de Multiplicadores de Alta Velocidade para Dispositivos Reconfiguráveis Implementações e Comparação de Multiplicadores de Alta Velocidade para Dispositivos Reconfiguráveis Tiago dos Santos Patrocinio, Ivan Saraiva Silva Departamento de Computação Universidade Federal do Piauí

Leia mais

SIS17 - Arquitetura de Computadores

SIS17 - Arquitetura de Computadores SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória

Leia mais

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO Agosto/2004 V2 INTRODUÇÃO Este guia foi preparado para auxilio às aulas de laboratório para o curso de Engenharia

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Universidade Federal do Pampa Campus-Bagé Arquitetura e Organização de Computadores Aula 2 Revisão de Conceitos e Introdução a Desempenho Prof. Julio Saraçol juliosaracol@gmail.com Slide1 Aula 2 REVISANDO

Leia mais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 SISTEMA DE INTERCONEXÃO (BARRAMENTOS) Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Componentes estruturais: Memória Principal Unidade de Processamento Central

Leia mais

O Processador: Caminho de Dados e Controle

O Processador: Caminho de Dados e Controle 22 Capítulo 3 O Processador: Caminho de Dados e Controle O desempenho de um computador é determinado por três fatores principais: o número de instruções executadas, o período do clock e o número de ciclos

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Universidade Federal de Campina Grande Unidade cadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e rquitetura de Computadores I Nível da Microarquitetura (Parte

Leia mais

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: ICO Aula N : 09 Tema: Unidade Central de

Leia mais

Pipelining - analogia

Pipelining - analogia PIPELINE Pipelining - analogia Pipelining OBJECTIVO: Aumentar o desempenho pelo aumento do fluxo de instruções Program execution Time order (in instructions) lw $1, 100($0) Instruction fetch ALU Data access

Leia mais

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CPU (Central Processing Unit) é o coordenador de todas as atividades

Leia mais

7-1. Parte 6 Otimizações da Arquitetura

7-1. Parte 6 Otimizações da Arquitetura 7-1 Parte 6 Otimizações da Arquitetura 7-2 Bibliografia [1] Miles J. Murdocca e Vincent P. Heuring, Introdução à Arquitetura de Computadores [2] Andrew S. Tanenbaum, Modern Operating Systems [3] William

Leia mais

EA075 Processadores Dedicados

EA075 Processadores Dedicados EA075 Processadores Dedicados Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato Introdução Processador: circuito digital projetado para

Leia mais

Aula 26: Arquiteturas RISC vs. CISC

Aula 26: Arquiteturas RISC vs. CISC Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos

Leia mais

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória

Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e Organização de Memória Introdução Arquitetura de Computadores Circuitos Combinacionais, Circuitos Sequênciais e O Nível de lógica digital é o nível mais baixo da Arquitetura. Responsável pela interpretação de instruções do nível

Leia mais

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86 Arquitetura de Computadores Arquitetura dos Processadores Intel 80x86 Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO Família Intel 80x86 Ao se falar

Leia mais

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores. Ivan Saraiva Silva Arquitetura de Computadores Métricas de Desempenho Ivan Saraiva Silva Sumário Como arquiteturas são geralmente avaliadas Como arquiteturas obedecem a restrições de projeto Métricas de desempenho Combinando

Leia mais

Programando o computador IAS

Programando o computador IAS Programando o computador IAS Edson Borin e Rafael Auler 21 de março de 2012 1 Introdução O computador IAS foi um dos primeiros computadores a implementar o conceito do programa armazenado. Neste paradigma,

Leia mais

Arquitetura e Organização de Computadores I

Arquitetura e Organização de Computadores I Arquitetura e Organização de Computadores I Interrupções e Estrutura de Interconexão Prof. Material adaptado e traduzido de: STALLINGS, William. Arquitetura e Organização de Computadores. 5ª edição Interrupções

Leia mais

Simplifique a complexidade do sistema

Simplifique a complexidade do sistema 1 2 Simplifique a complexidade do sistema Com o novo controlador de alto desempenho CompactRIO Rodrigo Schneiater Engenheiro de Vendas National Instruments Leonardo Lemes Engenheiro de Sistemas National

Leia mais

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação

TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação TABELA DE EQUIVALÊNCIA FECOMP Curso de Engenharia de Computação Disciplina A Disciplina B Código Disciplina C/H Curso Disciplina C/H Código Curso Ano do Currículo 66303 ESTRUTURA DE DADOS I 68/0 ENG. DE

Leia mais

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3 Tecnologia FPGA Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui. 3.1. FPGA: Histórico, linguagens e blocos Muitos dos

Leia mais

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados Organização de um Computador Típico Memória: Armazena dados e programas. Processador (CPU - Central Processing

Leia mais

Revisão dependências de dados

Revisão dependências de dados Revisão dependências de dados Dependências de dados resolvidas com adiantamento (quase sempre) Deve garantir que instruções anteriores escreverão resultado, destino é mesmo que fonte, e instrução anterior

Leia mais

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software ANHANGUERA EDUCACIONAL Capítulo 2 Conceitos de Hardware e Software Hardware Um sistema computacional é um conjunto de de circuitos eletronicos. Unidade funcionais: processador, memória principal, dispositivo

Leia mais

1 - Processamento de dados

1 - Processamento de dados Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados).

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

SIS17-Arquitetura de Computadores

SIS17-Arquitetura de Computadores Sistema de Computação SIS17-Arquitetura de Computadores Apresentação da Disciplina Peopleware Hardware Software Carga Horária: 40 horas 2 Computadores atuais Unidade Central de Processamento Entrada Computadores

Leia mais