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; ricardo@facom.ufms.br 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.

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

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho 20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam

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

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

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

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

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

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

Projeto e Implementação de Decodificadores de Código em Plataformas FPGA 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 Faculdade de Engenharia (FAENG) Universidade Federal do Mato Grosso

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Pipeline Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Organização do MIPS: pipeline Visão geral do pipeline Analogia com uma Lavanderia doméstica 1

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

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

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

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

Memórias Prof. Galvez Gonçalves

Memórias Prof. Galvez Gonçalves Arquitetura e Organização de Computadores 1 s Prof. Galvez Gonçalves Objetivo: Compreender os tipos de memória e como elas são acionadas nos sistemas computacionais modernos. INTRODUÇÃO Nas aulas anteriores

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

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

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS. 5.1 - Os Programas de Avaliação 36 5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS 5.1 - Os Programas de Avaliação Programas de avaliação convencionais foram utilizados para análise de diversas configurações da arquitetura. Estes programas

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

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

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 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

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

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

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

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

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

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

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema. Unidade aritmética e lógica - Executa operações aritméticas (cálculos);

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

Disciplina: Introdução à Informática Profª Érica Barcelos

Disciplina: Introdução à Informática Profª Érica Barcelos Disciplina: Introdução à Informática Profª Érica Barcelos CAPÍTULO 4 1. ARQUITETURA DO COMPUTADOR- HARDWARE Todos os componentes físicos constituídos de circuitos eletrônicos interligados são chamados

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas: Computadores de alto-desempenho são utilizados em diversas áreas: - análise estrutural; - previsão de tempo; - exploração de petróleo; - pesquisa em fusão de energia; - diagnóstico médico; - simulações

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

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

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR

R S Q 0 0 1 0 1 0 1 0 0 1 1 0 Tabela 17 - Tabela verdade NOR 19 Aula 4 Flip-Flop Flip-flops são circuitos que possuem a característica de manter os bits de saída independente de energia, podem ser considerados os princípios das memórias. Um dos circuitos sequenciais

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann Universidade Federal de Santa Maria NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann O modelo (ou arquitetura) de von

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

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8 Índice 1. A Organização do Computador - Continuação...3 1.1. Processadores - II... 3 1.1.1. Princípios de projeto para computadores modernos... 3 1.1.2. Paralelismo...

Leia mais

Introdução aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir. O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline Todos os estágios devem estar prontos ao mesmo tempo para prosseguir O tempo requerido para mover uma instrução

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de I Organização Básica B de (Parte V, Complementar)

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Marcelo Lobosco DCC/UFJF Avaliando e Compreendendo o Desempenho Aula 09 Agenda Avaliando e Compreendendo o Desempenho Introdução Definindo Desempenho Medindo o Desempenho Desempenho

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

3. Arquitetura Básica do Computador

3. Arquitetura Básica do Computador 3. Arquitetura Básica do Computador 3.1. Modelo de Von Neumann Dar-me-eis um grão de trigo pela primeira casa do tabuleiro; dois pela segunda, quatro pela terceira, oito pela quarta, e assim dobrando sucessivamente,

Leia mais

CISC RISC Introdução A CISC (em inglês: Complex Instruction Set Computing, Computador com um Conjunto Complexo de Instruções), usada em processadores Intel e AMD; suporta mais instruções no entanto, com

Leia mais

Memória cache. Prof. Francisco Adelton

Memória cache. Prof. Francisco Adelton Memória cache Prof. Francisco Adelton Memória Cache Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de Arquivos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Conceituação de arquivos Implementação do sistemas de arquivo Introdução Sistema de

Leia mais

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA

SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA SISTEMAS OPERACIONAIS CAPÍTULO 3 CONCORRÊNCIA 1. INTRODUÇÃO O conceito de concorrência é o princípio básico para o projeto e a implementação dos sistemas operacionais multiprogramáveis. O sistemas multiprogramáveis

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

Sistemas Operacionais Arquivos. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

Sistemas Operacionais Arquivos. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Sistemas Operacionais Arquivos Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Copyright Carlos Ferraz Cin/UFPE Implementação do Sistema de Arquivos Sistemas de arquivos são

Leia mais

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64 Arquitecturas Alternativas Pipelining Super-escalar VLIW IA-64 Pipeline de execução A execução de uma instrução passa por várias fases: Vimos o ciclo: fetch, decode, execute fetch decode execute instrução

Leia mais

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador> FACULDADE DE ENGENHARIA DE COMPUTAÇÃO PROJETO FINAL I e II PLANO DE TRABALHO O Trabalho de Conclusão de Curso (TCC) a ser desenvolvido

Leia mais

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Sistema de Arquivos Ambientes Operacionais Prof. Simão Sirineo Toscani stoscani@inf.pucrs.br www.inf.pucrs.br/~stoscani Gerência de Arquivos É um dos serviços mais visíveis do SO. Arquivos são normalmente

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br Introdução INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br introdução Tópicos conceitos básicos o que é um programa um programa na memória decifrando um código referência Capítulo

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

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula

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

Á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

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH

DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO DE ENGENHARIA ELÉTRICA DECODIFICADOR DE DISPLAY DE 7 SEGMENTOS COM LATCH Projeto para a matéria TE130 Projeto de Circuitos Integrados Digitais, ministrada pelo

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

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

Técnicas de Manutenção de Computadores

Técnicas de Manutenção de Computadores Técnicas de Manutenção de Computadores Professor: Luiz Claudio Ferreira de Souza Processadores É indispensável em qualquer computador, tem a função de gerenciamento, controlando todas as informações de

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Aritmética Computacional Slide 1 Sumário Unidade Lógica e Aritmética Representação de Números Inteiros Aritmética de Números Inteiros Representação de Números

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

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi 5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC UNIVERSIDADE FEDERAL DE SANTA CATARINA DANIEL CARLOS CASAROTTO JOSE OTÁVIO CARLOMAGNO FILHO MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC Florianópolis, 2004 DANIEL CARLOS

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

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

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 Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Engenharia de Software Parte I Introdução Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Mitos do Desenvolvimento de Software A declaração de objetivos é suficiente para se construir um software.

Leia mais

Guia de Especificação de Caso de Uso Metodologia CELEPAR

Guia de Especificação de Caso de Uso Metodologia CELEPAR Guia de Especificação de Caso de Uso Metodologia CELEPAR Agosto 2009 Sumário de Informações do Documento Documento: guiaespecificacaocasouso.odt Número de páginas: 10 Versão Data Mudanças Autor 1.0 09/10/2007

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que

Leia mais

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1

Informática I. Aula 5. http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Informática I Aula 5 http://www.ic.uff.br/~bianca/informatica1/ Aula 5-13/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representaçã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

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 de Computadores. Sistemas Operacionais IV

Arquitetura de Computadores. Sistemas Operacionais IV Arquitetura de Computadores Sistemas Operacionais IV Introdução Multiprogramação implica em manter-se vários processos na memória. Memória necessita ser alocada de forma eficiente para permitir o máximo

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

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1 Introdução à Organização e Arquitetura de Computadores Prof. Leonardo Barreto Campos 1 Sumário Introdução; Evolução dos Computadores; Considerações da Arquitetura de von Neumann; Execução de uma instrução

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

Microarquiteturas Avançadas

Microarquiteturas Avançadas Univ ersidade Federal do Rio de Janei ro Info rmátic a DCC/IM Arquitetura de Computadores II Microarquiteturas Avançadas Gabrie l P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

Arquitetura de processadores: RISC e CISC

Arquitetura de processadores: RISC e CISC Arquitetura de processadores: RISC e CISC A arquitetura de processador descreve o processador que foi usado em um computador. Grande parte dos computadores vêm com identificação e literatura descrevendo

Leia mais

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I Guilherme Pina Cardim Relatório de Sistemas Operacionais I Presidente Prudente - SP, Brasil 30 de junho de 2010 Guilherme Pina Cardim Relatório de Sistemas Operacionais I Pesquisa para descobrir as diferenças

Leia mais

ALP Algoritmos e Programação. . Linguagens para Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores ALP Algoritmos e Programação Iniciação aos computadores. Linguagens para Computadores. Compiladores, Interpretadores. Ambientes de Programação 1 Linguagens para Computadores. Linguagem binária: Dispositivos

Leia mais

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES

ORGANIZACÃO DE COMPUTADORES PROCESSADORES CHIPS TRANSISTORES PROCESSADORES CHIPS TRANSISTORES O que é um chip? - conhecido como circuito integrado; - pequeno e fino pedaço de silício no qual os transistores, que formam o microprocessador, foram encapsulados; - processadores

Leia mais

EA773 - Experimento 5

EA773 - Experimento 5 EA773 - Experimento 5 Wu Shin - Ting DCA - FEEC - Unicamp 19 de Novembro de 2009 O projeto consiste em implementar uma calculadora com memória com uso de barramento de 8 bits. Neste documento são discutidos

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

28/9/2010. Unidade de Controle Funcionamento e Implementação

28/9/2010. Unidade de Controle Funcionamento e Implementação Arquitetura de Computadores Unidade de Controle Funcionamento e Implementação Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Operação da Unidade de Controle Unidade de controle: parte do

Leia mais

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como: Plano de Teste (resumo do documento) I Introdução Identificador do Plano de Teste Esse campo deve especificar um identificador único para reconhecimento do Plano de Teste. Pode ser inclusive um código

Leia mais

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

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

Capítulo 9. Gerenciamento de rede

Capítulo 9. Gerenciamento de rede 1 Capítulo 9 Gerenciamento de rede 2 Redes de computadores I Prof.: Leandro Soares de Sousa E-mail: leandro.uff.puro@gmail.com Site: http://www.ic.uff.br/~lsousa Não deixem a matéria acumular!!! Datas

Leia mais