PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Programa de Pós-graduação em Engenharia Elétrica Proposta e Desenvolvimento de um Processador de Rede com Chave Crossbar Reconfigurável Henrique Cota de Freitas Belo Horizonte 2003 Henrique Cota de Freitas Proposta e Desenvolvimento de um Processador de Rede com Chave Crossbar Reconfigurável Dissertação apresentada ao Programa de Pós-graduação em Engenharia Elétrica, da Pontifícia Universidade Católica de Minas Gerais, como requisito parcial para obtenção do título de Mestre em Engenharia Elétrica. Orientador: Carlos Augusto Paiva da Silva Martins Belo Horizonte 2003 Henrique Cota de Freitas Proposta e Desenvolvimento de um Processador de Rede com Chave Crossbar Reconfigurável Dissertação apresentada ao Programa de Pós-graduação em Engenharia Elétrica, da Pontifícia Universidade Católica de Minas Gerais, como requisito parcial para obtenção do título de Mestre em Engenharia Elétrica. Belo Horizonte, 2003. _______________________________________________________ Prof. Dr. Carlos Augusto Paiva da Silva Martins (Orientador) Pontifícia Universidade Católica de Minas Gerais – PUC Minas _______________________________________________________ Prof. Dr. Edward David Moreno Ordonez Fundação de Ensino Eurípides Soares da Rocha – FEESR-SP _______________________________________________________ Prof. Dr. Pyramo Pires da Costa Júnior Pontifícia Universidade Católica de Minas Gerais – PUC Minas I DEDICATÓRIA Dedico a Deus que me iluminou em todos os momentos. Aos meus pais Walter e Marlene que me deram toda a estrutura, confiança e sempre acreditaram nos meus objetivos. Ao meu irmão Túlio que sabe valorizar as pequenas e grandes conquistas. A minha esposa Silvana que acreditou na vida durante o mestrado. Aos meus tios e tias que sempre me incentivaram nos estudos. Aos meus avôs e avós que estão presentes em meu coração. II AGRADECIMENTOS Primeiramente agradeço a Deus por ter me dado saúde e força para superar os obstáculos, e idéias para convencer minha esposa de que existe vida durante o mestrado. Aos meus pais por terem me ensinado o valor do estudo. Ao meu orientador Prof. Dr. Carlos Augusto Paiva da Silva Martins pela oportunidade de trabalho em conjunto e pelas horas dedicadas ao incentivo da pesquisa e na busca de resultados. Aos colegas do Grupo de Sistemas Digitais e Computacionais (GSDC), em especial Amanda Regina Mascarenhas Diniz e Luís Fabrício Wanderley Góes pelo apoio e troca de idéias. Ao Programa de Pós-graduação em Engenharia Elétrica (PPGEE), em especial Maria Isabel Siqueira pela atenção, paciência e disponibilidade. Ao DATAPUC Processamento de Dados pela flexibilidade de horas, que foi essencial para realização do mestrado. Aos colegas da Assessoria de Suporte Tecnológico pelo apoio e incentivo. III RESUMO O aumento de desempenho e flexibilidade dos equipamentos de rede é uma exigência que cresce a cada dia, decorrente do grande uso dos meios de comunicação de dados, principalmente da Internet. Por este motivo, nos últimos anos, as pesquisas envolvendo os processadores destes equipamentos têm se tornado freqüentes nas universidades e indústrias. Em meados da década de 90, a indústria americana desenvolveu um novo segmento de processadores dedicados chamados de “Processadores de Rede”. As principais características destes processadores são relativas aos requerimentos e soluções ligadas ao desempenho e à qualidade de serviço (QoS) garantindo e efetivando a comunicação entre os diversos nós de uma rede de comunicação de dados. O principal objetivo da nossa proposta nesta dissertação é apresentar o desenvolvimento de um processador de rede conceitual que possui em sua arquitetura uma chave crossbar reconfigurável para aumento de desempenho e flexibilidade no chaveamento de pacotes de dados e na implementação dinâmica de topologias. Seguindo a evolução das arquiteturas de processadores de propósito geral, apresentamos inicialmente o desenvolvimento de um processador de rede CISC (Complex Instruction Set Computing) e o seu simulador (NPSIM – Network Processor Simulator) de arquitetura e conjunto de instruções. Sendo assim, o próximo passo foi o desenvolvimento de um processador de rede RISC (Reduced Instruction Set Computing) considerando como características mais importantes nesta nova versão, a unidade de comunicação dedicada e principalmente a chave crossbar reconfigurável. Os principais resultados desta dissertação são as propostas de arquiteturas e as análises de desempenho do processador de rede CISC comparado com um GPP (General-purpose processor) conceitual, do processador de rede RISC comparado com o processador de rede CISC, a chave crossbar reconfigurável para implementação dinâmica de topologias, uma análise do aumento de sua flexibilidade baseada em modelagem de grafos e sua simulação comportamental usando ambiente de desenvolvimento de circuitos digitais em VHDL (VHSIC Hardware Description Language). Portanto, apresentamos arquiteturas de processadores de rede (CISC e RISC) com chave crossbar reconfigurável, considerados também System-on-Chip (SoC), que obtiveram ganho de desempenho e flexibilidade através dos modelos matemáticos e das simulações comportamentais realizadas em comparação com outros modelos conceituais. IV ABSTRACT The Internet and other data communication systems require high performance and good flexibility in their network equipments. Therefore in the latest years, some researches about dedicated processors for those equipments emerge in universities and companies. During the last decade, the American companies developed a new segment of dedicated processors called Network Processors. The main features of those processors are: performance and flexibility to solve quality-of-service (QoS) requirements in data communication network. The main objective of this master’s thesis is to present the development of a conceptual network processor with reconfigurable crossbar switch for increasing the performance, the flexibility and the data switching. Based on the architecture evolution of general-purpose processors, we initially present a CISC (Complex Instruction Set Computing) design for the network processor, with the architecture and instruction set simulation tool NPSIM (Network Processor Simulator). Afterwards, we present a RISC (Reduced Instruction Set Computing) design for the network processor, considering its dedicated communication unit and its reconfigurable crossbar switch as important features for this new version. The main results are: mathematic performance analysis between CISC network processor proposal and a conceptual general-purpose processor; mathematic performance analysis between the two network processor proposals (RISC and CISC); the increase of flexibility of reconfigurable crossbar switch based on graph modeling and the behavior simulation using VHDL (VHSIC Hardware Description Language) digital circuit development environment. Thus, we present two network processor architectures (CISC and RISC) with a reconfigurable crossbar switch as a System-on-Chip (SoC) proposal, that got a performance speedup in comparison to other conceptual models, based on our behavior simulations and mathematic models. V SUMÁRIO DEDICATÓRIA.......................................................................................................................... I AGRADECIMENTOS ..............................................................................................................II RESUMO.................................................................................................................................. III ABSTRACT.............................................................................................................................. IV SUMÁRIO .................................................................................................................................. V LISTA DE FIGURAS.............................................................................................................VII LISTA DE TABELAS ............................................................................................................. IX SIGLAS....................................................................................................................................... X 1 – INTRODUÇÃO.....................................................................................................................1 1.1 – CONTEXTO....................................................................................................................1 1.2 – OBJETIVOS ....................................................................................................................3 1.2.1 – Objetivos Principais .................................................................................................3 1.2.2 – Objetivos Intermediários ..........................................................................................3 1.2.3 – Metas principais .......................................................................................................4 1.3 – IMPORTÂNCIA E RELEVÂNCIA................................................................................5 1.4 – MOTIVAÇÕES ...............................................................................................................6 1.5 – ESCOPO ..........................................................................................................................7 2 – ESTADO DA ARTE .............................................................................................................8 2.1 – REDES DE INTERCONEXÃO DE DADOS .................................................................8 2.1.1 – Chaveamento de Pacotes de Dados..........................................................................8 2.1.2 – Roteamento de Mensagens......................................................................................12 2.1.3 – Teoria de Grafos Aplicada a Modelagem de Redes de Interconexão ....................14 2.2 – PROCESSADORES DE REDE ....................................................................................16 2.2.1 – Avanço Histórico e Tecnológico.............................................................................16 2.2.2 – Arquitetura de Referência de um Processador de Rede .........................................17 2.2.3 – Funcionamento Básico de um Processador de Rede..............................................20 2.3 – CONCEITOS DE COMPUTAÇÃO RECONFIGURÁVEL ........................................22 2.3.1 – Linguagens de Descrição de Hardware .................................................................23 2.3.2 – Dispositivos Programáveis .....................................................................................24 2.4 – TRABALHOS CORRELATOS ....................................................................................26 2.4.1 – Pesquisas Acadêmicas ............................................................................................27 2.4.2 – Pesquisas em Indústrias .........................................................................................31 2.4.3 – Eventos Relacionados .............................................................................................34 3 – MATERIAIS E MÉTODO ................................................................................................36 3.1 – MATERIAIS..................................................................................................................36 3.2 – MÉTODO ......................................................................................................................36 VI 4 – PROPOSTA DE UM PROCESSADOR DE REDE RECONFIGURÁVEL .................39 4.1 – ARQUITETURA DO PROCESSADOR DE REDE.....................................................39 4.1.1 – Arquitetura e Conjunto de Instruções CISC ...........................................................40 4.1.2 – Arquitetura e Conjunto de Instruções RISC ...........................................................44 4.1.3 – Unidade de Comunicação Dedicada e Reconfigurável (UCDR) ...........................49 4.2 – ARQUITETURA DA CHAVE CROSSBAR RECONFIGURÁVEL ..........................50 4.2.1 – Chave Crossbar Reconfigurável de 1 bit................................................................52 4.2.2 – Chave Crossbar Reconfigurável de 2 bits ..............................................................54 5 – RESULTADOS ...................................................................................................................57 5.1 – ANÁLISE DE DESEMPENHO DAS ARQUITETURAS E DOS CONJUNTOS DE INSTRUÇÕES........................................................................................................................57 5.1.1 – Análise de Desempenho do RCNP em Relação a um GPP Conceitual..................57 5.1.2 – Análise de Desempenho do R2NP em Relação ao RCNP ......................................61 5.1.3 – Análise de Desempenho usando a Chave Crossbar Reconfigurável......................68 5.2 – ANÁLISE DA IMPLEMENTAÇÃO DINÂMICA DE TOPOLOGIAS USANDO TEORIA DE GRAFOS...........................................................................................................70 5.3 – VERIFICAÇÃO COMPORTAMENTAL DA CROSSBAR RECONFIGURÁVEL...75 5.3.1 – Simulação em VHDL da Chave Crossbar Tradicional ..........................................75 5.3.2 – Simulação em VHDL da Chave Crossbar Reconfigurável de 1 bit........................78 5.3.3 – Simulação em VHDL da Chave Crossbar Reconfigurável de 2 bits ......................81 6 – CONCLUSÕES...................................................................................................................86 7 – REFERÊNCIAS BIBLIOGRÁFICAS.............................................................................91 8 – BIBLIOGRAFIA SUGERIDA ........................................................................................104 9 – ANEXOS............................................................................................................................105 VII LISTA DE FIGURAS Figura 1 – Exemplos de topologias regulares [De Rose 2001].....................................................9 Figura 2 – Exemplos de redes estáticas e dinâmicas [De Rose 2001]..........................................9 Figura 3 – Classificação de switching fabrics ............................................................................10 Figura 4 – Chave crossbar tradicional........................................................................................11 Figura 5 – Rede Banyan [De Rose 2001] ...................................................................................12 Figura 6 – Arquitetura básica de um roteador ............................................................................13 Figura 7 – Topologia de rede modelada em grafo ......................................................................15 Figura 8 – Estrutura da arquitetura de referência de um processador de rede............................19 Figura 9 – Exemplo de um SoC..................................................................................................20 Figura 10 – Fluxo de pacotes......................................................................................................21 Figura 11 – Arquitetura de um FPGA [Martins 2003, 2002] .....................................................25 Figura 12 – Módulo de interface principal do NPSIM ...............................................................40 Figura 13 – Arquitetura do RCNP apresentada módulo de interface do NPSIM .......................41 Figura 14 – Descrição de parte da arquitetura do RCNP no módulo de interface do NPSIM ...42 Figura 15 – Conjunto de instruções no módulo de interface do NPSIM....................................42 Figura 16 – Descrição das instruções no módulo de interface do NPSIM .................................43 Figura 17 – Formato das instruções do R2NP ............................................................................44 Figura 18 – Estágios de pipeline do R2NP .................................................................................46 Figura 19 – Hierarquia de memória (visão da saída de dados)...................................................47 Figura 20 – Arquitetura do R2NP...............................................................................................48 Figura 21 – Arquitetura da UCDR..............................................................................................49 Figura 22 – Bloco da chave crossbar reconfigurável .................................................................51 Figura 23 – Arquitetura da chave crossbar de 1 bit ...................................................................52 Figura 24 – Topologia implementada usando chave crossbar de 1 bit ......................................53 Figura 25 – Arquitetura da chave crossbar de 2 bits..................................................................55 Figura 26 – Topologia implementada usando chave crossbar de 2 bits.....................................56 Figura 27 – Topologia hipercubo ............................................................................................58 Figura 28 – Topologia árvore ............................................................................................58 Figura 29 – Acessos à memória..................................................................................................60 Figura 30 – Instruções de entrada e saída ...................................................................................60 Figura 31 – Topologia anel unidirecional...................................................................................62 Figura 32 – Topologia hipercubo................................................................................................63 VIII Figura 33 – Topologia árvore balanceada...................................................................................64 Figura 34 – Topologia árvore balanceada por bits de reconfiguração........................................69 Figura 35 – Topologias dinâmicas..............................................................................................71 Figura 36 – Arestas do grafo com peso (latência em ms)...........................................................73 Figura 37 – Tabelas de roteamento para o nó 5..........................................................................74 Figura 38 – Ambiente de projeto para chave crossbar tradicional - ISE WebPack ...................76 Figura 39 – Conexões simuladas em VHDL (chave crossbar tradicional) ................................77 Figura 40 – Resultado de simulação da chave crossbar tradicional...........................................78 Figura 41 – Ambiente de projeto da chave crossbar de 1 bit - ISE WebPack ...........................79 Figura 42 – Topologias simuladas em VHDL (chave crossbar de 1 bit) ...................................80 Figura 43 – Resultados da simulação da chave crossbar de 1 bit ..............................................81 Figura 44 – Ambiente de projeto da chave crossbar de 2 bits - ISE WebPack..........................82 Figura 45 – Topologias simuladas em VHDL (chave crossbar de 2 bits) .................................83 Figura 46 – Resultados de simulação da chave crossbar de 2 bits.............................................84 IX LISTA DE TABELAS Tabela 1 – Instruções do R2NP ..................................................................................................45 Tabela 2 – Descrição das instruções de rede do R2NP...............................................................45 Tabela 3 – Programa assembly para topologia hipercubo (ISA RCNP).....................................58 Tabela 4 – Programa assembly para topologia árvore (ISA RCNP)...........................................59 Tabela 5 – Assembly anel unidirecional......................................................................................62 Tabela 6 – Assembly hipercubo ..................................................................................................63 Tabela 7 – Assembly árvore balanceada .....................................................................................64 Tabela 8 – Comparativo de desempenho....................................................................................66 Tabela 9 – Quantidade de instruções (sem chave crossbar).......................................................67 Tabela 10 – Quantidade de instruções (com chave crossbar) ....................................................70 Tabela 11 – Bits dos nós da chave crossbar de 2 bits ................................................................82 X SIGLAS AHDL – Altera Hardware Description Language ASIC – Application Specific Integrated Circuit ASIP – Application Specific Instruction Set Processor CISC – Complex Instruction Set Computing CLB – Configurable Logic Block DMA – Direct Memory Access E/S – Entrada/Saída Fc – Freqüência do clock FPGA – Field Programmable Gate Array Gd – Ganho de desempenho GPP – General-purpose Processor GSDC – Grupo de Sistemas Digitais e Computacionais HDL – Hardware Description Language HPCA – High Performance Computer Architecture I/O – Input/Output ICCAD – International Conference on Computer-Aided Design ICCD – International Conference on Computer Design ICS – International Conference on Supercomputing ICCCN – International Conference on Computer Communication Network IOB – Input Output Block ISA – Instruction Set Architecture ISCA – International Symposium on Computer Architecture ISCAS – International Symposium on Circuit and Systems JHDL – Java Hardware Description Language LCN – Conference on Local Computer Networks MICRO – International Symposium on Microarchitecture Ncc – Número de ciclos de clock do programa Nip – Número de instruções do programa Nmci – Número médio de ciclos por instrução NoC – Network-on-Chip NP – Network Processor NP – Workshop on Network Processor and Applications XI NPC – Network Processors Conference NPSIM – Network Processor Simulator PCI – Peripheral Component Interconnect PPGEE – Programa de Pós-graduação em Engenharia Elétrica QoS – Quality-of-Service R2NP – Reconfigurable RISC Network Processor RCNP – Reconfigurable CISC Network Processor RISC – Reduced Instruction Set Computing SAN – System Area Network SBAC-PAD – Symposium on Computer Architecture and High Performance Processing SBCCI – Symposium on Integrated Circuits and Systems Design SBRC – Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos SoC – System-on-Chip TDM – Time Division Multiplex Tp – Tempo de processador UCDR – Unidade de Comunicação Dedicada e Reconfigurável VHDL – VHSIC Hardware Description Language VHSIC – Very High Speed Integrated Circuit WCAE – Workshop on Computer Architecture Education WSCAD – Workshop em Sistemas Computacionais de Alto Desempenho 1 1 – INTRODUÇÃO O objetivo principal desta dissertação é apresentar a proposta, desenvolvimento e os resultados principais de verificação de um processador de rede com chave crossbar reconfigurável [Freitas 2003a, 2002b, 2001]. Portanto, nesta introdução apresentamos: contexto, objetivos, metas, importância, relevância, motivações e escopo. A computação reconfigurável [Martins 2003] é um conceito importante usado na proposta e desenvolvimento do processador de rede, principalmente na chave crossbar reconfigurável, sendo apresentada no tópico 2.3 do estado da arte. 1.1 – CONTEXTO Os primeiros processadores de rede surgiram no final da década de 90 [Intel 2000] [Motorola 1999]. Sua principal aplicação era em equipamentos de rede [ADC 2002] [Intel 2001] [Dasan 2001] tais como os roteadores [Cisco 2002, 2001a, 2001b, 2001c, 2001d, 2001e, 2000a, 2000b, 2000c, 1998], substituindo os processadores GPPs (General-purpose processor) [Patterson 2000], largamente utilizados. Com isso, foi possível aumentar consideravelmente o desempenho [Menascé 2003] destes equipamentos, já que os processadores GPPs ganhavam em flexibilidade mais perdiam em desempenho. Era fundamental o desenvolvimento rápido dos processadores de rede, uma vez que a Internet, principal rede de comunicação de dados do mundo, necessitava de maior velocidade e vazão de dados. Os equipamentos de rede, por estarem em pontos de concentração, são considerados pontos de gargalo e por isso são constantemente alvos de análise e avaliação para melhoria de desempenho. Durante o processo de desenvolvimento dos processadores de rede, algumas empresas se uniram, são elas: Lucent e Agere [Agere 2001a, 2001c, 2001d], Motorola e C-Port [C-Port 2002, 2001] [Motorola 1999], Sitera e Vitesse [Vitesse 2002]. Além destas empresas, podemos citar outras: Intel [Intel 2000], EZChip [EZChip 2002], IBM [Allen 2002] [IBM 2002] e Chameleon [Chameleon 2000]. A Chameleon foi a primeira empresa a lançar no mercado (no ano 2000), um processador de rede com um bloco reconfigurável em tempo de execução. Algumas universidades iniciaram pesquisas sobre processadores de rede por volta do ano 2000. Nos Estados Unidos dois grupos fortes são das seguintes universidades: Washington University in St. Louis e University of Washington. Por iniciativa dos professores Mark Franklin e Patrick Crowley foi criado em 2002 o Workshop on Network Processor que é realizado em conjunto com o HPCA (High Performance Computer Architecture). No Brasil, 2 após busca no sistema Lattes e em Anais e Proceedings de eventos em áreas relacionadas, foi possível constatar que existe apenas mais um grupo de pesquisa envolvido diretamente com processadores de rede, localizado na Fundação de Ensino Eurípides Soares da Rocha (Marília, São Paulo), sob orientação do professor Dr. Edward David Moreno Ordonez. Por esta se tratar de uma pesquisa recente (iniciada em 2002), não encontramos publicações. Os processadores de rede [FutureSoft 2003] [Crowley 2002a] [Stenberg 2002] [Agere 2001b, 2001e] [Shah 2001] [Kohler 2000] surgiram com o objetivo de aumentar o desempenho e a qualidade de serviço (QoS: Quality of Service) [Striegel 2002] [Blum 2000] [Aurrecoechea 1998], diminuindo a latência, o tempo de processamento e aumentando a vazão de pacotes de dados referentes às redes de comunicação de dados. Desta forma, estes processadores foram projetados utilizando-se modelos de arquiteturas como ASIP (Application Specific Instruction Set Processor) [Kästner 2003] [Hoffmann 2001] e SoC (System-on-Chip) [Kochte 2003] [Kalte 2002] [Liang 2000] [Mensch 2000] como forma de agregar ao modelo RISC (Reduced Instruction Set Computing) [Patterson 2000] maior desempenho computacional. Estes processadores possuem o nível ISA (Instruction Set Architecture) dedicado para operações de rede. Sendo assim, o conjunto de instruções e a arquitetura dos processadores de rede são específicos para realizar operações típicas de redes de comunicação de dados, como por exemplo, o roteamento [Tanenbaum 2003]. Os processadores de rede além de melhorar a qualidade de serviço, também estabelecem a comunicação entre diversos equipamentos de rede e hosts (computadores conectados à Internet) presentes em uma rede de comunicação de dados. Por este motivo são utilizados blocos de chaveamento de dados externos (switching fabrics) [Ahmadi 1989] [Anderson 1975] capazes de estabelecer o caminho pelo qual os dados deverão seguir. Além da nossa proposta de arquitetura de processador de rede, esta dissertação apresenta também a arquitetura e os resultados obtidos através de análises matemáticas e simulações de uma chave crossbar reconfigurável para a unidade de chaveamento de dados do nosso processador conceito. Apesar dos processadores de rede comerciais utilizarem switching fabrics como blocos externos ao processador, no nosso caso, estaremos inserindo este bloco dentro do próprio processador, tornando o nosso projeto de processador de rede também um SoC (System-on-Chip). Os problemas / perguntas que buscamos resolver são os seguintes: 1. Qual o tipo de arquitetura que permitiria um aumento de desempenho para o processador de rede? 3 2. Qual conjunto de instruções é mais adequado para o processador de rede proposto? 3. Qual tipo de switching fabric é mais adequado para a nossa proposta? 4. Como aumentar a flexibilidade e o desempenho em uma chave crossbar? 5. Como implementar topologias dinamicamente? 6. Como e onde aplicar a computação reconfigurável [Martins 2003] em um processador de rede? 1.2 – OBJETIVOS Neste tópico apresentamos os principais objetivos e metas desta dissertação. 1.2.1 – Objetivos Principais O objetivo principal desta dissertação é apresentar a proposta e desenvolvimento de um processador de rede com chave crossbar reconfigurável que em tempo de execução possa implementar dinamicamente diferentes tipos de topologias e chavear pacotes de dados aumentando o desempenho e a flexibilidade em uma rede de comunicação de dados. Sendo assim, estaremos agregando ao processador de rede o conceito System-on-Chip, já que a chave crossbar reconfigurável (juntamente com outros blocos) faz parte da arquitetura do processador de rede proposto. Esta chave crossbar, por ser o ponto de conexões entre entradas e saídas, tem por objetivo diminuir o tempo de resposta, diminuir a latência e aumentar a vazão de dados, implementando dinamicamente topologias de interconexão e otimizando o processamento em uma rede de comunicação de dados. 1.2.2 – Objetivos Intermediários Os objetivos intermediários que dão suporte ao projeto e desenvolvimento do processador de rede com chave crossbar reconfigurável são [Freitas 2003a, 2002a, 2002b, 2002c, 2001, 2000a, 2000b]: Projetar a arquitetura dedicada do processador de rede CISC; Projetar o conjunto de instruções dedicadas de rede para o processador de rede CISC; 4 Desenvolver um simulador funcional para o processador de rede CISC; Analisar matematicamente o desempenho entre o processador de rede CISC e um processador de propósito geral conceitual com base nos conjuntos de instruções; Projetar a arquitetura dedicada de processador de rede RISC; Projetar o conjunto de instruções dedicadas de rede para o processador de rede RISC; Analisar matematicamente o desempenho dos processadores de rede projetados (CISC x RISC) com base nos dois conjuntos de instruções; Projetar a arquitetura da Unidade de Comunicação Dedicada e Reconfigurável (UCDR), na qual a chave crossbar reconfigurável se encontra; Projetar as arquiteturas da chave crossbar reconfigurável (versões de 1 e 2 bits); Analisar matematicamente o desempenho dos processadores projetados (CISC x RISC) usando a chave crossbar reconfigurável; Analisar o modelo em grafos da implementação dinâmica de topologias; Implementar um código para a chave crossbar reconfigurável em VHDL (VHSIC Hardware Description Language) para simulação e verificação comportamental do chaveamento de pacotes de dados e implementação dinâmica de topologias. Estes objetivos intermediários foram alcançados e estão apresentados nos capítulos 4 e 5. A Unidade de Comunicação Dedicada e Reconfigurável (UCDR) é composta por um conjunto de blocos dedicados para comunicação de dados, dentre os quais se destaca a chave crossbar reconfigurável. Esta unidade será descrita com mais detalhes no capítulo 4. 1.2.3 – Metas principais As metas principais que foram atingidas são as seguintes: Arquiteturas de processadores de rede CISC e RISC reconfiguráveis; Simulador do processador de rede CISC proposto; Arquitetura da Unidade de Comunicação Dedicada e Reconfigurável (UCDR); Arquiteturas das chaves crossbar reconfiguráveis (versões de 1 e 2 bits); Códigos em VHDL da chave crossbar reconfigurável; Documentação didática em formato de curso [Freitas 2003b] para sobre os processadores de rede; Página web em língua portuguesa e inglesa para divulgação da pesquisa; Artigos para divulgação dos resultados de nossa pesquisa científica. 5 1.3 – IMPORTÂNCIA E RELEVÂNCIA Os processadores de rede são tecnologia recente na busca de alto desempenho em equipamentos de rede. Estes equipamentos requerem um excelente desempenho no processamento de pacotes de dados e por este motivo são considerados pontos de concentração ou gargalo nas redes de comunicação de dados. A utilização de processadores de rede em alternativa aos processadores de propósito geral aumentaram consideravelmente o desempenho destes equipamentos [Cisco 2002]. Apesar de estarmos tratando de forma mais específica a Internet, nada impede a aplicação destes processadores em outros tipos de redes tais como: System Area Network (SAN) e Wireless (redes sem fio). Como citado em [Ulmer 2002], existem pesquisas sendo realizadas para aumentar a qualidade de serviço em redes SAN e os processadores de rede são uma boa opção para este tipo de exigência. Em [Salefski 2001] é citada a aplicação do processador de rede CS2000 da Chameleon em redes sem fio. A realização de pesquisas de aplicações de processadores de rede em sistemas de redes sem fio, buscando maior desempenho e qualidade de serviço também é um fator relevante na obtenção de melhores resultados de processamento. Podemos citar também a computação em aglomerados (clusters) [Buyya 1999] ou grades (grids) [Dantas 2003] como um segmento importante para novas pesquisas [Liljeqvist 2002] usando processadores de rede. Como as computações em cluster e grid requerem uma rede de interconexão muito eficaz, é também necessária a utilização de equipamentos e processadores eficazes para que a comunicação se faça em tempo hábil. Desta forma, a aplicação dos processadores de rede pode ser extremamente interessante para obtenção de resultados de desempenho mais satisfatórios. Um fator relevante se refere à computação reconfigurável [Compton 2002] [Martins 2003, 2002], utilizado também pelo CS2000 [Chameleon 2000]. A utilização deste modelo de computação possibilita alterar a arquitetura do hardware ou software em tempo de execução. Esta é uma das principais características de nossa proposta: um processador de rede com chave crossbar reconfigurável. Desta forma, é possível aumentar a flexibilidade do processador sem perder desempenho, que é uma característica importante para processadores ASIPs ou SoCs. A grande vantagem de se utilizar reconfiguração em nossa proposta, é possibilitar a utilização do processador em diversos tipos de equipamentos ou de redes de comunicação, apenas alterando os bits de reconfiguração ou programa de gerenciamento, para que dinamicamente possa existir uma reconfiguração da arquitetura da chave crossbar em relação 6 às características e necessidades de funcionamento da rede. Ou seja, se ganha em flexibilidade sem perder o desempenho. Um dos fatores mais relevantes desta dissertação é o fato da nossa proposta de processador de rede possuir uma chave crossbar reconfigurável. Não encontramos nenhum trabalho correlato que utilizasse a mesma idéia de arquitetura. Os equipamentos de rede são considerados gargalos, e os switching fabrics são responsáveis por efetivar a conexão entre as entradas e saídas da rede de comunicação de dados. Sendo assim, incluímos a arquitetura da chave crossbar reconfigurável no próprio processador de rede (SoC) para aumentar a flexibilidade e desempenho da comutação de pacotes e saída de dados. 1.4 – MOTIVAÇÕES Neste tópico descrevemos nossas motivações com base em um relato histórico. Durante a graduação houve um interesse muito grande em agregar nosso conhecimento de arquitetura de processadores em um ambiente de redes de comunicação de dados. Como isto aconteceu no segundo semestre de 1999, as pesquisas nas universidades sobre processadores de rede ainda eram muito poucas e não encontrávamos artigos disponíveis relacionados ao assunto. Ou seja, tínhamos começado nossa pesquisa sem muitas informações sobre o estado da arte. Desta forma, decidimos dedicar nossas atenções ao projeto de um processador dedicado para roteamento [Freitas 2000a, 2000b]. Em meados do ano 2000 encontramos os primeiros artigos [Crowley 2000] [Wolf 2000a, 2000b, 2000c, 2000d] relacionados com os processadores de rede. Percebemos que nossa proposta se enquadrava nas descrições teóricas de um processador de rede e decidimos mudar o enfoque da pesquisa. Em 2001 publicamos o primeiro artigo tendo como objetivo uma proposta de processador de rede. Desde o início procurávamos agregar computação reconfigurável ao nosso projeto de processador de rede para aumento de desempenho e flexibilidade, mas foi no ano de 2001 que decidimos que a chave crossbar da nossa proposta inicial (CISC) seria reconfigurável. Porém, não encontrávamos documentos que relacionavam processadores de rede e computação reconfigurável. No ano de 2002 descobrimos que parte das documentações disponíveis se tratava de processadores de comunicação reconfiguráveis [Chameleon 2000]. No mesmo ano surgiram as primeiras publicações internacionais [Memik 2002] [Troxel 2002] [Iliopoulos 2000], disponibilizadas na Internet, usando o termo processador de rede e reconfiguração. Estas 7 publicações nos deixaram bastante satisfeitos e nos motivaram cada vez mais, a buscar novos resultados aqui no Brasil. Atualmente nossa principal motivação é desenvolver e implementar um processador de rede com chave crossbar reconfigurável como unidade de chaveamento de pacotes e implementações dinâmicas de topologias. Segundo nossas avaliações sobre as outras pesquisas correlatas (tópico 2.4), esta seria uma proposta ainda inédita. Além de estarmos motivados em projetar uma arquitetura reconfigurável para a chave crossbar, acreditamos na possibilidade do System-on-Chip (SoC) reconfigurável ser uma boa opção para os projetos de processadores de rede. Ou seja, a flexibilidade de operação, agregada a um aumento da vazão de dados e diminuição da latência é um fator motivador para o projeto de uma arquitetura de processador de rede usando conceitos de computação reconfigurável. 1.5 – ESCOPO A nossa pesquisa se limita em propor e desenvolver uma arquitetura de processador de rede reconfigurável. Já possuímos uma quantidade razoável de produção científica que dá suporte aos nossos resultados e pretendemos atingir até meados de 2004 os resultados finais do projeto inicial. O foco principal da dissertação é a proposta e desenvolvimento de uma arquitetura de processador de rede com uma chave crossbar reconfigurável interna à sua arquitetura, tornando o projeto e implementação final da proposta, um System-on-Chip (SoC) conforme descrevemos no tópico 2.2.2. Iremos nos limitar a projetar as arquiteturas principais (processador, UCDR e crossbar), analisar matematicamente alguns parâmetros e simular (através de VHDL) o comportamento da chave crossbar reconfigurável conceitual. No tópico Materiais e Métodos tratamos das etapas prioritárias para conclusão do mestrado e definimos como etapa final para a dissertação a simulação comportamental da chave crossbar reconfigurável. 8 2 – ESTADO DA ARTE Neste capítulo apresentamos uma síntese do estado da arte relacionado aos processadores de rede. Os seguintes tópicos, que julgamos os mais importantes, serão apresentados: Redes de Interconexão de Dados, Processadores de Rede, Computação Reconfigurável e Trabalhos Correlatos. 2.1 – REDES DE INTERCONEXÃO DE DADOS Como nossa proposta nesta dissertação é apresentar arquiteturas, resultados matemáticos e de simulação comportamental do processador de rede com chave crossbar reconfigurável, é necessário que se faça uma revisão de alguns conceitos de redes de comunicação e interconexão de dados [Tanenbaum 2003] [Dantas 2002] [Rocha 2002] [De Rose 2001] [Coulouris 2000] [Comer 1995] [Ahmadi 1989] [Anderson 1975], já que através destas é que são feitos os chaveamentos de pacotes e roteamento de dados. Portanto, descrevemos o chaveamento de pacotes de dados, tipos de topologias, classificação das redes de interconexão, roteamento de mensagens e uma modelagem em grafos [Netto 2001] [Calvert 1997, 1992] para redes de interconexão. 2.1.1 – Chaveamento de Pacotes de Dados O chaveamento de pacotes de dados em uma rede é feito através de redes de interconexão. Porém, cada uma destas redes pode ter um formato diferente, ou uma topologia [De Rose 2001] diferente. A topologia é o formato como os diversos equipamentos de rede ou hosts estão interligados em uma rede de comunicação de dados. Portanto, existem topologias em que o formato de interligação segue um padrão de ligação (topologia regular) e topologias onde não é possível definir um formato ou um padrão de ligação (topologias irregulares). A figura 1 ilustra algumas possíveis variações de topologias regulares. 9 Figura 1 – Exemplos de topologias regulares [De Rose 2001] As redes de interconexão são divididas em estáticas e dinâmicas [De Rose 2001]. Podemos observar através da figura 2 alguns exemplos desta divisão tomando como referência os nomes dados às topologias. Figura 2 – Exemplos de redes estáticas e dinâmicas [De Rose 2001] A definição destes dois tipos de redes está baseada na estrutura de interconexão (topologia) como veremos a seguir: • Redes Estáticas: Neste tipo de rede a topologia adotada oferece um caminho fixo da origem até o destino. Desta forma, podemos entender como estática a rede de interconexão onde a comunicação se faz por conexões fixas, que não mudam ao longo do tempo. 10 • Redes Dinâmicas: Ao contrário das redes estáticas, as redes dinâmicas oferecem alternativas de conexão. A topologia não possui pontos fixos de conexão. Ou seja, o caminho de comunicação não é fixo. Portanto, podemos considerar que em uma rede dinâmica as conexões são realizadas de acordo com a necessidade de comunicação ou transferência de dados. Uma rede dinâmica, onde a conexão entre dois pontos impossibilita outra conexão, que não seja destes dois pontos, é chamada de rede dinâmica bloqueante. Para o contexto de chaveamento de pacotes de dados, em específico para processadores de rede, existem unidades ou estruturas de chaveamento chamadas switching fabrics [Ahmadi 1989] [Anderson 1975]. Estas estruturas são responsáveis por estabelecer o meio (rede) de interconexão para que os pacotes processados possam ser redirecionados ou roteados. Uma das formas de apresentar a classificação dos switching fabrics está ilustrada na figura 3. Figura 3 – Classificação de switching fabrics Primeiro estágio da classificação (divisão no tempo e no espaço): Divisão no tempo: Esta classificação se refere às unidades que utilizam multiplexação de dados no tempo para alcançar o chaveamento entre entrada e saída. • Memória compartilhada: Os pacotes são guardados e analisados em memória. Este método evita a necessidade de “bufferização”, porém obriga que a velocidade da memória seja igual ao throughput (vazão) de roteamento de dados. • Meio compartilhado: Para se transmitir dados pelo barramento (figura 1) é utilizado multiplexação por divisão de tempo (TDM). O grande problema deste tipo de switching fabric é a largura de banda, uma vez que apenas uma entrada 11 pode transmitir enquanto as outras escutam até a liberação do barramento. Esta é a melhor opção para multicast e broadcast uma vez que todos os nós estão conectados ao mesmo ponto. A grande vantagem da utilização de switching fabrics por divisão no tempo é a não necessidade de pontos de cruzamento como alternativas de caminhos para transmissão de dados. Porém, uma grande desvantagem deste tipo de unidade de chaveamento é o atraso ocorrido na espera do processamento de conexões. Divisão no espaço: O chaveamento entre entradas e saídas é feito através de caminhos realizados espacialmente, através de pontos de conexão. Porém para este tipo de switching fabric existe uma separação em dois níveis de topologias de interconexão: • Nível único: São switching fabrics compostos por apenas uma unidade de chaveamento, sem que seja feita composição em cascatas. O exemplo de unidade mostrado na figura 4 é da chave crossbar. Esta unidade de chaveamento é similar a uma matriz de conexões onde cada célula é um ponto para fechamento de comunicação entre entradas e saídas. A característica de bloqueamento não existe neste nível. Porém, para a chave crossbar tradicional, uma determinada entrada só se conecta a uma saída por vez, não havendo, portanto, a simultaneidade de conexões. Ou seja, uma entrada não se conecta a várias saídas ao mesmo tempo, não realizando, por exemplo, broadcast e multicast. Figura 4 – Chave crossbar tradicional 12 • Multinível: Neste tipo de switching fabric, são utilizados vários elementos (matrizes) de chaveamento, em níveis consecutivos como forma de diminuir a ocorrência de conflitos entre conexões de pares diferentes. Um exemplo deste tipo de rede é a Banyan, mostrada na figura 5, onde cada bloco representa uma matriz de chaveamento 2x2. Figura 5 – Rede Banyan [De Rose 2001] A grande vantagem da utilização de unidades de chaveamento no espaço se refere ao desempenho devido à maior vazão de dados, uma vez que não há atraso por espera de processamento e sim uma conexão (caminho de roteamento) fechada instantaneamente. Porém a maior desvantagem se refere a grande quantidade de pontos de conexão, que podem ocasionar um alto custo e em alguns casos funções bloqueantes. 2.1.2 – Roteamento de Mensagens Conforme descrito no tópico anterior, os switching fabrics são responsáveis por estabelecer a conexão e o tráfego de dados entre portas de entrada e saída em um sistema de comunicação de dados. Eles oferecem o meio pelo qual um determinado processador, seja ele de propósito geral (GPP), ou dedicado para a aplicação de rede, possa ler o cabeçalho das mensagens e definir o melhor caminho para que os dados possam seguir. A figura 6 ilustra a arquitetura básica de um roteador [Chao 2002] [Misra 2001] [Keshav 1998] composta por portas de entrada e saída, um processador e um switching fabric. 13 Figura 6 – Arquitetura básica de um roteador • Portas de Entrada e Saída São portas de entrada e saída que atuam na camada física e tem por objetivo receber e transmitir dados. Nestas portas é feita a medida da taxa de transmissão, para evitar congestionamentos no switching fabric. • Processador O bloco Processador nada mais é do que um processador responsável pelo processamento e gerenciamento dos pacotes. Este processador pode ser de propósito geral ou dedicado (processadores de rede). O roteamento de mensagens é feito com base em dois modos de comutação de redes [Tanenbaum 2003]: i) Comutação por circuitos e ii) Comutação por pacotes. Comutação por circuitos: Neste caso, podemos fazer uma analogia com as centrais telefônicas. Quando um determinado fax disca um número, a central realiza a chamada e fecha uma conexão entre os dois pontos. Existem, neste momento, dois equipamentos conectados em um circuito físico disponível apenas para trafegar as informações referentes à transmissão e recepção de dados entre os dois pontos. Neste caso o transmissor possui a segurança de que seus dados serão recebidos pelo destinatário, uma vez que o meio oferece a garantia da conexão entre os dois. Uma das vantagens é a alta taxa de transmissão de dados e a desvantagem é o alto custo. Comutação por pacotes: A grande diferença é que neste caso não existe uma conexão disponível apenas para a comunicação de dados entre os dois pontos. O que existe é o roteamento de dados através de diversos pontos intermediários da rede até o ponto destino. Existe um compartilhamento do meio físico entre diversas comunicações. Cada host destino possui um endereço e é através deste endereço, que as máquinas são identificadas na rede. 14 Toda a transmissão de dados é dividida em pacotes. Cada pacote de dados possui um cabeçalho de informações, que contém o endereço de destino e de origem além de dados referentes ao ordenamento e seqüência dos pacotes. Desta forma quando todos os pacotes chegam ao destino, eles podem ser ordenados e interpretados. A grande vantagem deste tipo de rede é o custo e a simultaneidade de comunicações. Além do baixo custo, vários hosts podem utilizar o mesmo meio para estabelecer a comunicação. A desvantagem é o aumento da utilização do meio, causando congestionamento, aumentando o tempo de espera e diminuindo a vazão de dados da comunicação. Cada um destes modos de comutação influencia de maneira diferente no roteamento de mensagens, afeta inclusive nos protocolos utilizados e, portanto, no tipo de rede de interconexão que será utilizada. Sendo assim, podemos considerar que na comutação por circuitos, não existe rota a ser definida, ela já está pronta. Na comutação por pacotes, a rota é definida ao longo do caminho, podendo ser alterada por um agente (roteador) do sistema de acordo com as necessidades. 2.1.3 – Teoria de Grafos Aplicada a Modelagem de Redes de Interconexão Como descrito no tópico anterior uma topologia representa basicamente um formato ou um padrão de ligações existentes em uma rede de comunicação de dados. Normalmente precisamos projetar ou analisar uma topologia existente para verificar se ela atende ou não as necessidades de comunicação. Sendo assim, muitas vezes é necessário adotar alguns modelos matemáticos que facilitam na solução de alguns problemas. A teoria de grafos [Netto 2001] [Calvert 1997, 1992] é um destes modelos que melhor atende e facilita a avaliação e a análise de adequação de uma topologia para redes de comunicação de dados. É possível, por exemplo, representar em um modelo de grafo, vários parâmetros necessários para a verificação de funcionalidade da topologia adotada. A figura 7 ilustra uma topologia de rede de comunicação de dados modelada em um grafo. 15 Figura 7 – Topologia de rede modelada em grafo É possível ver que todos os parâmetros apresentados possuem um correspondente em teoria de grafos e a partir destes parâmetros é possível analisar resultados e características de um grafo que refletem diretamente em uma rede de comunicação de dados. Um grafo é composto basicamente de vértices e arestas. Os vértices são conectados através de arestas que por sua vez oferecem caminhos entre cada um dos vértices do grafo. As arestas podem possuir pesos, que refletem diretamente no custo de utilização desta aresta. Em outras palavras, se for necessário calcular o menor caminho entre dois vértices, uma aresta de peso muito alto pode não ser a melhor opção de trajeto. Utilizando teoria de grafos vários algoritmos foram e são desenvolvidos. Três exemplos famosos para cálculo do melhor caminho entre dois vértices são: • Algoritmo de Dyjkstra: O problema consiste em achar o caminho mais curto entre duas cidades quaisquer. Modelando em grafos, as cidades são os vértices, as arestas são as estradas e os pesos são considerados distâncias. [Netto 2001] • Algoritmo de Trémaux: Este algoritmo poderia ser usado por alguém perdido em um labirinto (cada bifurcação é um vértice e cada caminho uma aresta). Este algoritmo tem a característica de pesquisa em profundidade envolvendo decisões locais, sem que se tenha conhecimento de todo o grafo. [Netto 2001] • Algoritmo de Bellman-Ford: Este algoritmo também pode ser chamado de vetor de distância. As informações de distância são passadas dos vértices adjacentes (de trás para frente) até a origem, que recebe os vetores de distância. Então, o vértice origem constrói uma tabela resultante com sua distância até qualquer outro vértice do grafo. Este algoritmo é utilizado, por exemplo, em roteamentos [Tanenbaum 2003] na Internet. No entanto, para modelagem de topologias de redes dois parâmetros [Calvert 1997, 1992] importantes são descritos a seguir: 16 • Grau médio do grafo: Conforme apresentado na figura 7, um vértice possui grau 2 quando o número de arestas ou conexões também é igual a 2. Ou seja, quanto maior o grau médio do grafo, maior o número de arestas, conexões ou opções de caminhos para roteamento. Podemos calcular o grau médio de um grafo através da seguinte equação: Grau médio = (2 x quantidade de arestas) / quantidade de vértices • Diâmetro de um grafo: O diâmetro de um grafo é o maior caminho (número de saltos – arestas) entre quaisquer dois vértices de um grafo. Como o maior interesse é reduzir o número de saltos entre vértices, um grafo com diâmetro pequeno é uma opção melhor quando precisamos sair de um vértice para chegar a outro. Em um grafo onde não existe influência dos pesos das arestas (todos os pesos são iguais), o menor caminho entre dois vértices é aquele que possui um menor número de saltos ou uma menor quantidade de arestas entre eles. Com base nestes dois parâmetros, podemos concluir que um grafo completo (figura 1 – onde todos os vértices possuem arestas de ligação para todos os outros vértices) é a melhor opção, uma vez que teremos o grau máximo do grafo (valor varia – depende da quantidade de vértices) e o menor diâmetro, uma vez que o salto máximo de um vértice para outro é igual a 1. No entanto, devemos ressaltar que uma topologia completa pode possuir um maior custo e não refletir a real necessidade de um sistema de comunicação de dados. 2.2 – PROCESSADORES DE REDE Este tópico apresenta os principais conceitos sobre processadores de rede. Procuramos descrever o avanço histórico e tecnológico, a arquitetura de referência e o funcionamento básico dos processadores de rede. 2.2.1 – Avanço Histórico e Tecnológico O processador de rede nasceu da necessidade crescente de desempenho e da qualidade de serviço (QoS) [Striegel 2002] [Blum 2000] [Aurrecoechea 1998], que era exigido dos equipamentos de rede. Inicialmente utilizavam-se processadores de propósito geral (GPPs: General-purpose Processor) [Patterson 2000], depois circuitos dedicados (ASICs: Application Specific Integrated Circuit) [Kästner 2003] e por fim processadores específicos (ASIPs: Application Specific Instruction Set Processor) [Kästner 2003] de rede. As gerações de equipamentos de rede e suas principais características podem ser definidas da seguinte forma: 17 • 1a Geração o Processador de Propósito Geral (GPP): Baseado na utilização de softwares para definição de comportamento. Processador flexível para diversas aplicações, porém para aplicações de rede são limitados em funcionalidades e desempenho. • 2a Geração o Circuito de aplicação específica (ASIC): Circuitos projetados para executar determinadas funções específicas. Não utilizam softwares, são bastante rápidos e o grande problema é a flexibilidade, uma vez que o ASIC é projetado apenas para uma aplicação. • 3a Geração o Processadores de Rede: Os processadores de rede possuem microarquitetura dedicada para trabalhar em redes de comunicação de dados. O conjunto de instruções também é específico. Por se tratar de processadores, eles são flexíveis e por serem específicos também possuem bom desempenho. Sendo assim, podemos considerar um processador de rede como um processador de aplicação específica (ASIP: Application Specific Instruction Set Processor). Vantagens: União de flexibilidade e desempenho devido, por exemplo, ao projeto dedicado do conjunto de instruções e da arquitetura. Desvantagens: É mais lento do que um ASIC e menos flexível do que um GPP. 2.2.2 – Arquitetura de Referência de um Processador de Rede Existem dois modelos para projeto de processadores: CISC e RISC [Patterson 2000] [Ricarte 1999]. O primeiro utilizado no início da história de desenvolvimento de processadores é o CISC (Complex Instruction Set Computing). Sua principal característica é o conjunto de instruções com formatos variados. Ou seja, uma única instrução do tipo ADD pode acessar registradores e memória, e utilizar vários modos de endereçamento. Desta forma, cada instrução possuía uma grande amplitude nos modos de endereçamento. No entanto, com o avanço tecnológico, constatou-se que apenas uma pequena fração do código de programa necessitava acessar a memória e como sabemos, acessar a memória é mais 18 demorado do que acessar registradores. Baseado nesta constatação foi projetado um novo modelo de processadores RISC (Reduced Instruction Set Computing). Neste novo modelo de processador, o objetivo é reduzir o número de instruções que acessam a memória, tornando as manipulações do processador concentradas em registradores. Desta forma, apenas instruções do tipo load e store podem acessar a memória, o que não acontecia no modelo CISC onde uma instrução de soma, como ADD, também podia realizar este acesso. De acordo com o estudo feito por nós, os processadores de rede existentes no mercado são RISC. Estes processadores possuem um pequeno número de ciclos para execução de cada instrução, menor quantidade de instruções que acessam a memória, sendo mais eficientes que os processadores CISC. Existem duas características que podem diferenciar os processadores de rede: • Utilização apenas de tecnologia RISC com sistemas complexos de paralelismo. • Baseado em tecnologia RISC e ASIC. O ASIC acelera o processamento pelo hardware, porém pode trazer inflexibilidade. Em um sistema computacional complexo a utilização de todas estas tecnologias normalmente é feita. Porém, em situações mais específicas, deve-se analisar as variáveis, desempenho, flexibilidade e custo para a escolha da melhor tecnologia. A arquitetura de referência derivada da análise de diversos trabalhos [FutureSoft 2003] [Crowley 2002a] [Stenberg 2002] [Agere 2001b, 2001e] [Shah 2001] [Kohler 2000] é apresentada na figura 8 com o intuito de definir uma base para o estudo, análise e projeto dos processadores de rede. Os principais blocos lógicos de um processador de rede são: • Um ou vários processadores RISC; • Co-processadores ou engines; • ASICs (programáveis ou não) para operações de rede; • Interface de memória de alto desempenho; • Interface de E/S de alto desempenho; • Interface dedicada para comunicação entre processadores de uma mesma família; • Interface para processadores de propósito geral. 19 Figura 8 – Estrutura da arquitetura de referência de um processador de rede A figura 8 ilustra uma arquitetura de referência de processador de rede com alguns blocos construtivos. Estes blocos não necessariamente aparecem nas arquiteturas de todos os processadores de rede. Com base na figura 8 podemos destacar os seguintes blocos: • Unidades ASICs: Unidades PCI, QoS, rede, switching fabric, portas de entrada e saída e memória interna. • Unidades de processamento: Processadores RISC e microengines. Caso não exista nenhum bloco dedicado internamente à arquitetura do processador de rede (Ex. memória interna), as interfaces são usadas para acesso externo. Atualmente a tecnologia está evoluindo para infra-estruturas de rede, que suportam a voz sobre IP (VoIP), vídeo, comércio eletrônico entre outros. Para isto é necessário aumentar a largura de banda, diminuir a latência e melhorar o processamento. Os processadores de rede surgiram para aumentar o desempenho de processamento nas redes de comunicação e ajudar na crescente demanda por esta nova tecnologia. Atualmente está sendo usado para o projeto de processadores o conceito System-on-Chip [kochte 2003] [Kalte 2002] [Liang 2000] [Mensch 2000]. O SoC nada mais é do que um sistema de blocos lógicos diversos como processadores, portas de E/S, memória e hardwares dedicados, construídos internamente em um circuito integrado, com o intuito de diminuir o tamanho do hardware, aumentando a velocidade de processamento. Muitos projetos de processadores de aplicação específica utilizam esta técnica de desenvolvimento e implementação, que aumenta consideravelmente o desempenho, uma vez que os blocos lógicos ficam mais próximos da unidade de processamento, tal como em hierarquias de memória. A figura 9 ilustra um exemplo de SoC e seus blocos construtivos. 20 Figura 9 – Exemplo de um SoC A figura 8 também pode ser considerada como um SoC devido aos blocos construtivos que são internos à arquitetura de um processador de rede. Após o surgimento dos modelos System-on-Chip (SoC) constatou-se a necessidade de uma elevada velocidade de transmissão e recebimento de dados internos, já que grande parte dos dispositivos de entrada, saída e armazenamento são internos. Sendo assim, o conceito Network-on-Chip (NoC) [Kochte 2003] [Karim 2002] surgiu para que fosse agregado todo um sistema de rede de interconexão de dados eficiente para garantir o aumento de vazão de dados e por conseqüência de processamento do SoC. 2.2.3 – Funcionamento Básico de um Processador de Rede As ações básicas de um processador de rede são as seguintes: • Analisar e classificar o conteúdo dos campos do cabeçalho do pacote em análise; • Procurar em tabelas, regras de associação com o campo encontrado no cabeçalho do pacote; • Resolver o caminho do destino ou requerimentos de QoS; • Modificar o pacote em análise se necessário. Um processador de rede deve ser construído para que os pacotes tenham um processamento e roteamento rápido, evitando gargalos. Para isto o processador deve ter caminhos internos que possam distinguir, através do software ou hardware (ASIC), os pacotes que terão um processamento mais complexo e por isso levarão mais tempo para serem enviados ao destino e aqueles que terão um processamento mais simples e rapidamente serão redirecionados. Sendo assim, podemos definir duas classes [Kohler 2000] ilustradas na figura 10: i) Processamento “rápido” e ii) Processamento “lento”. 21 Figura 10 – Fluxo de pacotes Os pacotes que precisam de um processamento “rápido” normalmente são simples e utilizam recursos dedicados para acelerar o processamento. O caminho “rápido” é composto basicamente por co-processadores e ASICs. Desta forma, o processador de rede não faz, por exemplo, a análise ou alteração de campos de cabeçalhos e não faz consulta às tabelas de roteamentos. Neste caso o caminho “rápido” facilita o trabalho do processador principal, que estará encarregado de outras tarefas. Quando o pacote precisa de um processamento mais “lento” ou complexo (análise de tabela, regras de algoritmos e modificação em campos de cabeçalho, por exemplo) o caminho a ser adotado é mais “lento”, é necessário talvez, o uso de memória e de um processador principal. Esta definição de qual caminho a seguir pode ser feita utilizando circuitos dedicados ou softwares que estejam sendo executados no processador. As duas classes de processamento caracterizam e auxiliam na distinção dos pacotes e por conseqüência no desempenho final do processador. As redes ativas [Tennenhouse 1997] são muito importantes quando falamos de qualidade de serviço. Uma das tarefas do processador de rede é analisar o campo do cabeçalho de um pacote e tomar as decisões necessárias, inclusive de modificação do pacote. Sendo assim podemos relacionar as ações básicas de um processador de rede com o texto descrito a seguir: • Redes ativas nada mais são do que redes em que roteadores e switches executam tarefas (computação) a partir de mensagens que atravessam por eles. Neste tipo de rede, o pacote possui instruções que, lidas pelo roteador ou switch, resultarão em um processamento interno, que pode modificar o cabeçalho ou o pacote, antes mesmo que chegue ao destino. Um processador de rede deve dar suporte a redes ativas. A necessidade de qualidade de serviço (QoS) exige melhorias de desempenho nos equipamentos de rede e a evolução destes equipamentos está ligada diretamente aos processadores de rede. 22 2.3 – CONCEITOS DE COMPUTAÇÃO RECONFIGURÁVEL Ao longo dos últimos anos duas soluções de implementação computacional [Martins 2003, 2002] foram largamente utilizadas: • Solução por hardware fixo: Solução baseada em arquiteturas ASIC (Application Specific Integrated Circuit), onde o hardware projetado funciona apenas para uma determinada aplicação. Alto desempenho, mas com pouca flexibilidade. • Solução por hardware programável + software: A solução de hardware programável + software é baseada na programação de um hardware através de software. Esta solução pode ser exemplificada através dos dispositivos programáveis como processadores que utilizam instruções para responder a uma determinada requisição e processar dados desta requisição. Possui uma alta flexibilidade de trabalho, podendo ser usado em outros tipos de aplicações, mas com um menor desempenho em relação ao modelo de hardware fixo. Estas duas soluções dominam todos os sistemas computacionais que encontramos implantados em instituições e empresas. Porém, sempre existiu a necessidade de unir as vantagens de cada uma destas soluções para que o sistema computacional ganhasse maior desempenho e flexibilidade. A solução que vem sendo pesquisada e difundida nos últimos anos é a Computação Reconfigurável [Compton 2002] [Martins 2003, 2002] [Hartenstein 2001] [Bondalapati 2000]. Esta nova solução tem sido usada como intermediária para resolver problemas de melhoria de desempenho, flexibilidade, generalidade, eficácia, custo e outros. Como os conceitos relacionados à computação reconfigurável ainda estão se formando, devido ao fato dos resultados ainda serem muito recentes, citamos algumas definições existentes: “Dispositivo que realiza computação usando conexão espacial ‘pós-fabricação’ de elementos de computação”, enquanto os computadores tradicionais realizam computação fazendo conexões no tempo. [Dehon 2000] “Computação Reconfigurável representa uma nova idéia em filosofia de computação, na qual algum agente de hardware de propósito geral é configurado para realizar uma tarefa 23 específica, mas pode ser reconfigurado sob demanda para realizar outras tarefas específicas”. [Reconfigurable 2003] “Um novo paradigma de computação no qual circuitos integrados programáveis são usados em conjunto com software para reconfigurar circuitos integrados FPGA dinamicamente e produzir arquiteturas de computador sob demanda”. [Star 2003] Este novo modelo ou paradigma (Computação Reconfigurável) ainda não é amplamente utilizado. Porém, soluções usando computação reconfigurável têm sido pesquisadas e já encontramos na indústria sistemas computacionais desenvolvidos para atender a essa nova demanda de flexibilidade + desempenho. As linguagens de descrição de hardware, tais como VHDL (VHSIC Hardware Description Language), podem ser utilizadas para o desenvolvimento de sistemas computacionais reconfiguráveis. A prototipação e a implementação de circuitos reconfiguráveis é feita em dispositivos programáveis tais como os FPGAs (Field Programmable Gate Array). Nos tópicos 2.3.1 e 2.3.2 fazemos uma breve abordagem das características principais de cada um. 2.3.1 – Linguagens de Descrição de Hardware As linguagens de descrição de hardware (HDL: Hardware Description Language) [Ordonez 2003] [Martins 2003, 2002] [Ashenden 1998, 1990] [Glesner 1998] [Xilinx 1998] foram criadas com o objetivo de facilitar a modelagem, projeto e implementação de um circuito (hardware). Através destas linguagens é possível simular o funcionamento e analisar os resultados de simulação antes da prototipação. A seguir apresentamos quatro exemplos de linguagens de descrição de hardware: • VHDL: VHSIC (Very High Speed Integrated Circuit) Hardware Description Language. Criada em 1983 pelo departamento de defesa americano (DOD). • Verilog: Proprietária da Cadence Design System Corporation até 1990, quando foi criado o Open Verilog International (OVI) e a linguagem passou a ser de domínio público. Muito parecida com a linguagem C. • AHDL: Altera Hardware Description Language (linguagem desenvolvida pela empresa Altera) • JHDL: Java Hardware Description Language. Utiliza a linguagem Java para a programação, usando bibliotecas estendidas de descrição de hardware. 24 Um programa em VHDL pode ser escrito usando dois tipos de modelos de descrição: • Estrutural: São feitas descrições estruturais do sistema, especificando entradas, saídas, componentes lógicos e como são feitas as ligações entre eles. Já existem bibliotecas em VHDL, que possuem algumas entidades (exemplo: somadores) e que podem ser inseridas no desenvolvimento do projeto. • Comportamental: Neste caso não é necessário conhecer a estrutura dos componentes lógicos do sistema. Quando a estrutura interna do circuito não é conhecida ou é muito complexa, é utilizada a abordagem comportamental, onde se descreve o comportamento e funcionamento, sem se preocupar com a estrutura. Além do VHDL ser padrão IEEE para desenvolvimento de hardware, ele está diretamente relacionado com o avanço da tecnologia de circuito integrado de alta velocidade (VHSIC: Very High Speed Integrated Circuit). Maiores detalhes sobre VHDL, incluindo os demais conceitos, estruturas, palavras reservadas e bibliotecas podem ser encontrados nas seguintes referências: [Ordonez 2003] [Ashenden 1998, 1990] 2.3.2 – Dispositivos Programáveis Um dos dispositivos que encontramos no mercado para implementação de circuitos/sistemas reconfiguráveis é chamado de FPGA (Field Programmable Gate Array) [Ordonez 2003] [Martins 2003, 2002] [Glesner 1998] [Xilinx 1998]. Os FPGAs são dispositivos programáveis em campo, ou seja, podem ter sua configuração alterada após sua fabricação. Cada FPGA normalmente é composto por matrizes de elementos. Antes que cada elemento seja utilizado ele deve ser configurado. Esta configuração se faz através de um conjunto de bits chamados de bitstream. Esta matriz está ilustrada na figura 11. Para que seja possível a utilização do modelo ou paradigma de computação reconfigurável é necessário um dispositivo (hardware) programável. Esta afirmação nos leva a uma pergunta: Por que não um dispositivo reconfigurável? 25 A programação do dispositivo é feita para que todos ou alguns dos componentes do dispositivo se interliguem e implementem um circuito qualquer. Esta é a implementação realizada no primeiro momento. Se houver a programação deste dispositivo novamente para implementação de um novo circuito (ou mudança no mesmo circuito) consideramos que o circuito implementado foi reconfigurado. Portanto, é necessário que se defina um primeiro nível estático e programável, para que as implementações realizadas neste primeiro nível possam ser reconfiguráveis. Se o dispositivo fosse reconfigurável, poderíamos alterar ou reconfigurar o dispositivo e não a implementação de um circuito neste dispositivo. Um exemplo seria aumentar a quantidade de componentes que fazem parte deste dispositivo, o que não é possível. Mas aumentar o número de componentes usados no circuito implementado é possível (existe o limite de componentes do produto), basta reconfigurar esta implementação, ou programar novamente o dispositivo. Figura 11 – Arquitetura de um FPGA [Martins 2003, 2002] A arquitetura típica de um FPGA é a seguinte: • CLB (Configurable Logic Block): Matriz de blocos lógicos configuráveis; • Rede de Interconexão Programável: Blocos de interconexão que interligam todos os CLBs; • IOB (Input Output Block): Na periferia de todo o circuito existem blocos de entrada e saída para interface externa. 26 Em um dispositivo FPGA os métodos de reconfiguração podem ser classificados como: • Reconfiguração Total: Todo o dispositivo programável é reconfigurado. • Reconfiguração Parcial: Apenas uma parte do dispositivo é reconfigurada. Se afetar outras partes não reconfiguradas, todo o sistema deve ser parado para ser reiniciado. • Reconfiguração Dinâmica: Reconfiguração em tempo de execução. Reconfiguração realizada durante o funcionamento do dispositivo. Portanto, a implementação de um hardware reconfigurável usa um dispositivo programável (FPGA). A reconfiguração se faz através de bits (bitstreams), que podem ser gerados através de um código desenvolvido em VHDL descrito no tópico anterior. 2.4 – TRABALHOS CORRELATOS Conforme já descrevemos na introdução, o número de trabalhos e pesquisas envolvendo processadores de rede ainda é muito pequeno. No entanto, citamos no tópico 2.4.1 algumas pesquisas acadêmicas que julgamos relevantes para a área e que podem acrescentar conhecimento para futuros projetos e resultados relacionados a nossa pesquisa. É importante citar que, não encontramos pesquisas trabalhando com processadores de rede com chave crossbar reconfiguráveis, mas alguns grupos já iniciaram trabalhos relacionados com processadores de rede reconfiguráveis. Entre os grupos citados, ressaltamos a pesquisa do Prof. Dr. Edward Ordonez e do aluno de mestrado Ricardo Petruzza como o único grupo no Brasil, além do nosso, a pesquisar e agregar computação reconfigurável aos processadores de rede. Esta pesquisa, iniciada recentemente, ainda não possui publicações dos resultados. Em algumas pesquisas o uso do FPGA (Field Programmable Gate Array) implica em um projeto de computação reconfigurável, já que são feitas várias implementações dos dispositivos no FPGA. No nosso caso escolhemos o FPGA apenas como suporte para implementação, a nossa reconfiguração, como descrita no tópico 4.2, se limita à implementação de topologias na chave crossbar. Ou seja, não há reconfiguração da implementação realizada no FPGA, mas sim das implementações (topologias) realizadas pela chave crossbar. Para obter a reconfiguração não programamos o FPGA, mas sim a chave crossbar. 27 2.4.1 – Pesquisas Acadêmicas A seguir estão relacionados os nomes de algumas universidades, respectivos departamentos, pessoas envolvidas e as pesquisas relacionadas aos processadores de rede: • Chalmers University of Technology, Department of Computer Engineering, Suécia, Björn Liljeqvist e Lars Bengtsson, [Liljeqvist 2003, 2002] o Dissertação sobre processadores de rede: “Visions and Facts – A Survey of Network Processors”; o Computação em grade usando processadores de rede. • Columbia University / University of Texas, EUA, Michael E. Kounavis, Andrew T. Campbell, Harrick Vin [Kounavis 2003] [Campbell 2002] o Direções na classificação de pacotes para processadores de rede; o Ferramenta para construção de caminhos de dados em processadores de rede baseados em roteadores. • North Caroline University, Computer Engineering Program, EUA, Deepak Suryanarayanan, Gregory T. Byrd [Suryanarayanan 2002] o Metodologia e simulador para estudo de processadores de rede. • Purdue University, School of Electrical and Computer Engineering, EUA, Jahangir Hasan, Satish Chandra e T. N. Vijaykumar [Hasan 2003] o Estudo do uso da largura de banda da memória para aumentar vazão dos processadores de rede. • Swiss Federal Institute of Technology (ETH), Computer Engineering and Networks Laboratory, Zürich, Suíça, Lothar Thiele, Samarjit Chakraborty, Mathias Gries e Simon Künzli [Thiele 2002] o Uma abordagem de exploração de arquiteturas de processadores de rede. • University of California, Berkeley, Department of Electrical Engineering and Computer Sciences, EUA, Nirja Shah, Will Plishker, Kurt Keutzer, Chidamber Kulkarni, Christian Sauer [Shah 2001, 2002] [Tsai 2002] o Dissertação de mestrado: “Understanding the Network Processors”; o Estudo sobre a história dos processadores de rede; o Metodologia de benchmarking para processadores de rede; o Modelo de programação para processadores de rede. • University of California, Riverside, Department of Computer Science & Engineering, EUA, Haiyong Xie, Li Zhou e Laxmi Bhuyan [Xie 2002] 28 o Análise arquitetural de aplicações de criptografia para processadores de rede. • University of California, San Diego, Department of Computer Science & Engineering, EUA, Timothy Sherwood, George Varghese e Brad Calder [Sherwood 2003] o Estudo sobre arquitetura de memória usando conceitos de pipeline para aumento de vazão de processadores de rede. • University of Washington, Department of Computer Science & Engineering, EUA, Patrick Crowley e Jean-Loup Baer [Crowley 2000, 2002a, 2002b] o Tutorial sobre processadores de rede; o Caracterização de arquiteturas de processadores para interfaces de rede programáveis; o Modelagem de Framework para sistemas de processadores de rede. • University of Wisconsin, EUA, Madhu Sudanan Seshadri, John Bent e Tevfik Kosar [Seshadri 2003] o Análise e projeto de processadores de rede para uso em roteamentos. • Washington University in St. Louis, School of Engineering & Applied Science, EUA, Tilman Wolf, Mark A. Franklin e Edward W. Spitznagel [Franklin 2002, 2003] [Wolf 2000a, 2000b, 2000c, 2000d, 2001] o Considerações sobre desempenho e consumo de potência para processadores de rede; o Questões de projeto para roteadores ativos de alto desempenho; o Análise de carga de trabalho para programação de tarefas para os processadores de rede; o Projeto de processadores de rede embarcados; o Desempenho e benchmark para processadores de rede; o Projeto de conjunto de instruções para processadores de rede. Os grupos relacionados a seguir trabalham com computação reconfigurável aplicada aos processadores de rede: • University of Patras, Department of Electrical Engineering and Computer Technology, Grécia, Marios Iliopoulos e Theodore Antonakopoulos, [Iliopoulos 2000] 29 o Processadores de rede reconfiguráveis baseados em circuitos programáveis em campo (Ex. FPGAs). • University of Florida, HCS Research Lab, ECE Department, EUA, I. A. Troxel, A. D. George e S. Oral, [Troxel 2002] o Projeto e análise de um processador de rede reconfigurável dinamicamente. • University of California, Los Angeles, Department of Electrical Engineering, EUA, Gohan Memik, Seda Ogrenci Memik e William H Mangione-Smith, [Memik 2002] o Projeto de um bloco acelerador para aumento de desempenho no processamento de aplicações de rede em um processador de rede usando implementações em FPGAs. • Fundação Eurípides de Marília, Programa de Pós-graduação em Ciência da Computação, Brasil, Prof. Dr. Edward Ordonez e mestrando Ricardo Petruzza. o Projeto de um processador de rede reconfigurável usando FPGAs. Apesar de nenhum destes grupos trabalharem com pesquisas relacionadas a processadores de rede com chave crossbar usando ou não computação reconfigurável, verificamos algumas que podem agregar conhecimento em trabalhos futuros do nosso grupo. A primeira pesquisa [Suryanarayanan 2002] é sobre o simulador desenvolvido pelo grupo da North Caroline University para estudo de um processador de rede da Cisco chamado TOASTER que não conseguimos referências técnicas, além do próprio artigo. Desta forma, pretendemos manter contato com o professor Gregory T. Byrd para uma maior aproximação entre os grupos e futuros projetos relacionados a simuladores de processadores de rede. É importante ressaltar que o processador TOASTER é proprietário da Cisco e, portanto, não está disponível para venda e utilização por outros fabricantes, o que justifica a dificuldade de em encontrar informações e datasheets sobre este processador. A pesquisa [Liljeqvist 2002] relacionada com computação em grade usando processadores de rede também é muito interessante devido as duas áreas recentes e que juntas possuem poucas publicações de resultados. No entanto, os grupos mais fortes são da Washington University in St. Louis e University of Washington. Com estes grupos podemos agregar conhecimentos relativos à utilização de processadores de rede em roteadores ativos, consumo de potência de processadores de rede, análise de desempenho, benchmarks, entre outros. 30 Com relação aos trabalhos que usam computação reconfigurável, as pesquisas usam o dispositivo FPGA apenas como um meio para a implementação da proposta de processador de rede. O nosso maior interesse está na proposta de processador de rede reconfigurável e não no dispositivo FPGA. No entanto, o bloco acelerador desenvolvido pelo grupo da University of California, Los Angeles [Memik 2002] é interessante e pode agregar mais conhecimento na nossa proposta de desenvolvimento de processador de rede. Este bloco acelerador é um ASIC e pode ser encontrado em outras arquiteturas com outro nome e para outras funções. A palavra “acelerador” apenas informa de forma mais direta, que este é um bloco responsável por aumentar ou acelerar o desempenho de processamento, tal como uma microengine que é encontrada em processadores de rede comerciais, tal como o IXP1200 [Intel 2000] e na nossa proposta descrita no capítulo 4. No entanto, estes aceleradores possuem arquiteturas diferentes e funções diferentes e podem não receber o nome “acelerador”. Encontramos algumas dissertações e teses sobre processadores de rede concluídas, são elas: • California Polytechnic State University, EUA, Edison David, “A Network Processor Platform Implemented in Programmable Hardware”, 2003 [David 2003]; • Virginia Polytechnic Institute, EUA, Scott J. Harper, “A Secure Adaptive Network Processor”, 2003 [Harper 2003]; • Chalmers University of Technology, Suécia, Björn Liljeqvist, “Visions and Facts – A Survey of Network Processors”, 2003 [Liljeqvist 2003]; • Royal Institute of Tecnology (KTH), Suécia, Daniel Hedberg, “Network Processor based Exchange Terminal – Implementation and Evaluation”, 2002 [Hedberg 2002]; • Lulea University of Technology, Suécia, Anders Stenberg, “Network Processor Core Architecture”, 2002 [Stenberg 2002]; • Linköpings Universitet, Suécia, Tomas Henriksson, “Hardware Architecture for Protocol Processing”, 2001 [Henriksson 2002]; • University of California Berkeley, EUA, Niraj Shah, “Understanding Network Processors”, 2001 [Shah 2001]. Apesar das 4 dissertações suecas e 3 americanas, não encontramos publicações significativas, relacionadas a processadores de rede, destes pesquisadores. A exceção do Niraj Shah, que tem publicações no Workshop on Network Processors (2002 e 2003) [Shah 2002] (a 31 publicação de 2003 não está presente entre as referências) e do Björn Liljeqvist no IASTED 2002 [Liljeqvist 2002]. Apesar de nenhuma proposta ou pesquisa de processador de rede com chave crossbar reconfigurável ter sido encontrada, selecionamos alguns trabalhos relacionados às chaves crossbar utilizando dispositivos FPGAs para implementação: • Colm Fewer, et. al., “Chave Crossbar implementada em FPGAs”. [Fewer 2002, 2003]; • Maryam Keyvani, Arash Haidari-Khabbaz, Simon Fraser University, Canadá, “Implementação de uma chave crossbar simétrica de alta velocidade”. [HaidariKhabbaz 2000] [Keyvani 2001] (uma dissertação e uma monografia); • Holger Eggers, Patrick Lysaght, Hugh Dick e Gordon McGregor, University of Strathclyde, Reino Unido, “Chave Crossbar implementada em FPGA”, [Eggers 1996]. No entanto, um artigo de 2002 sugeriu uma arquitetura de interconexão para processadores de rede System-on-Chips baseando-se em características de flexibilidade, de velocidade e custo. O artigo propõe uma arquitetura Network-on-Chip (NoC) baseada em uma topologia de interconexão Octagon para processadores de rede, onde cada nó representa um conjunto processador / memória. • Faraydon Karim e Anh Nguyen da STMicroelectronics, Sujit Dey da University of San Diego, “An Interconnect Architecture for Networking Systems on Chips” [Karim 2002]. Neste tópico foram relacionadas algumas pesquisas, mas existem outros grupos não citados. A maior concentração de artigos relacionados a processadores de rede pode ser encontrada no evento Workshop on Network Processors and Applications. O tópico 2.5.3 apresenta alguns eventos importantes onde é possível encontrar artigos relacionados. 2.4.2 – Pesquisas em Indústrias Neste tópico não entramos em detalhes técnicos sobre os processadores de rede comerciais. Apresentamos algumas empresas, o nome dos principais processadores de rede e alguns pontos interessantes da arquitetura ou da aplicação. O capítulo sobre processadores de 32 rede comerciais do nosso minicurso [Freitas 2003b] publicado na III Escola Regional de Informática RJ/ES é apresentado no anexo 2 e descreve as principais características técnicas dos processadores a seguir: • Intel: IXP1200 [Intel 2000] o Duas unidades de processamento: Processador StrongARM: construção e manutenção de tabelas e gerenciamento de redes; Microengines (seis no total): processamento e redirecionamento de pacotes. • IBM: PowerNP NP4GS3 [Allen 2002] [IBM 2002] o Duas unidades de processamento: Embedded Processor Complex: Contém oito Dyadic Picoprocessors e nove co-processadores. Determina o que deve ser feito com os frames recebidos; Embedded PowerPC: Encaminhar e filtrar pacotes analisando campos do protocolo IP (Internet Protocol), controlar protocolos de roteamento, gerenciar, configurar, diagnosticar e suportar agentes SNMP(Simple Network Management Protocol). • Motorola/C-Port: C-5 Family [C-Port 2002, 2001] o Três unidades de processamento Channel Processors: Processadores por porta (16 no total), que recebem, processam e transmitem os dados; Executive Processor: Processador principal para gerenciamento de recursos; Fabric Processor: Atua como uma interface de rede de alta velocidade. Provê a conectividade com outros processadores de rede. • Lucent/Agere: FPP/ASI/RSP [Agere 2001a, 2001c, 2001d] o Conjunto de três processadores: Fast Pattern Processor (FPP): gerenciamento e monitoramento de redes, processamento de lista e controle de acesso; Agere System Interface (ASI): atualizações atualizações em filas, exceções e estatísticas; em tabelas, 33 Routing Switching Processor (RSP): enfileiramento, gerenciamento de tráfego e modificação de pacote. • EZChip: NP-1 [EZChip 2002] o Arquitetura composta por estágios: TOPparse: identifica protocolos e extrai cabeçalhos dos pacotes; TOPsearch: executa lookups em diferentes níveis; TOPresolve: assinala pacotes para enfileirar ou enviar para portas; TOPmodify: modifica conteúdo dos pacotes. • Sitera/Vitesse: Prism IQ2000 Family [Vitesse 2002] o Roteamento de multi-protocolos complexos; o Classificação, filtragem, inspeção e criptografia; o Políticas de QoS; o Multicast; o Tradução de endereços de rede; o Outras operações de processamento de pacotes. • Chameleon: CS2000 Family [Chameleon 2000] o Arquitetura Reconfigurável (Reconfigurable Processing Fabric): Unidades de Caminho de Dados; Multiplicadores; Memórias Locais; Unidades de Controle. o Principais aplicações: Estações base sem fio de 2G e 3G; Wireless Local Loop; Voz sobre IP. É importante ressaltar, que os trabalhos acadêmicos estão gerando resultados nos últimos 3 anos. Dentro do contexto de pesquisas relacionadas com processadores de rede, as indústrias possuem uma história maior e mais sólida. Dentre os processadores relacionados o CS2000 é o único que utiliza computação reconfigurável. Nestes processadores apresentados, encontramos algumas características na arquitetura que de forma direta ou indireta contribuíram na nossa proposta: • Processador principal de gerenciamento: Presente no IXP1200 da Intel, PowerNP NP4GS3 da IBM e no C-5 da C-Port/Motorola. • Microengines: Presente no IXP1200 da Intel. 34 • Computação Reconfigurável: Presente no CS2000 da Chameleon. Apesar das arquiteturas dos processadores comerciais serem diferentes da nossa proposta, a separação de funções de processamento surgiu por influência destes processadores. Portanto, será visto no capítulo 4 que existem na arquitetura do R2NP (Reconfigurable RISC Network Processor) um processador de gerenciamento e oito microengines. No entanto o CS2000 é a exceção, a computação reconfigurável foi uma idéia anterior ao seu conhecimento, porém, mostrou que o projeto de um processador de rede usando conceitos de computação reconfigurável é viável e está sendo utilizado pela indústria. 2.4.3 – Eventos Relacionados Neste tópico apresentamos os principais eventos relacionados às áreas de arquitetura e redes de computadores e concepção de circuitos, que possuem espaço para publicações referentes aos processadores de rede. É importante ressaltar dois eventos: O Workshop on Network Processors and Applications, que é mais acadêmico e o Network Processors Conference, mais ligado à indústria. No entanto, são os únicos eventos específicos sobre processadores de rede. Podemos ressaltar também o ISCA (International Symposium on Computer Architecture) e o HPCA (Symposium on High-Performance Computer Architecture) por relacionarem o tema “Processadores de Rede” entre os tópicos principais de sugestão de submissão como uma forma de incentivo para esta nova área do conhecimento. • Network Processors Conference (NPC); • Workshop on Network Processors and Applications (NP); • Annual International Symposium on Microarchitecture (MICRO); • Annual International Symposium on Computer Architecture (ISCA); • International Symposium on High-Performance Computer Architecture (HPCA); • International Conference on Computer Communication Network (ICCCN); • Conference on Local Computer Networks (LCN); • International Conference on Supercomputing (ICS); • International Symposium on Circuits and Systems (ISCAS); • International Conference on Computer Design (ICCD); • International Conference on Computer-Aided Design (ICCAD); 35 • Symposium on Computer Architecture and High Performance Processing (SBACPAD), Brasil; • Symposium on Integrated Circuits and Systems Design (SBCCI), Brasil; • Workshop em Sistemas Computacionais de Alto Desempenho (WSCAD), Brasil; • Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos (SBRC), Brasil. Os quatro últimos eventos são nacionais, mas apenas o WSCAD [Freitas 2002b, 2001, 2000b] publicou artigos sobre processadores de rede. No SBAC-PAD, SBCCI e no SBRC nenhum artigo relacionado foi publicado. 36 3 – MATERIAIS E MÉTODO Neste capítulo apresentamos os materiais e o método utilizado para o projeto e desenvolvimento das arquiteturas propostas e obtenção dos resultados apresentados nesta dissertação. 3.1 – MATERIAIS Os materiais utilizados para obtenção dos resultados desta dissertação foram: Os artigos e livros relacionados; Os manuais e datasheets dos processadores de rede e de processadores de propósito geral; Compilador C++ Builder 5.0; Simulador do processador de rede (CISC) desenvolvido [Freitas 2002a, 2002c]; Ambiente de projeto em VHDL da Xilinx (ISE Webpack); Ambiente de simulação da Xilinx (ModelSim). 3.2 – MÉTODO Definimos por começar o projeto da proposta de processador de rede através do modelo CISC (Complex Instruction Set Computing) para depois projetar o modelo RISC (Reduced Instruction Set Computing). As etapas planejadas de acordo com os prazos estipulados para a conclusão da dissertação são apresentadas a seguir: 1. Estudo do estado da arte (etapa executada continuamente durante todo o projeto); 2. Projeto do conjunto de instruções para o processador de rede CISC; 3. Projeto da microarquitetura do processador para o processador de rede CISC; 4. Projeto do simulador do conjunto de instruções e microarquitetura do processador de rede CISC; 5. Verificação do processador de rede CISC usando o simulador projetado; 6. Verificação através de análise matemática do desempenho entre a proposta de conjunto de instruções do modelo CISC e um GPP conceitual; 7. Projeto do conjunto de instruções para o processador de rede RISC; 8. Projeto da microarquitetura para o processador de rede RISC; 37 9. Projeto da arquitetura da Unidade de Comunicação Dedicada e Reconfigurável (UCDR); 10. Verificação através de análise matemática do desempenho entre as propostas de conjunto de instruções dos processadores de rede CISC e RISC (modelos sem e com pipeline); 11. Análise da modelagem em grafos da implementação dinâmica de topologias; 12. Projeto das arquiteturas das chaves crossbar reconfiguráveis (versões de 1 e 2 bits); 13. Desenvolvimento dos códigos em VHDL para as chaves crossbar reconfiguráveis (versões de 1 e 2 bits); 14. Simulação do código em VHDL do comportamento de uma chave crossbar tradicional para chaveamento de pacotes de dados; 15. Simulação do código em VHDL do comportamento das chaves crossbar reconfiguráveis de 1 e 2 bits para chaveamento de pacotes de dados e implementação de topologias dinâmicas; 16. Análise de flexibilidade do uso de computação reconfigurável na crossbar; 17. Síntese dos resultados, conclusões e finalização da dissertação. Desenvolvemos o simulador (NPSIM: Network Processor Simulator) [Freitas 2002a, 2002c] descrito no capítulo 4 e no anexo 1, para verificar o funcionamento do conjunto de instruções e dos blocos funcionais da arquitetura do processador CISC proposto. A verificação do simulador se fez através da análise do funcionamento correto dos programas apresentados no tópico 5.1, utilizados para análise de desempenho entre os conjuntos de instruções da nossa proposta e um GPP conceitual. Com base no conjunto de instruções CISC foi desenvolvido um novo conjunto, utilizando conceitos de projeto RISC para melhoria do desempenho das instruções propostas inicialmente. Após o projeto do novo conjunto de instruções, que passou a utilizar pipeline [Patterson 2000], modelamos matematicamente o ganho de desempenho obtido, considerando a nova proposta RISC e a anterior CISC com base nos mesmos programas já verificados. Simultaneamente ao processo de melhoria do conjunto de instruções CISC, foi realizado um novo projeto da arquitetura do processador de rede proposto para uma versão RISC. A alteração principal foi na arquitetura dos blocos pertencentes à estrutura de recebimento e chaveamento de pacotes de dados de entrada. Foram projetadas propostas de multiplexadores reconfiguráveis, microengines, buffers reconfiguráveis e uma chave crossbar reconfigurável, 38 dando origem a uma grande Unidade de Comunicação Dedicada e Reconfigurável (UCDR). O objetivo desta unidade é garantir uma maior flexibilidade e desempenho no processamento e chaveamento dos pacotes de dados em relação à proposta anterior que possuía apenas os buffers e a chave crossbar reconfigurável. Veremos no tópico 4.2, que a chave crossbar reconfigurável foi proposta em duas versões de arquitetura (1 e 2 bits). No entanto, estes dois projetos pertencem apenas à proposta RISC. No início do projeto da arquitetura CISC a chave crossbar não era reconfigurável. A versão de chave crossbar reconfigurável de 1 bit foi adicionado ao processador de rede CISC durante o projeto. A definição da chave crossbar como ponto final para conclusão do mestrado, foi baseada na importância dos resultados da aplicação da computação reconfigurável (flexibilidade e desempenho de operação). É importante ressaltar, que a escolha da chave crossbar entre os demais tipos de switching fabrics se deve à vantagem de sua estrutura ser baseada em uma matriz de conexões, que favorece a implementação dinâmica de topologias em tempo de execução, conforme citamos nos objetivos e simulações do tópico 5.3. Sendo assim, concluímos que além da arquitetura dedicada do processador, a unidade de chaveamento de pacotes de dados e de implementação dinâmica de topologias (a chave crossbar reconfigurável) é uma das principais contribuições do projeto. Por este motivo, adotamos como prioritárias para a finalização desta dissertação as etapas de projeto e simulação comportamental da chave crossbar reconfigurável. Estes resultados sendo analisados servem como direcionamento para a aplicação do conceito de reconfiguração em outros blocos funcionais da UCDR e por conseqüência no processador de rede proposto. 39 4 – PROPOSTA DE UM PROCESSADOR DE REDE RECONFIGURÁVEL Neste capítulo apresentamos as propostas de arquiteturas do processador de rede com chave crossbar reconfigurável [Freitas 2003a, 2002b, 2001, 2000a, 2000b]. De acordo com o que já foi descrito iremos apresentar no primeiro tópico deste capítulo a arquitetura CISC do processador de rede proposto (RCNP: Reconfigurable CISC Network Processor). Após a apresentação da proposta de arquitetura de processador de rede RISC (R2NP: Reconfigurable RISC Network Processor) e da Unidade de Comunicação Dedicada e Reconfigurável (UCDR), iremos apresentar em outro tópico a arquitetura da chave crossbar reconfigurável. Sendo assim, neste capítulo apresentamos os principais objetos de estudo e de análise de resultados desta dissertação. É importante ressaltar que, as arquiteturas propostas e desenvolvidas para o processador de rede possuem vários circuitos dedicados que após a prototipação poderão fazer parte do mesmo chip. Ou seja, o nosso projeto descreve uma arquitetura de processador de rede que utiliza conceitos Sytem-on-Chip (SoC). Desta forma, pretendemos obter ao final do projeto um maior desempenho devido principalmente à relação de proximidade dos blocos funcionais do processador. Ressaltamos a UCDR (Unidade de Comunicação Dedicada e Reconfigurável) e hierarquicamente a chave crossbar reconfigurável, como os principais blocos construtivos dedicados que serão inseridos dentro do mesmo circuito integrado do processador de rede proposto com características reconfiguráveis. 4.1 – ARQUITETURA DO PROCESSADOR DE REDE Serão mostradas duas arquiteturas: uma CISC e outra RISC. O simulador NPSIM (Network Processor Simulator) já citado em tópicos anteriores será utilizado para apresentar e verificar a arquitetura CISC. As características pertencentes às duas arquiteturas são: • Oito portas de entrada e oito de saída; • Buffers de entrada; • Chave crossbar; • Interface PCI; • Interface dedicada de comunicação; • Módulo DMA (Acesso Direto à Memória). 40 É importante citar que, a arquitetura CISC apesar de não se tratar do melhor modelo de projeto para processadores de rede e também não encontrado entre os processadores de rede comerciais, foi escolhido para dar início aos estudos por se tratar de um modelo inicial na evolução dos processadores e, portanto, como seqüência didática para estudos e projeto das arquiteturas. 4.1.1 – Arquitetura e Conjunto de Instruções CISC O processador RCNP (Reconfigurable CISC Network Processor) [Freitas 2001, 2000a, 2000b] é apresentado através do simulador funcional (NPSIM: Network Processor Simulator) [Freitas 2002a, 2002c] desenvolvido para testes de verificação funcional da arquitetura e do conjunto de instruções. O principal módulo de interface do NPSIM (Anexo 1) é apresentado na figura 12. Este módulo contém os registradores dedicados e de propósito geral, a memória e o editor do código assembly. Figura 12 – Módulo de interface principal do NPSIM Através do NPSIM foi possível verificar os resultados de comparação de desempenho apresentados no tópico 5.1. 41 As figuras 13, 14, 15 e 16 são referentes aos módulos de interface de ajuda do NPSIM, onde podemos encontrar informações relativas à arquitetura e ao conjunto de instruções do RCNP. Os detalhes técnicos da versão CISC podem ser obtidos nas referências [Freitas 2001, 2000a, 2000b]. Figura 13 – Arquitetura do RCNP apresentada módulo de interface do NPSIM A arquitetura básica é a seguinte (figura 13): 1. Oito portas de entrada Buffers específicos para cada entrada Buffers reconfiguráveis. 2. Oito portas de saída 3. Chave crossbar (Bloco Seletor de Conexão – Conexão entre as portas de entrada e saída e registradores) 4. Módulo DMA (Acesso Direto à Memória) 5. Oito registradores de propósito geral 6. Barramento de dados de 8 bits e 24 bits de endereçamento 7. Memória de tamanho máximo de 16Mbytes (palavra de memória de 1byte) A figura 14 (módulo do NPSIM) descreve e ilustra algumas características importantes da arquitetura do RCNP. 42 Figura 14 – Descrição de parte da arquitetura do RCNP no módulo de interface do NPSIM A figura 15 ilustra o conjunto de instruções do RCNP. Foram acrescentadas durante o projeto deste conjunto algumas instruções que inicialmente não faziam parte do primeiro conjunto proposto, gerando a tabela resultante ilustrada na figura 15. Figura 15 – Conjunto de instruções no módulo de interface do NPSIM 43 Alguns exemplos de instruções: 1. Conjunto de instruções de propósito geral Instruções aritméticas (Ex. ADD e SUB) Instruções lógicas (Ex. AND e OR) Instruções de acesso à memória (Ex. LOD, STO e ADI) Instruções de desvio (Ex. JMP e JNZ) 2. Sub-conjunto de instruções de rede Leitura da porta de entrada (Ex. ENT) Escrita na porta de saída (Ex. SAI) Controle da crossbar (Ex. SEC) Controle do reg. de status (Ex. LRS e SRS) A figura 16 descreve os efeitos principais da utilização das instruções propostas. Figura 16 – Descrição das instruções no módulo de interface do NPSIM Por se tratar de uma arquitetura CISC, algumas instruções além de load e store também possuem no formato de instrução um campo específico para acesso à memória. Estes tipos de instruções não mais existirão no projeto RISC, uma vez que o acesso à memória será restrito a 44 poucas instruções. Outra característica deste projeto é o microcódigo (palavra de controle) gerado pela unidade de controle. Cada estágio da instrução (Ex. busca, decodificação e execução) é representado por um microcódigo diferente. O caminho de dados do processador RCNP não possui estrutura em pipeline, o que obriga a execução de uma instrução após a outra, seqüencialmente. O ponto forte desta arquitetura é a unidade de comunicação composta por portas de entrada e saída, chave crossbar e buffers reconfiguráveis, que permaneceram no projeto RISC (chamada de UCDR) com algumas diferenças. Seu conjunto de instruções também mostrou um ganho considerável em relação a um processador de propósito geral conceitual, como será descrito no tópico de resultados (capítulo 5). 4.1.2 – Arquitetura e Conjunto de Instruções RISC O projeto R2NP (Reconfigurable RISC Network Processor) [Freitas 2003a, 2002b] tem como objetivo melhorar o caminho de dados, a arquitetura da unidade de comunicação de dados, o formato e o conjunto de instruções, com o intuito de aumentar o desempenho e vazão dos pacotes de dados. Neste projeto cada instrução possui um formato fixo, o que facilita o estágio de decodificação de instruções. A figura 17 ilustra o formato de instruções do R2NP. Figura 17 – Formato das instruções do R2NP Exemplos: Formato 1: ADD (operador) A (operando 1), B (operando 2), C (operando 3) Formato 2: MOV (operador) A (operando 1), B (operando 2) Formato 3: LRS (operador) A (operando 1) Formato 4: HLT (operador) 45 A tabela 1 relaciona todas as instruções do R2NP e a tabela 2 descreve a função das instruções de rede. Tabela 1 – Instruções do R2NP ADD A,B,C SUB A,B,C MUL A,B,C DIV A,B,C AND A,B,C OU A,B,C XOR A,B,C NEG A ROD A ROE A Propósito geral MOV A,B SPUSH A INC A LPOP A DEC A JMP A LOD A,End32 JZ A LDA A,End16 JMZ A LOX A,B JMI A LDI A,Imed16 JNZ A STO End32,A JNI A STR End16,A CALL A STX A,B RET CONV Rede FCX A,B,C LOB A BRC A SAI A,B LRS A SRS A SEC A,B ENT A,B,C No caso de instruções de load e store, existem dois tipos de instruções: uma que acessa apenas a memória interna de 64 kbytes (LDA, LDI, STR) e outra (LOD, STO) que acessa memória interna e externa de tamanho máximo 16Gbytes. Quando se utiliza o segundo tipo, a próxima posição de memória guarda o endereço de 32 bits. Portanto as instruções LOD e STO utilizam duas células de memória e por isso é necessário um ciclo de busca a mais para o endereço. No entanto, as instruções LDA, LDI e STR, que precisam de apenas 16 bits para endereçar a memória interna, ocupam apenas uma célula de memória e utilizam apenas um ciclo de busca. Tabela 2 – Descrição das instruções de rede do R2NP Rede ENT A,B,C BRC A SAI A,B LRS A SRS A SEC A,B FCX A,B,C LOB A Descrição do funcionamento Lê buffer (reg. B) posição (reg. C) e carrega no reg. A Broadcast do buffer (reg. A) para todas as saídas Valor do reg. A para saída (reg. B) Carrega no reg. Status valor do reg. A Carrega no reg. A valor do reg. de Status Redireciona buffer (reg. A) para saída (reg. B) Fecha conexão entre buffer (reg.A) e saída (reg. B) Reg. C carrega byte de desconexão no buffer (reg. A) Carrega no reg. A, no da porta de entrada que recebeu o pacote 46 O pipeline de instrução está dividido em 5 estágios (figura 18): Busca da instrução (B). Decodificação da instrução (D). Leitura em banco de registradores. Execução da instrução (E). Acesso de escrita ou leitura na memória (M) ou Buffer reconfigurável (BF). Resultados (R). Escrita em banco de registradores. Figura 18 – Estágios de pipeline do R2NP A diferença básica para o modelo conceitual dos estágios de pipeline é a inclusão do estágio BF (Buffer Reconfigurável). Este estágio está sobreposto ao estágio de acesso à memória, porque os dois não são executados por uma mesma instrução. Uma instrução load utiliza o estágio M e uma instrução de entrada (ENT) utiliza o estágio BF. É importante ressaltar, que hierarquicamente os buffers estão em melhor posição do que a memória (processador registradores buffers memória). Para esta hierarquia a melhor posição é aquela que se encontra mais próxima das saídas de dados. A figura 19 ilustra a hierarquia de memória (visão da saída de dados) dos processadores RCNP e R2NP e a evolução do projeto. A hierarquia de memória padrão está em relação ao processador, conforme a primeira hierarquia da figura 19. Porém, fizemos uma análise da hierarquia em função da saída de dados, já que o processamento está dividido em microengines e Processador de Gerenciamento, conforme será descrito nos tópicos seguintes. 47 Figura 19 – Hierarquia de memória (visão da saída de dados) As principais características da arquitetura são: 1. Oito microengines (ASICs – Application-Specific Integrated Circuits substituindo cada buffer específico de entrada do projeto RCNP). 2. Multiplexador, crossbar e buffers reconfiguráveis 3. DMA (Acesso Direto à Memória) – Circuito dedicado (ASIC) 4. Memória interna e cache do Processador de Gerenciamento. 5. Quantidade total (máximo) de registradores: 256 (palavra de 64 bits) 6. Barramento de dados e de endereço de 32 bits 7. Memória de tamanho máximo de 16Gbytes (palavra de 32 bits / 4G células) A figura 20 ilustra a arquitetura do R2NP. 48 Figura 20 – Arquitetura do R2NP O bloco chamado Processador de Gerenciamento corresponde à unidade principal de processamento. Neste bloco estão situados os registradores de propósito geral e também as caches de dados e de instruções. Este processador de gerenciamento é responsável pela leitura e execução de todas as instruções do R2NP. Nele estão presentes as unidades lógica, aritmética e de controle de pipeline. Este processador define como os vários blocos construtivos da arquitetura irão trabalhar, inclusive as microengines. Este processador é considerado a unidade principal responsável pelas tarefas que requerem um detalhamento maior, tais como: construção e manutenção de tabelas e gerenciamento de redes. O processador de gerenciamento e as microengines são blocos projetados a exemplo das arquiteturas de processadores comerciais, conforme citado nos trabalhos correlatos. A Unidade de Reconfiguração é o bloco responsável pelo controle e envio dos bits de reconfiguração para o multiplexador reconfigurável, buffers reconfiguráveis e chave crossbar reconfigurável. Este bloco é gerenciado pelo processador de gerenciamento, e pelas microengines, que podem receber instruções através de pacotes de rede. Os detalhes de funcionamento da unidade de comunicação dedicada e reconfigurável (UCDR), onde está presente a chave crossbar reconfigurável, estão descritos no tópico seguinte. A UCDR com todos os seus blocos funcionais só existe na versão RISC. 49 4.1.3 – Unidade de Comunicação Dedicada e Reconfigurável (UCDR) A UCDR (figura 21) é a grande unidade de comunicação de dados do R2NP. Nesta unidade são feitos o recebimento, processamento e saída de pacotes de dados, muitas vezes sem a necessidade do uso do processador de gerenciamento. Seu principal objetivo é aumentar a flexibilidade e velocidade de processamento relacionados aos pacotes de entrada. A UCDR faz parte da arquitetura do R2NP, e utiliza computação reconfigurável como forma de obter flexibilidade, escalabilidade, vazão e desempenho de processamento. Desta forma, a UCDR também agrega ao R2NP o conceito System-on-Chip (SoC) conforme já havíamos descrito. Figura 21 – Arquitetura da UCDR Os principais blocos funcionais da UCDR são: A microengine é um circuito dedicado e programável que tem a função de tomar decisões preliminares lendo espaços de memória, onde estão guardadas informações referentes ao protocolo, redirecionando os pacotes para os buffers reconfiguráveis ou para saída através da chave crossbar. As microengines também podem alterar ou acrescentar informações nos cabeçalhos dos pacotes (redes ativas, por exemplo) sendo útil durante o processamento interno do R2NP, como será visto no tópico 4.2.2. Cada microengine pode ser utilizada para funções diferentes (depende do programa). Ela pode redirecionar um pacote de entrada diretamente para a chave crossbar reconfigurável, que enviará para a saída, ou pode não fazer nada, deixando que todos os pacotes de entrada sejam enviados para os buffers reconfiguráveis aumentando o trabalho de processamento do processador de gerenciamento. 50 Os buffers reconfiguráveis são espaços de alocação dos pacotes de dados antes que estes pacotes sejam enviados para a saída. Estes buffers são utilizados como armazenamento temporário de pacotes evitando que estes dados sejam guardados em memória quando a saída está sendo utilizada (ocupada). Desta forma, o projeto destes buffers implementa outro nível na hierarquia tradicional de memória de acordo com a ilustração da figura 19. O conceito de reconfiguração foi adotado para melhorar o desempenho do armazenamento de pacotes. Ou seja, em tempo de execução um conjunto de buffers é preparado para servir de espaço de armazenamento de tamanho o mais próximo possível do pacote de dados que será recebido. Neste caso, reservamos mais espaço livre para um novo armazenamento de dados. É importante ressaltar, que estes pacotes somente utilizarão estes buffers caso as saídas estejam congestionadas (ocupadas) ou um programa indique o caminho de armazenamento em buffers de forma obrigatória. A função do multiplexador é possibilitar a reutilização de uma porta de entrada, que estava ligada a uma microengine. Pode-se perder uma microengine, mas continua-se com 8 portas. Sua utilização também é importante como forma de liberar uma microengine para trabalhar de forma independente do restante. Ou seja, podemos usar uma microengine para processar alguma tarefa que seja diferente das demais e que não seja executada pelo processador de gerenciamento para evitar uma sobrecarga de processamento, ou diminuição de capacidade de vazão de dados. A Chave Crossbar Reconfigurável é similar a uma matriz interna de conexões capaz de redirecionar os pacotes das portas de entrada para as portas de saída. No entanto, ela é diferente de uma crossbar tradicional devido ao fato de haver a possibilidade de alteração das conexões e implementação de topologias no tempo e no espaço. Os detalhes da chave crossbar reconfigurável estão descritos no tópico 4.2. Do ponto de vista da pesquisa, a UCDR é o grande bloco reconfigurável que garante ao R2NP maior desempenho e flexibilidade de operação. 4.2 – ARQUITETURA DA CHAVE CROSSBAR RECONFIGURÁVEL Uma chave crossbar tradicional, como mostrado no tópico 2.1, é capaz de fechar, em intervalos de tempo, a mesma entrada com diversas saídas e vice-e-versa. Portanto, não é possível implementar uma topologia fixa (no espaço), já que as diversas conexões são abertas ou fechadas ao longo do tempo. Entretanto, a nossa proposta de chave crossbar reconfigurável 51 (figura 22), além de funcionar como uma chave crossbar tradicional, implementa topologias também no espaço através de seus bits de reconfiguração. Figura 22 – Bloco da chave crossbar reconfigurável A proposta de reconfiguração da chave crossbar não se aplica em mudança de concepção de circuito. Não há diminuição de latches ou flip-flops quando se implementa uma nova topologia. Após a mudança nos bits de reconfiguração, o mesmo circuito da chave crossbar irá modificar os nós habilitados para o fechamento de circuito ou simplesmente fechar ou abrir um circuito de entrada e saída. Ou seja, os conceitos de reconfiguração serão aplicados para implementar topologias sobre a chave crossbar e não para mudar a implementação da mesma. Portanto, a reconfiguração não é dependente de um dispositivo programável (Ex. FPGA). Durante os primeiros resultados de simulação da chave crossbar reconfigurável em VHDL, definimos duas arquiteturas reconfiguráveis: a primeira de 1 bit e a segunda de 2 bits. Estes bits representam os sinais de entrada da chave crossbar responsáveis pela reconfiguração. A chave crossbar reconfigurável (figura 23 e 25) possui algumas entradas relacionadas ao barramento de dados e ao registrador de Status. O barramento de dados é por onde trafegam os dados utilizados pelo processador e que, através de instruções podem interferir no chaveamento ou não dos nós que ligam as entradas e saídas. O registrador de Status (figura 13 e 20) é um registrador de 8 bits responsável por armazenar quais são as saídas que estão sendo utilizadas. Através deste registrador é possível evitar conflitos no envio de dados para as saídas. Estes dois barramentos são comuns às duas arquiteturas, havendo alteração apenas no barramento de reconfiguração, que é o barramento usado pela unidade de reconfiguração, responsável pelo controle dos bits de reconfiguração. Existe também em cada nó (ponto) de conexão da chave crossbar um validador de endereços que tem a função de comparar se o endereço no cabeçalho do pacote é igual ao seu ponto de conexão. Caso seja igual, o pacote é redirecionado para a saída. Isto significa que, a microengine ao receber um pacote, lê o cabeçalho e descobre que o destino está na saída 3. A microengine acrescenta neste cabeçalho (ou um pré-cabeçalho) o valor 3 e quando o pacote 52 passar pelo validador (ou comparador) de endereços do ponto de conexão da saída 3, o mesmo será redirecionado. Desta forma evitamos a utilização do processador de gerenciamento para descobrir destinos e rotear pacotes, aumentando o desempenho de roteamento. Nos tópicos seguintes iremos apresentar as diferenças das duas arquiteturas e como elas funcionam. 4.2.1 – Chave Crossbar Reconfigurável de 1 bit Nesta arquitetura, os bits de reconfiguração funcionam como sinais de fechamento ou de abertura dos nós de conexão. Adotamos o bit 0 como nó aberto e bit 1 como nó fechado. Quando precisamos implementar uma topologia na chave crossbar apenas entramos no barramento de reconfiguração com a matriz de reconfiguração, composta por todos os bits ou apenas com os bits dos nós que precisam ser alterados. Após a reconfiguração, a topologia desejada está implementada na chave crossbar e somente através dos pontos conectados é que poderá haver comunicação entre as entradas e saídas. De acordo com a figura 23, a chave crossbar de 1 bit possui uma barramento de dados de 32 bits (referente à arquitetura do R2NP), um barramento de 8 bits (referente ao registrador de status do arquitetura do R2NP) e um barramento interno de reconfiguração de 64 bits, que define quais nós estão fechados e portanto, qual topologia foi implementada. Para esta chave crossbar (quadrada) existem 8 entradas e 8 saídas ou 64 nós reconfiguráveis. Esta não é a realidade da chave crossbar reconfigurável do nosso processador de rede. De acordo com a arquitetura da UCDR, possuímos além das entradas que vêm das microengines, as entradas originadas dos buffers reconfiguráveis. Como esta quantidade ainda não está definida, a chave crossbar será apresentada ao longo desta dissertação com 8 entradas e 8 saídas ou 4 entradas e 4 saídas. Figura 23 – Arquitetura da chave crossbar de 1 bit 53 Portanto, a chave crossbar reconfigurável após receber os bits de reconfiguração não permite que instruções do processador de gerenciamento possam interferir e alterar as conexões realizadas. Esta arquitetura de 1 bit possui flexibilidade de implementação de topologias durante tempo de execução, mas não permite que se tenha flexibilidade de alteração pelo processador de gerenciamento. Esta limitação impede, por exemplo, que programas não autorizados alterem a topologia escolhida e que muitas vezes mantém a segurança de uma rede. A grande vantagem é contar com uma conexão pronta para manter a comunicação entre os pontos de origem e destino, sem perder tempo de processamento e fechamento de conexões, que poderiam retardar o envio de um pacote de dados. O processador de gerenciamento apenas irá processar questões relativas aos parâmetros de qualidade de serviço, por exemplo. A figura 24 ilustra uma topologia anel criada na chave crossbar reconfigurável. Somente os nós que receberam o bit 1 foram fechados e os demais ficaram abertos. Neste caso, partindo do suposto que cada entrada e respectiva saída estão conectadas a computadores, somente haverá comunicação, por exemplo, do computador 1 para os computadores 2 e 8 e vice-e-versa. Nesta topologia o computador 1 somente irá se comunicar com o computador 5 se houver a passagem do pacote entre os caminhos 2, 3 e 4 ou 8, 7 e 6. Figura 24 – Topologia implementada usando chave crossbar de 1 bit Esta arquitetura tem como característica a flexibilidade de implementação dinâmica de topologias através de bits de reconfiguração, mas retira a intervenção do processador de gerenciamento no fechamento ou abertura de conexões na chave crossbar. É importante ressaltar que, apesar do processador não conseguir alterar diretamente um nó reconfigurado, ele consegue interferir na unidade de controle de reconfiguração, informando a necessidade de alteração da topologia escolhida. Neste caso, até que a nova topologia fosse configurada, o pacote de entrada poderia ser armazenado temporariamente em um buffer reconfigurável. A 54 não interferência direta do processador de gerenciamento cria níveis de segurança e acesso para implementação de topologias. Desta forma, mesmo que o usuário do processador altere o programa, para que ele consiga reconfigurar a topologia diretamente na chave crossbar, ele não terá sucesso. Os motivos principais para esta restrição se devem a questões de segurança em hardware. Sendo assim, uma topologia criada significa conexão e comunicação permitida. Se houver uma falha no programa executado pelo processador uma conexão não permitida poderá ser fechada. Não consideramos esta arquitetura de 1 bit a mais adequada por julgarmos interessante, que em determinadas situações, o processador de gerenciamento (através de suas instruções) possa realizar o fechamento ou abertura de uma conexão. Por este motivo, desenvolvemos a proposta da chave crossbar de 2 bits que é apresentada no tópico 4.2.2. No entanto, mostramos no capítulo 5 (Resultados) que a implementação dinâmica de topologias através da chave crossbar reconfigurável de 1 bit se mostrou melhor do que em uma chave crossbar tradicional, quando se tem um padrão de comunicação entre os nós da topologia de rede. 4.2.2 – Chave Crossbar Reconfigurável de 2 bits Nesta nova arquitetura, procuramos criar a possibilidade de intervenção do processador de gerenciamento na topologia implementada pela chave crossbar reconfigurável. Por este motivo aumentamos os bits de reconfiguração de 1 para 2. Por conseqüência o barramento de reconfiguração (para esta chave crossbar) aumentou para 128 bits (64 nós de conexão). Conforme ilustrado pela figura 25, é possível verificar que, para fechar um nó seria necessário dois bits iguais a 1 e para abrir um nó dois bits iguais a 0. No entanto, as variações 01 e 10 poderão ser usadas pelo processador de gerenciamento da seguinte forma: • 01: Nó aberto. O processador de gerenciamento pode acessar e fechar este nó utilizando os bits 10. • 10: Nó fechado. O processador de gerenciamento pode acessar e abrir este nó utilizando os bits 01. Sendo assim, 00 e 01 significam nó aberto e 11 e 10 significam no fechado. A diferença é que nas situações em que os bits de reconfiguração são iguais (00 e 11) o processador de gerenciamento não terá acesso para alteração e implementação de novas topologias. É importante ressaltar que, as quatro variações (00, 01, 10, 11) são bits de reconfiguração, porém os pares diferentes e os pares iguais permitem ou não a intervenção de instruções do processador de gerenciamento para implementação de topologias. O ganho que se tem em 55 adotar a arquitetura de 2 bits está diretamente relacionado com o aumento de flexibilidade. A questão é que agora podemos implementar uma topologia na chave crossbar através da unidade de reconfiguração e através do processador de gerenciamento. Figura 25 – Arquitetura da chave crossbar de 2 bits A figura 26 ilustra o mesmo exemplo citado para a chave de 1 bit. Implementando a topologia em anel é possível fechar outras conexões e permitir um maior número de comunicações entre os pontos (entradas e saídas). Supondo novamente a existência de computadores em cada entrada e saída desta topologia, podemos observar que inicialmente as conexões obedecem a mesma ordem definida para a chave crossbar de 1 bit. No entanto se fosse necessário que o computador 1 se comunicasse com outros computadores, os bits 01 enviados para os nós E1S3, E1S4, E1S5, E1S6 e E1S7 iriam permitir o acesso de instruções do processador de gerenciamento e conseqüentemente o fechamento (através dos bits 10) destas conexões. Isto pode ser muito útil se for constatado uma permanente comunicação entre o computador 1 e outros micros. Evitaria-se um aumento de tráfego pelos caminhos intermediários, permitindo um maior desempenho e vazão de dados. 56 Figura 26 – Topologia implementada usando chave crossbar de 2 bits Apesar da melhoria da arquitetura, poderíamos fazer a seguinte pergunta: E se o conjunto de bits 11 precisasse se tornar 00 sem reconfiguração, as instruções do processador conseguiriam alterar? A resposta é não. Partimos do princípio de que uma conexão fechada é uma possibilidade autorizada de comunicação implementada pelo gerenciador dos bits de reconfiguração. Caso fosse necessário impedir esta comunicação, sem alteração de bits de reconfiguração, a solução seria através das microengines. As microengines têm um papel importante em todo o processamento de pacotes porque ela é o primeiro ponto de processamento de entrada. A microengine pode ler o cabeçalho e acrescentar informações, que barrariam o pacote de dados quando lidas em cada ponto de conexão da chave crossbar, evitando o seu envio até o destino. Neste caso, a atuação de uma microengine seria mais rápida do que as próprias instruções do processador, pela sua própria localização na arquitetura do R2NP (primeiro ponto de processamento). As topologias realizadas no espaço da chave crossbar reconfigurável (1 ou 2 bits) podem representar uma segmentação de rede, permitindo a comunicação em grupos separados de computadores ou sub-redes. É possível implementar broadcast e multicast sem que haja conflitos. Quando duas entradas enviam dados simultaneamente para uma única saída, pode ocorrer um conflito. Neste caso, técnicas como multiplexação são mais eficientes do que um processador lendo cabeçalhos e enviando instruções para abertura ou fechamento de conexões. Veremos no capítulo de resultados que a técnica utilizada para evitar conflitos foi através de um registrador de controle. Apesar de não ser tão eficiente, é bastante simples e foi útil para que conseguíssemos verificar a flexibilidade do chaveamento de dados e implementação dinâmica de topologias da proposta da chave crossbar reconfigurável. 57 5 – RESULTADOS Neste capítulo apresentamos os principais resultados [Freitas 2003a, 2002a, 2002b, 2002c, 2001] obtidos durante a execução da pesquisa. Iremos destacar algumas análises matemáticas e simulações realizadas para verificar o comportamento das arquiteturas e dos conjuntos de instruções das propostas de processadores de rede. É importante ressaltar, que apesar deste capítulo abordar aspectos de análise, simulação e verificação, podemos considerar as propostas de arquiteturas apresentadas no capítulo anterior como importantes resultados da pesquisa. O desenvolvimento de modelos de arquiteturas do processador de rede, da UCDR e da chave crossbar reconfigurável também são resultados alcançados que compõem o processo de consolidação dos objetivos, metas e método adotado. 5.1 – ANÁLISE DE DESEMPENHO DAS ARQUITETURAS E DOS CONJUNTOS DE INSTRUÇÕES Neste tópico apresentamos resultados comparativos de desempenho dos conjuntos de instruções projetados na versão RCNP (Reconfigurable CISC Network Processor) e na versão R2NP (Reconfigurable RISC Network Processor). É feita uma comparação de desempenho entre o processador RCNP e um processador GPP conceitual, e posteriormente, entre os processadores RCNP e R2NP. Ao final mostramos qual o impacto do projeto e do uso da chave crossbar reconfigurável na utilização das instruções pelos processadores de rede. 5.1.1 – Análise de Desempenho do RCNP em Relação a um GPP Conceitual Os códigos, descritos a seguir, estão baseados em duas topologias (Figuras 27 e 28), onde cada nó representa um processador (RCNP). Foram implementados dois algoritmos de roteamento e não foi levada em consideração a possibilidade de conflito na saída de pacotes. Por isso, o registrador de Status não foi verificado em nenhum dos algoritmos. Estes códigos foram simulados usando o NPSIM (Network Processor Simulator), descrito no anexo 1. Como estamos interessados em verificar o desempenho das instruções não utilizaremos a flexibilidade da chave crossbar. Portanto, podemos considerar que os bits de reconfiguração foram setados para 01 ou 10. Desta forma, toda a responsabilidade de roteamento será do processador de gerenciamento e não da implementação dinâmica de 58 topologias pela chave crossbar. Podemos considerar também, que estamos usando uma chave crossbar tradicional. Figura 27 – Topologia hipercubo • Figura 28 – Topologia árvore Topologia baseada em Hipercubo o Cada endereço do hipercubo tem apenas 1 bit de diferença para os endereços dos nós adjacentes (figura 27). Este algoritmo foi desenvolvido para o processador P3. Para esta topologia foi desenvolvido o seguinte código de roteamento (Tabela 3): Tabela 3 – Programa assembly para topologia hipercubo (ISA RCNP) LDX F,000006 LDI D,03 PUT SUI B,00 JZ 000000 LDI B,00 LDI C,05 ENT BC XOR D MOV E,A JZ F ANI A,01 JMZ 000029 ANI E,02 JMZ 000025 LDI B,03 SEC JMP F LDI B,02 SEC JMP F LDI B,01 SEC JMP F //Endereço de PUT //Processador = P3 //Busca buffer permanente //B recebe valor do buffer. //Se for zero, não existe pacote //Posição que se encontra endereço. //Posição que se encontra endereço. //Busca o endereço no buffer //Operação XOR (A ⊕ D) //Move dado de reg. A para reg. E //Se chegou ao destino, volta a PUT //Senão verifica se é saída 01 //Se for maior é verdadeiro e jump S1 //Verifica se é saída 02 //Se for maior é verdadeiro e jump S2 //Saída 3, carregada em B //Redireciona, buffer entrada OS 03 //Voltar a PUT //Saída 2, carregada em B //Redireciona, buffer entrada OS 02 //Voltar a PUT //Saída 1, carregada em B //Redireciona, buffer entrada OS 01 //Voltar a PUT 59 • Topologia baseada em árvore: o O endereço de cada nó está no desenho da topologia ilustrada na figura 28. À esquerda de cada nó, sempre existe um endereço de menor valor. À direita, sempre um endereço de maior valor. O algoritmo foi desenvolvido para o processador P 06 e para esta topologia foi desenvolvido o seguinte código de roteamento (Tabela 4): Tabela 4 – Programa assembly para topologia árvore (ISA RCNP) LDI D,06 PUT SUI B,00 JZ 000025 LDI B,00 LDI C,05 ENT BC SUB D JMI 00001A LDI B,04 SEC JMP 000002 JZ 000025 LDI B,05 SEC JMP 000002 HLT //Processador 06 – P 06 //Busca aleatória do buffer de entrada //B recebe valor do buffer. //Se for zero, não existe pacote. //Posição que se encontra endereço. //Posição que se encontra endereço. //Busca o endereço no buffer //Verifica se é menor ou maior do que 06. //Jump se maior ou igual //Senão, a saída é 04 //Redireciona, buffer entrada PS 04 //Volta para PUT //Se for 0, já chegou ao destino //Se for maior, a saída é 05 //Redireciona, buffer entrada PS 05 //Volta para PUT //Fim do programa Obs.: P 06 = local, P 04 = PS 04, P 12 = PS 05 Os gráficos das Figuras 29 e 30 ilustram a quantidade de acessos à memória e a quantidade de instruções de entrada e saída usadas pelo processador proposto e por um processador conceitual CISC GPP de 8 bits, para execução dos dois algoritmos descritos. Os valores dos gráficos são referentes a um pacote de apenas 10 bytes. Independentemente do tamanho do pacote, a simulação ocorreu tendo o endereço de destino na posição 5 do pacote. 60 Figura 29 – Acessos à memória Figura 30 – Instruções de entrada e saída Se o pacote fosse de 1500 bytes, os valores do processador proposto, permaneceriam em 9 e 8 para acessos à memória, e 3 e 3 para quantidade de instruções de entrada e saída. Estes valores são independentes do tamanho do pacote. Para o processador de propósito geral, os valores subiriam para 1061 e 1060, para acessos à memória, e 511 e 511 para quantidade de instruções de entrada e saída. Estes valores variam de acordo com o tamanho do pacote. É importante ressaltar que as instruções de entrada e saída do processador proposto acessam buffers internos, ao contrário do processador de propósito geral, que acessa buffers externos. O processador proposto utiliza apenas uma instrução para ler o endereço de destino do buffer interno, enquanto o GPP precisa ler byte a byte do buffer externo e guardar em memória, até que a posição do pacote, que guarda o destino, seja lida. Apenas uma instrução é utilizada para redirecionar todo conteúdo do buffer interno para a saída desejada, enquanto que o GPP precisa ler byte a byte do buffer externo e escrever byte a byte na saída desejada. O código gerado para o GPP possui loops com instruções de acesso à memória e de leitura e 61 escrita nas portas de entrada e saída. O processador proposto é mais rápido, lê-se diretamente da posição desejada do buffer e redireciona todo o conteúdo para a saída sem precisar ler ou escrever nas portas de entrada e saída e/ou na memória. No tópico seguinte apresentamos a relação de desempenho entre os processadores RCNP e R2NP. 5.1.2 – Análise de Desempenho do R2NP em Relação ao RCNP Apresentamos neste tópico uma análise matemática do ganho obtido através do projeto do processador de rede (R2NP) usando pipeline no conjunto de instruções. Desta forma, iremos apresentar os mesmos programas desenvolvidos (apresentados no tópico anterior – acrescentando o anel unidirecional) para os processadores RCNP e R2NP e quais as métricas e parâmetros adotados [Patterson 2000] para verificar a relação de desempenho entre as duas propostas. Nesta verificação iremos considerar que a chave crossbar não é reconfigurável ou que todos os bits de reconfiguração estão setados em 01 ou 10, possibilitando apenas que o processador de gerenciamento faça as conexões desejadas. Sendo assim, estaremos verificando o funcionamento das instruções dedicadas que fazem acesso às portas de entrada e saída e à chave crossbar. Para as métricas estão definidas as seguintes variáveis: Fc Freqüência do clock (Hz)1 Tp Tempo de processador (s) Ncc Número de ciclos de clock do programa Nmci Número médio de ciclos por instrução Nip Número de instruções do programa Gd Ganho de desempenho Então, podemos relacioná-las da seguinte forma: Nmci = Ncc / Nip Tp = Nip * Nmci / Fc Gd = Tp(RCNP) / Tp(R2NP) 1. Os protótipos dos processadores RCNP e R2NP ainda não existem, portanto, será utilizada uma freqüência de 500MHz. 62 É importante ressaltar que o modelo RCNP não utiliza pipeline, suas instruções são executadas seqüencialmente, uma após o término da outra. Para o modelo R2NP é utilizado o pipeline e em casos ideais, a diferença entre a execução de uma instrução e a próxima é de apenas 1 ciclo (pipeline cheio). Esta condição depende do programa ou da carga de trabalho que está sendo executado, já que instruções condicionais e de salto podem provocar bolhas (espaços vagos) durante a execução no pipeline. As figuras 31 (anel unidirecional), 32 (hipercubo) e 33 (árvore balanceada) são as topologias utilizadas para análise de desempenho dos programas representados nas tabelas 5, 6 e 7. Anel unidirecional: O objetivo desta topologia é criar uma condição em que cada micro esteja conectado com sua porta de saída na porta de entrada do micro à esquerda. Esta topologia foi criada por apenas um processador R2NP. A chave crossbar é responsável por estabelecer todas as conexões através das instruções do processador. Portanto, na tabela 5 o programa ilustra a construção da topologia ao longo do tempo. Figura 31 – Topologia anel unidirecional Tabela 5 – Assembly anel unidirecional 1 2 3 4 5 6 7 8 9 10 11 12 13 RCNP LDI A,07 LDI B,01 PUT B LDI B,08 SEC FCX PUT B DCR B SEC FCX DCR A JMZ 000009 HLT Ciclos 5 5 4 5 4 4 4 4*8 4*7 4*7 4*7 5*8 4 R2NP LDI A,0008 LDI B,0001 LDI C,000A LDI D,0007 FCX A,B,C DEC A LDI B,0006 FCX A,B,C DEC A DEC B JMZ D HLT --------------- Ciclos 5 1 1 1 1 1 1 1+1*7 1*7 1*7 2+1*7 1 ---------- 63 Hipercubo: Nesta topologia, o endereço de cada nó difere de apenas 1 bit para o nó adjacente. Esta diferença de bit é utilizada no programa de roteamento da tabela 6. Cada nó desta topologia pode ser considerado com um processador R2NP. Neste caso, o processador P0 possui três entradas e três saídas da chave crossbar sendo usadas. A tabela 6 ilustra o mesmo programa descrito na tabela 3, porém com a inclusão da versão para o R2NP. Figura 32 – Topologia hipercubo Tabela 6 – Assembly hipercubo RCNP Ciclos R2NP Ciclos 1 LDX F,000006 5 LDI N,0013 5 2 LDI D,03 5 LDI M,0015 1 3 PUT 4 LDI F,0007 1 4 SUI B,00 5 LDI A,0003 1 5 JZ 000000 5 LDI B,0002 1 6 LDI B,00 5 LDI C,0001 1 7 LDI C,05 5 LDI E,0005 1 8 ENT BC 4 ENT G,E,Trab 1 9 XOR D 4 MOV H,Trab 1 10 MOV E,A 4 DEC H 1 11 JZ F 4 JZ I 1 12 ANI A,01 5 XOR J,G,A 1 13 JMZ 000029 5 JZ F 1 14 ANI E,02 5 NE AND L,J,C 1 15 JMZ 000025 5 NE JMZ M 1 16 LDI B,03 5 NE AND L,J,B 1 NE 17 SEC 4 NE JMZ N 1 NE 18 JMP F 4 NE SEC A,Trab 1 NE 19 LDI B,02 5 NE JMP F 1 NE 20 SEC 4 NE SEC B,Trab 1 NE 21 JMP F 4 NE JMP F 1 NE 22 LDI B,01 5 SEC C,Trab 1 23 SEC 4 JMP F 1 24 JMP F 4 ---------------------NE: Instrução não executada na simulação (saltos do tipo JMP) 64 Árvore balanceada: Os endereços de cada vértice crescem da esquerda para a direita, servindo como referência para o programa de roteamento da tabela 7. Parte desta topologia pode estar presente na chave crossbar, assim como cada nó pode representar um processador R2NP. O programa da tabela 7 é o mesmo da tabela 4, porém com a inclusão da versão para o R2NP. Figura 33 – Topologia árvore balanceada Tabela 7 – Assembly árvore balanceada RCNP Ciclos R2NP Ciclos 1 LDI D,06 5 LDI E,000B 5 2 PUT 4 LDI F,0017 1 3 SUI B,00 5 LDI H,0014 1 4 JZ 000025 5 LDI B,0000 1 5 LDI B,00 5 LDI D,0006 1 6 LDI C,05 5 LDI C,0005 1 7 ENT BC 4 MOV G,C 1 8 SUB D 4 ENT A,C,Trab 1 9 JMI 00001A 5 SUB I,Trab,B 1 10 LDI B,04 5 JZ H 1 11 SEC 4 SUB I,A,D 1 12 JMP 000002 5 JMI F 1 13 JZ 000025 5 NE DEC G 1 14 LDI B,05 5 NE SEC G,Trab 1 15 SEC 4 NE JMP E 1 16 JMP 000002 5 NE JZ H 1 NE 17 HLT 4 NE SEC G,Trab 1 NE 18 --------------- ---------- JMP E 1 NE 19 --------------- ---------- HLT 1 NE NE: Instrução não executada na simulação (saltos do tipo JMP) Para o programa da topologia anel unidirecional, os resultados são os seguintes: Proposta RCNP Nip = 45, Ncc = 191, Ncmi = 191 / 45 = 4,244 Tp = 191 / 500 10E6 = 0,382 µs 65 Proposta R2NP Nip = 39, Ncc = 43, Ncmi = 43 / 39 = 1,102 Tp = 43 / 500 10E6 = 0,086 µs Gd = 0,382 / 0,086 = 4,44 Podemos concluir que, para o programa da topologia anel unidirecional, o processador R2NP foi 4,44 vezes mais rápido. Para o programa da topologia hipercubo, os resultados são os seguintes: Proposta RCNP Nip = 16, Ncc = 73, Ncmi = 73 / 16 = 4,562 Tp = 73 / 500 10E6 = 0,146 µs Proposta R2NP Nip = 17, Ncc = 21, Ncmi = 21 / 17 = 1,235 Tp = 21 / 500 10E6 = 0,042 µs Gd = 0,146 / 0,042 = 3,47 Neste caso o ganho de desempenho mostrou que o processador R2NP foi 3,47 vezes mais rápido. Para o programa da topologia árvore balanceada, os resultados são os seguintes: Proposta RCNP Nip = 12, Ncc = 56, Ncmi = 56 / 12 = 4,666 Tp = 56 / 500 10E6 = 0,112 µs Proposta R2NP Nip = 15, Ncc = 19, Ncmi = 19 / 15 = 1,266 Tp = 19 / 500 10E6 = 0,038 µs Gd = 0,112 / 0,038 = 2,94 Para esta topologia o ganho de desempenho mostrou que o processador R2NP foi 2,94 vezes mais rápido. A tabela 8 apresenta uma análise comparativa de desempenho. 66 Tabela 8 – Comparativo de desempenho Anel Hipercubo Árvore No médio de ciclos RCNP R2NP 4,244 1,102 4,562 1,235 4,666 1,266 Ganho de desempenho RCNP (µs) / R2NP (µs) 4,44 3,47 2,94 O ganho de desempenho favorável ao R2NP é resultado de um projeto de processador baseado em um modelo RISC. Como apenas instruções específicas (load e store) podem fazer acesso à memória em um processador RISC, um loop com acessos à memória foi facilmente evitado, o que não ocorreu com o RCNP. A linha 12 da tabela 5 mostra o acesso à memória feito pela instrução JMZ (8 vezes), que provocou um aumento da relação de desempenho. O segundo e terceiro programas são executados sem loop e nestes dois casos os ganhos diminuíram, mas não deixaram de ser relevantes. Apesar do número de instruções entre os processadores RCNP e R2NP serem muito próximos, a quantidade de ciclos do R2NP (reduzida pelo pipeline) proporcionou um tempo menor de processamento (Tp) e também um número médio de ciclos bem próximo a 1. No entanto, estes números podem enganar. Se o programa da árvore balanceada não estivesse bem projetado e possuísse uma instrução a mais, executada em 1 ciclo, o número médio de 1,266 ciclos iria cair para 1,250 e o ganho de desempenho iria baixar de 2,94 para 2,80. Não adianta aproximar o número médio de ciclos para 1 se a quantidade de ciclos aumentar. Em processadores CISC sem pipeline, como o RCNP, o número de ciclos em relação ao de instruções aumenta consideravelmente em um loop, favorecendo o ganho de desempenho para um processador RISC (R2NP). Neste capítulo não é feita uma análise detalhada de conflitos no pipeline, porém, algumas considerações podem ser feitas: Os conflitos estruturais são resolvidos através do caminho de dados, não ocorrendo, portanto, no R2NP. Para o conflito de controle é adotada a técnica de predição em instruções do tipo jump condicional. A linha 11 da tabela 5 exemplifica o ciclo a mais referente à bolha. O conflito de dados é resolvido, por exemplo, através de técnicas de adiantamento de dados, não ocorrendo, portanto, no R2NP. Com relação aos valores encontrados na tabela 8 podemos concluir que, para o processador RCNP ser mais rápido, sem alterar o projeto, seria necessário aumentar a freqüência de clock, o que poderia implicar em problemas externos ao projeto como custo e temperatura, por exemplo. Os principais fatores de melhoria do projeto R2NP e que 67 favoreceram a relação do ganho de desempenho, são os conceitos RISC baseados no formato de instrução e no caminho de dados em pipeline. Apresentamos até o momento um comparativo de desempenho do conjunto de instrução com base no uso do pipeline. No entanto, é possível verificar o impacto do ponto de vista da quantidade de instruções que são usadas para acessar a memória e as portas de entrada e saída (tabela 9), conforme apresentamos no tópico 5.1.1. Tabela 9 – Quantidade de instruções (sem chave crossbar) Anel Hipercubo Árvore Memória RCNP R2NP 11 5 9 7 8 6 Portas de E/S RCNP R2NP 18 9 3 2 3 2 Nesta primeira análise iremos destacar o fato de que os bits de reconfiguração permanecem setados em 01 ou 10 (o processador de gerenciamento é o único que manipula os nós de conexão). Ou seja, podemos considerar também que a chave crossbar utilizada ainda é tradicional. Os valores encontrados nesta tabela refletem diretamente no ganho de desempenho encontrado na análise do impacto do uso do pipeline. Um número mais alto de acessos à memória pode prejudicar o desempenho do processador. Este detalhe fica bastante evidenciado nos resultados da topologia Anel. O dobro de instruções é utilizado, devido principalmente ao loop. O R2NP utiliza instruções de acesso à memória fora do loop e apesar da diferença da quantidade instruções diminuir nos outros dois programas, a quantidade de ciclos foi responsável pela relevância no ganho de desempenho. Quanto menos acessos às portas de entrada e saída, mais liberdade o processador terá para executar outras tarefas. A análise do pacote fica mais eficiente e rápida com a utilização de menos instruções. A diferença é mínima do RCNP para o R2NP, pois o conjunto de instruções de rede é parecido e possui um bom projeto nos dois modelos. No entanto, ao comparar os dois processadores com modelos GPPs (General-purpose processor), como apresentado no WSCAD’01 [Freitas 2001], a diferença aumenta consideravelmente. O RCNP apresentou um ganho de desempenho que chegou a ser 10 vezes melhor em instruções de acesso à memória, comparando com um GPP CISC conceitual. Os processadores GPPs não possuem características dedicadas, que facilitariam e aumentariam o desempenho em aplicações de rede. 68 É importante ressaltar que os valores usados na análise do RCNP foram obtidos usando o NPSIM (simulador desenvolvido para testes funcionais). Portanto, os valores analisados matematicamente para o R2NP foram comparados com resultados de simulação em software (RCNP / NPSIM). 5.1.3 – Análise de Desempenho usando a Chave Crossbar Reconfigurável Até o momento estamos analisando aspectos relacionados apenas para chave crossbar sem implementação dinâmica de topologias. Portanto, podemos agora analisar qual seria o impacto de uma implementação dinâmica de topologias sobre a chave crossbar reconfigurável em relação à utilização somente de instruções do processador de rede proposto, conforme mostrado nos tópicos anteriores. Primeiramente iremos destacar alguns passos durante o redirecionamento de pacotes de dados com a chave crossbar reconfigurável: 1. Os bits de reconfiguração setam a chave crossbar e a topologia é criada; 2. Os pacotes de dados redirecionados pelas microengines são enviados para a chave crossbar; ou 3. Os pacotes de dados são encaminhados para os buffers reconfiguráveis; ou 4. Os pacotes de dados são encaminhados para a memória; 5. O processador de gerenciamento lê o cabeçalho do pacote de dados, armazenado em memória ou buffers, e encaminha para a chave crossbar ou diretamente para porta de saída. Ou seja, se não houver conflitos de saída ou a necessidade de criação de uma nova conexão pelo processador, não haverá utilização de instruções para leitura dos cabeçalhos dos pacotes de dados. Os pacotes chegarão pelas portas de entrada, haverá uma leitura destes pacotes pelas microengines e o redirecionamento para as portas de saída através da chave crossbar reconfigurável. Somente no momento em que este pacote é guardado em buffers ou memória ou da necessidade de uma nova conexão (não implementada pelos bits de reconfiguração), é que se fará uso das instruções do processador de gerenciamento para leitura dos cabeçalhos dos pacotes e acesso à memória. Desta forma, poderíamos ter para a topologia em árvore (figura 34), implementada por bits de reconfiguração, nenhum acesso às portas de entrada, saída ou memória pelas instruções 69 do processador de gerenciamento. Nesta topologia, todas as entradas e saídas estão representadas através das conexões em cada nó. Ou seja, todos os supostos computadores desta topologia estão conectados através da mesma chave crossbar. Nas figuras 28 e 33 a situação é diferente, a topologia ilustra uma rede que não necessariamente está toda conectada em um mesmo processador de rede e por conseqüência em sua chave crossbar. Portanto, haveria uma tabela de roteamento onde o suposto computador P 06 teria que ler para que soubesse qual rota seguir para atingir, por exemplo, o computador P 11. Na chave crossbar do processador P 06 haveria os processadores P 04 e P 12 conectados nas portas de entrada e saída. Figura 34 – Topologia árvore balanceada por bits de reconfiguração Independentemente de toda a rede estar representada ou não através da topologia implementada pela mesma chave crossbar, o fato é que existe uma diminuição na utilização de instruções para acessos às portas de entrada e saída e memória, fazendo com que o processador de gerenciamento execute tarefas mais “nobres”, tais como: • Construção e manutenção de tabelas de roteamento; • Gerenciamento da rede e questões relativas à qualidade de serviço (QoS); • Gerenciamento de memória. Como as microengines só existem na arquitetura do R2NP, ao usarmos os bits de reconfiguração, a tabela 9 ficaria com os seguintes resultados (tabela 10): 70 Tabela 10 – Quantidade de instruções (com chave crossbar) Anel Hipercubo Árvore Memória RCNP R2NP 11 0 9 0 8 0 Portas de E/S RCNP R2NP 18 0 3 0 3 0 Desta forma, estaríamos aproveitando a topologia implementada, através dos bits de reconfiguração, para aumentar a flexibilidade, a vazão de dados e o desempenho de operação do processador. Portanto, não haveria necessidade da execução de instruções pelo processador de gerenciamento para que houvesse comutação dos nós da chave crossbar e conseqüente roteamento dos pacotes de dados. Este roteamento iria acontecer sem o atraso de processamento de instruções uma vez que a topologia já estaria implementada e o roteamento acontecendo através da combinação microengines e chave crossbar reconfigurável, liberando o processador de gerenciamento para execução de outras atividades. É importante ressaltar que, apesar dos resultados garantirem uma eficiência do conjunto de instruções, uma alteração na arquitetura do R2NP ou na chave crossbar, pode provocar uma melhoria de desempenho e uma necessidade de modificação do conjunto de instruções, alterando, acrescentando ou removendo uma instrução, como aconteceu durante o desenvolvimento do modelo CISC para o RISC. 5.2 – ANÁLISE DA IMPLEMENTAÇÃO DINÂMICA DE TOPOLOGIAS USANDO TEORIA DE GRAFOS De acordo com os resultados do tópico 5.1.3, verificamos que a utilização da chave crossbar reconfigurável pode reduzir a zero, o número de instruções de acesso à memória ou portas de entrada e saída. É importante ressaltar que isto ocorre em casos específicos (conforme algoritmos e topologias propostas). No entanto, a tendência é que a reconfiguração e implementação dinâmica de topologias possibilitem o uso mínimo de instruções para roteamento. Sendo assim, neste tópico apresentamos algumas métricas e parâmetros para verificar a flexibilidade e o aumento de desempenho usando teoria de grafos. Como visto no tópico 2.1.3, existem algumas métricas [Netto 2001] [Calvert 1997, 1992] adotadas para a modelagem de grafos aplicada às redes de comunicação de dados. Iremos adotar duas para analisar o impacto da utilização da chave crossbar reconfigurável como unidade de chaveamento de pacotes e implementação dinâmica de topologias em uma rede de interconexão de dados. São elas: 71 • Grau médio do grafo; Podemos considerar como grau médio de um grafo, o quanto os vértices estão conectados entre si através das arestas, proporcionando uma maior possibilidade de caminhos alternativos. Grau médio (GM) = 2*QtdAresta (A) / QtdVértice (V) • Diâmetro do grafo e menor distância entre vértices. Podemos considerar como diâmetro de um grafo, o maior caminho (quantidade de saltos) entre quaisquer dois vértices do grafo. Desta forma, podemos dizer que, quanto menor o diâmetro também menor será o caminho entre dois vértices. Neste caso, não levando em consideração os possíveis e diferentes pesos nas arestas. Podemos considerar, portanto, que o menor diâmetro é o menor caminho entre dois vértices. Com base nestas duas métricas procuramos apresentar como a flexibilidade da implementação dinâmica de topologias pode ajudar no desempenho de processamento de dados. A figura 35 apresenta três topologias que poderiam ser implementadas na chave crossbar reconfigurável (em tempo de execução) de acordo com a necessidade de processamento de pacotes. Figura 35 – Topologias dinâmicas Para modelarmos as topologias de comunicação de dados em grafos adotamos que os nós das redes são os vértices e as linhas de comunicação são as arestas. Em uma situação hipotética, o seguinte problema poderia ser apresentado: uma topologia anel é implementada na chave crossbar reconfigurável através dos bits de reconfiguração. 72 Porém, constatou-se um crescente número de envio de pacotes do nó 1 para os demais nós da topologia, tal como um broadcast. Neste caso, se apenas o nó 1 estabelecesse comunicação com os demais, a melhor topologia seria estrela. Contudo, as demais comunicações permanecem e por este motivo devem ser mantidas na implementação da nova topologia. Como a chave crossbar é reconfigurável, as conexões diretas que faltavam foram implementadas dinamicamente. Desta foram, diminui-se o número de saltos para a comunicação e conseqüentemente aumenta o desempenho e a vazão de dados do nó 1 para os demais nós. Para a topologia apresentada no início (anel) e para a topologia final (anel/estrela), os seguintes resultados com base nas duas métricas de modelagem em grafos são: Topologia Anel (8 Vértices e 8 Arestas): • Grau médio do grafo: GM = 2*8/8 = 2 • Menor Diâmetro do vértice 1 ao 5: MD = 4 Topologia Anel/Estrela (8 Vértices e 13 Arestas): • Grau médio do grafo: GM = 2*13/8 = 3,25 = 3 • Menor Diâmetro do vértice 1 ao 5: MD = 1 Portanto, as métricas baseadas em modelos de grafos mostraram o quanto é importante uma topologia específica ou dedicada à aplicação. Há um aumento da capacidade de estabelecer a comunicação (grau médio do grafo) com os demais vértices e por este motivo, há uma diminuição no tempo de resposta de comunicação (menor diâmetro – caminho entre vértices) e por conseqüência um melhor desempenho de processamento de pacotes, já que instruções desnecessárias não serão utilizadas. É importante ressaltar que, o cálculo do diâmetro com base apenas no número de saltos pode não ser satisfatório, uma vez que as arestas podem ter pesos diferentes (linhas de comunicação com custos – tráfegos – ou latências diferentes). Porém, em casos onde estes pesos são iguais em todas as arestas, esta análise é suficiente para o cálculo de menor caminho. No nosso caso, todas as arestas possuem o mesmo peso, já que cada aresta representa uma conexão realizada pela chave crossbar (entre entradas e saídas). Desta forma, o resultado do cálculo de menor diâmetro reflete a realidade da chave crossbar reconfigurável proposta. No entanto, podemos considerar que o processador de rede (R2NP) conhece a influência do tráfego, latência e tempo de transmissão [Menascé 2003] para que a mensagem enviada para uma saída chegue ao seu destino, em algum outro ponto da rede. Ou seja, todas as saídas da 73 chave crossbar levam a outras redes ou outros destinos, coincidentes ou não. Sendo assim, vamos considerar que somente a latência influencia no cálculo de menor caminho e que toda a influência externa está modelada no grafo da figura 36, onde cada nó representa um processador R2NP e não mais a chave crossbar. Porém, para o processador R2NP-1 (nó 1) a sua chave crossbar possui sete entradas e sete saídas conectadas aos demais nós ou processadores R2NPs da rede e os demais possuem 2 ou 3 entradas e saídas conectadas aos demais. Como o algoritmo que será apresentado a seguir trata de roteamento, definimos que cada processador R2NP está presente em um roteador e, portanto, cada nó poderá ser chamado também de roteador. Figura 36 – Arestas do grafo com peso (latência em ms) Neste grafo as latências entre os nós são dadas em milisegundos (ms). Usaremos o algoritmo conhecido como roteamento com vetor de distância [Tanenbaum 2003] para definição da melhor rota para envio dos pacotes de dados. Neste algoritmo, cada roteador (presente em cada nó da topologia) mantém uma tabela (tabela de roteamento resultante – figura 37) que fornece a menor distância entre a origem e cada destino da rede. Estas tabelas são atualizadas pelos roteadores vizinhos (ou nós adjacentes) informando a distância entre estes roteadores vizinhos e cada outro roteador da rede. Desta forma, com as informações enviadas pelos vizinhos é construída uma nova tabela com a menor distância resultante para se chegar a qualquer nó da rede, usando como primeiro passo o roteador vizinho que oferecer o menor caminho. A figura 37 ilustra as duas tabelas (enviada pelos vizinhos e resultante de distância) com um exemplo evidenciado: Se for necessário enviar um pacote do nó 5 para o nó 3, qual seria o melhor caminho? Se as novas conexões entre o nó 1 e todos os outros nós da rede não fossem realizadas, a resposta seria do nó 5 para o 4 finalizando nó 3, com uma latência total de 10ms. Porém com as 74 novas conexões, verificamos que existem 3 caminhos para se chegar ao destino, possuímos uma maior opção de roteamento. Como em uma rede de computadores, o vetor de distância enviado por um nó adjacente pode não estar atualizado, faremos a seguinte consideração para mostrar a importância de mais de uma opção de roteamento: o nó adjacente 6 não recebeu a informação de que para chegar até o nó 3, passando pelo nó 1 e 2, gasta-se apenas 6 ms. Esta informação deve ser enviada pelo nó adjacente 1 ao 6, porém o nó 6 enviou o vetor de distância ao nó 5 contento sua última informação de melhor caminho para chegar ao nó 3 gastando 7 ms. Esta informação também foi obtida através do nó 1, porém em um momento em que a melhor opção não usava o nó 2 como caminho, mas o link direto ao nó 3, conforme figura 36. Portanto, de acordo com as informações enviadas pelos nós adjacentes (figura 37) a melhor opção de roteamento seria através do nó 1 com latência total de 7ms. Ou seja, o pacote de dados chegaria 3ms mais cedo ao seu destino se comparado à topologia anterior (anel) onde haveria apenas dois caminhos alternativos (pelo nó 4 ou pelo nó 6). Figura 37 – Tabelas de roteamento para o nó 5 Neste tópico mostramos a influência e o impacto da implementação dinâmica de topologias para definição de rotas. É importante ressaltar que, usando somente a chave crossbar reconfigurável é possível definir o melhor caminho, basta seguir a topologia onde todos os pesos das arestas são iguais. Ou se necessário, consultando tabelas de roteamento, gerenciadas pelo processador de gerenciamento, que irá definir qual o melhor caminho a ser adotado, com base em influências externas. Contudo, independente da influência externa, o aumento do grau médio e a diminuição do diâmetro entre dois nós (parâmetros alterados pela reconfigurabilidade da chave crossbar), foram responsáveis diretos pelos números obtidos na 75 tabela de roteamento resultante ilustrada na figura 37. Outras análises usando algoritmos diferentes podem ser obtidas nas referências [Tanenbaum 2003] e [Netto 2001]. 5.3 – VERIFICAÇÃO COMPORTAMENTAL DA CROSSBAR RECONFIGURÁVEL O objetivo deste tópico é apresentar as simulações realizadas para verificação de flexibilidade e desempenho da chave crossbar reconfigurável. A linguagem VHDL (VHSIC Hardware Description Language) foi escolhida para ser usada no projeto, simulação e síntese da chave crossbar proposta, devido a sua facilidade de descrição de circuitos lógicos e portabilidade de desenvolvimento. Foram escolhidos como ambientes de projeto e simulação os softwares ISE WebPack e ModelSim da Xilinx. São apresentadas três simulações, referentes às arquiteturas de chave crossbar tradicional, e reconfiguráveis de 1 e 2 bits. Não foi nossa intenção simular o projeto da chave crossbar reconfigurável com todas as suas entradas e saídas de dados ou seus barramentos de controle. O objetivo é simular o funcionamento comportamental da chave crossbar apenas para apresentar a característica principal que é a flexibilidade de operação ou implementação dinâmica de topologias. Portanto, não estão sendo consideradas nesta simulação todas as entradas, saídas e barramentos, que são partes integrantes da arquitetura do R2NP e da própria chave crossbar reconfigurável. Para facilitar a captura das telas de simulação, decidimos simular uma chave crossbar 4x4, onde iremos implementar dinamicamente as seguintes topologias: anel, árvore, estrela e pirâmide (esta última apenas para crossbar reconfigurável de 2 bits). Nos três tópicos a seguir apresentamos os resultados das simulações. 5.3.1 – Simulação em VHDL da Chave Crossbar Tradicional Nesta simulação procuramos verificar os resultados de chaveamento de uma chave crossbar tradicional, conforme descrito no tópico 2.1. Neste caso, somente há fechamento de conexão entre entrada e saída no intervalo de tempo. Não podemos, portanto, ter uma mesma entrada conectada a várias saídas ao mesmo tempo (simultaneamente). A figura 38 ilustra o ambiente de projeto e por conseqüência a Entity da chave crossbar tradicional. Como as conexões (ou topologias) não estão implementadas na chave crossbar, é necessário indicar qual entrada e qual saída deverão efetuar a comunicação. Para isto, usamos dois registradores: 76 • Regin: registrador que indica qual a entrada. • Regout: registrador que indica qual a saída. Estes registradores definem qual entrada e saída irão se comunicar, e, portanto, qual nó da chave crossbar irá fechar. Exemplo: • Regin = 0001 (entrada 0) • Regout = 0010 (saída 1) • Nó fechado = 01 (A01 de uma matriz – figura 39) Em implementações mais complexas alguma alternativa de controle poderia ser feita para que entradas e saídas diferentes pudessem se comunicar ao mesmo tempo (mantendo as restrições de fechamento de coluna), porém no nosso caso usaremos apenas estes dois registradores. Figura 38 – Ambiente de projeto para chave crossbar tradicional - ISE WebPack A figura 39 ilustra as conexões fechadas na simulação e qual topologia poderia ser implementada no tempo. 77 Figura 39 – Conexões simuladas em VHDL (chave crossbar tradicional) De acordo com o resultado de simulação apresentado na figura 40, o comportamento verificado em tempo de simulação (intervalos definidos pelo programador) foi o seguinte: • De 0 a 100ns: É fechada a conexão entre a entrada 0 e a saída 1. Como havia sinal de entrada com nível lógico alto na entrada 0, a saída 1 recebeu o bit 1. • De 100ns a 200ns: É fechada a conexão entre a entrada 0 e a saída 2. Como havia sinal de entrada com nível lógico alto na entrada 0, a saída 2 recebeu o bit 1. • De 200ns a 300ns: É fechada a conexão entre a entrada 0 e a saída 3. Como havia sinal de entrada com nível lógico baixo na entrada 0, a saída 3 recebeu o bit 0. Podemos verificar que a entrada 0 envia dados para as demais saídas da chave crossbar (1,2 e 3). Sendo assim, a topologia estrela foi implementada no tempo (usando técnicas de multiplexação) e não no espaço. • De 300ns a 400 ns: É fechada a conexão entre a entrada 1 e a saída 2. Como havia sinal de entrada com nível lógico alto na entrada 1, a saída 2 recebeu o bit 1. • De 400ns a 500ns: É fechada a conexão entre a entrada 2 e a saída 3. Como havia sinal de entrada com nível lógico baixo na entrada 2, a saída 3 recebeu o bit 0. • Após 500ns: É fechada a conexão entre a entrada 3 e a saída 1. Como havia sinal de entrada com nível lógico alto na entrada 3, a saída 1 recebeu o bit 1. Ao fim dos 600ns verificamos que os nós que enviam dados para o nó central (nó 0) também começaram a se conectar, formando juntamente com as conexões realizadas de 0 a 300ns uma topologia temporal chamada pirâmide. 78 Figura 40 – Resultado de simulação da chave crossbar tradicional Portanto, a chave crossbar tradicional é capaz de realizar conexões espaciais, mas realiza a implementação de topologias de forma temporal. Nos dois tópicos a seguir estaremos apresentando os resultados de simulação do comportamento das duas propostas de arquitetura de chave crossbar reconfigurável e como podemos verificar a implementação de topologias no espaço. 5.3.2 – Simulação em VHDL da Chave Crossbar Reconfigurável de 1 bit A figura 41 apresenta o ambiente de simulação em VHDL da chave crossbar reconfigurável de 1 bit. A Entity que descreve a arquitetura da crossbar está representada nesta figura e possui as seguintes portas definidas, que caracterizam a arquitetura da chave crossbar para simulação da flexibilidade de reconfiguração: • Entrada0, Entrada1, Entrada2, Entrada3: Representam as quatro entradas de dados da chave crossbar por onde chegam os pacotes de dados redirecionados pelas microengines, ou pelo processador de gerenciamento. No teste de simulação estas entradas foram agrupadas em um vetor de 4 bits. • Nó_00 até Nó_33: Representam os dezesseis bits responsáveis pela reconfiguração da chave crossbar. As numerações que seguem as palavras “Nó” são referentes aos índices de uma matriz 4x4. • RegHabilitaEntrada: 79 Na nossa proposta de chave crossbar reconfigurável é possível fechar uma conexão entre uma entrada e várias saídas, ou vice-e-versa. Por este motivo é necessário que se tenha um controle contra conflitos. Optamos por acrescentar um registrador (“RegHabilitaEntrada”) que habilita o envio de dados para simplificar a arquitetura simulada. • Saída0, Saída1, Saída2, Saída3: Representam as quatro saídas de dados da chave crossbar. No teste de simulação estas entradas foram agrupadas em um vetor de 4 bits. Figura 41 – Ambiente de projeto da chave crossbar de 1 bit - ISE WebPack A figura 43 mostra os resultados de simulação e verificação do funcionamento da chave crossbar. Nesta simulação podemos observar três diferentes topologias implementadas ao longo do tempo, conforme ilustrado pela figura 42. A seguir será descrito o funcionamento da reconfiguração nos seus intervalos de tempo correspondentes. Nos primeiros 400ns a topologia anel bidirecional foi implementada. Neste intervalo de tempo, nós podemos observar que o registrador “RegHabilitaEntrada” habilita a entrada 0. 80 Sendo assim, as saídas 1 e 3 que foram conectadas à entrada 0 através dos pontos de conexão Nó_01 e Nó_03, de acordo com a topologia implementada, recebem os sinais da entrada 0 durante os 400ns. No intervalo de 400ns a 800ns a topologia foi reconfigurada para árvore bidirecional. Neste instante o registrador “RegHabilitaEntrada” habilita a entrada 2, mas não há nenhum dado a ser enviado. Por este, motivo nos primeiros 100ns as portas de saídas não receberam nenhum sinal. Após os 500ns as entradas 0 e 2 enviam sinal para a chave crossbar, porém o registrador está habilitando apenas a entrada 2, e por conseqüência a saída 0 é a única a receber o sinal vindo desta entrada 2. Nos últimos 200ns foi implementado, através dos bits de reconfiguração, a topologia estrela bidirecional. Nos primeiros 100ns nenhuma entrada da crossbar foi habilitada. Após estes 100ns, o registrador “RegHabilitaEntrada” habilita a entrada 3 para enviar dados. De acordo com a topologia estrela, a entrada três está conectada através do Nó_30 à saída 0, por este motivo somente esta saída irá receber o sinal enviando pela entrada 3. Figura 42 – Topologias simuladas em VHDL (chave crossbar de 1 bit) 81 Figura 43 – Resultados da simulação da chave crossbar de 1 bit Através dos resultados obtidos nesta simulação, observamos que o funcionamento da chave crossbar corresponde à proposta apresentada de flexibilidade. Ou seja, ao longo do tempo e durante o período de trabalho da chave, é possível alterar ou reconfigurar a topologia implementada, para uma aplicação específica em tempo de execução. 5.3.3 – Simulação em VHDL da Chave Crossbar Reconfigurável de 2 bits Para esta simulação modificamos a arquitetura da chave crossbar reconfigurável para 2 bits de reconfiguração. Por este motivo, a Entity foi alterada conforme ilustrado na figura 44. As entradas de reconfiguração foram definidas como um vetor lógico de duas posições e foi acrescentado um registrador de 5 bits para representar a intervenção do processador de gerenciamento. As demais entradas e saídas permaneceram iguais. 82 Figura 44 – Ambiente de projeto da chave crossbar de 2 bits - ISE WebPack Os bits do registrador do processador de gerenciamento significam o seguinte: • Quinto bit (mais significativo da esquerda para direita): este bit indica se vai abrir (0) ou fechar (1) uma conexão. • Os quatro bits restantes: indicam qual nó da chave crossbar reconfigurável será aberto ou fechado, conforme tabela 11: Tabela 11 – Bits dos nós da chave crossbar de 2 bits Nós 00 01 02 03 10 11 12 13 Bits 0000 0001 0010 0011 0100 0101 0110 0111 Nós 20 21 22 23 30 31 32 33 Bits 1000 1001 1010 1011 1100 1101 1110 1111 83 Foram simuladas as mesmas topologias, porém, através do regproc (RegistradorProcessador – registrador que recebe dados do processador de gerenciamento), a topologia estrela foi alterada para topologia pirâmide, conforme ilustrado na figura 45. As setas que aparecem em cada topologia desta figura indicam qual o sentido de comunicação habilitado durante a simulação. Figura 45 – Topologias simuladas em VHDL (chave crossbar de 2 bits) A figura 46 ilustra os resultados de simulação que podem ser descritos da seguinte forma: • De 0 a 100ns: Topologia Anel. Entrada 0 habilitada enviando sinal para as saídas 1 e 3, conforme vetor de saída (1010). O registrador regproc tenta fechar (10010) a conexão 02, mas o bit de reconfiguração deste nó setado para 00 não permite. • De 100ns a 200ns: Topologia Árvore. Entrada 2 habilitada enviando sinal para saída 0, conforme vetor de saída (0001). O registrador regproc tenta fechar (11011) a conexão 23, mas o bit de reconfiguração deste nó setado para 00 não permite. • De 200ns a 300ns: Topologia Estrela. Entrada 3 habilitada enviando sinal para saída 0, conforme vetor de saída (0001). O registrador regproc tenta fechar (10110) a conexão 12, mas o bit de reconfiguração deste nó setado para 00 não permite. • Após 300ns: A topologia pirâmide começa a ser implementada através do Processador de Gerenciamento, aproveitando a reconfiguração implementada para topologia estrela. De 300ns a 800ns somente a entrada 3 estará habilitada a enviar sinal para suas saídas conectadas. De 300ns a 500ns as conexões 12 e 21 são fechadas através do regproc (10110 e 11001), porém somente a saída 0 recebe o sinal, conforme o vetor de saída (0001), já que as conexões realizadas pelo 84 processador não são referentes à entrada 3 (única habilitada). No intervalo de 500ns a 600ns a conexão 13 (10111) é fechada (sentido 1 para 3), mas como somente a entrada 3 está habilitada, o vetor de saída continua sendo 0001. No intervalo de 600ns a 800ns as conexões 31 (11101) e 23 (11011) são fechadas e a entrada 3 passa a enviar sinal para as saídas 0 e 1 (vetor de saída = 0011), já que o sentido 2 para 3 não está habilitado. A partir de 800ns as saídas 0, 1 e 2 passam a receber sinais da entrada 3, já que a conexão 32 (11110) é fechada. Neste instante o vetor de saída passa para 0111. Figura 46 – Resultados de simulação da chave crossbar de 2 bits É importante frisar que, o pacote só é enviado para as saídas com conexão fechada, caso todas as saídas sejam consideradas destino (esta afirmação vale para os dois tipos de arquitetura da chave crossbar). Por exemplo, no caso da pirâmide o sinal é enviado da entrada 3 para as saídas 0, 1 e 2. Se apenas a saída 2 fosse o destino, as outras duas saídas não receberiam o pacote de dados. Entretanto, este controle não foi implementado para nenhuma das duas simulações da chave crossbar, preocupamos apenas com a simulação de flexibilidade e implementação dinâmica de topologias através da reconfiguração que ocorre em tempo de execução. A grande diferença entre as duas chaves crossbar reconfiguráveis está na interferência do processador de gerenciamento na construção dinâmica de topologias. Existe uma maior flexibilidade de trabalho com alternativas de soluções para respostas de roteamento, construção de sub-redes e segurança de comunicação. 85 Podemos concluir que os resultados de simulação verificam o funcionamento e o desempenho das duas chaves crossbar reconfiguráveis, especificadas durante o projeto e apresentação da proposta (capítulo 4), ressaltando o fato de que ambas as propostas apresentam o conceito de uma unidade chaveamento espacial e de implementação de topologias espaciais, ao contrário de uma chave crossbar tradicional, que é capaz de chavear espacialmente, mas apenas “implementa” topologias temporais. 86 6 – CONCLUSÕES No projeto do R2NP os principais blocos construtivos da arquitetura de referência foram utilizados na tentativa de obter um modelo o mais próximo das características típicas de um processador de rede. Por isto, optamos pelo projeto de um processador que pudesse conter múltiplas unidades de processamento (processador de gerenciamento e microengines), hardwares dedicados ou ASICs (chave crossbar e memória) e unidades com reconfiguração dinâmica (chave crossbar e buffers reconfiguráveis). De acordo com os resultados obtidos, foi possível constatar que o modelo de arquitetura e de conjunto de instruções do processador de rede evoluiu consideravelmente do modelo CISC para o RISC, principalmente com relação ao desempenho obtido pela inserção do pipeline na arquitetura RISC, que fez com que obtivéssemos uma relação de ganho de aproximadamente 4 vezes em alguns casos. Podemos considerar também, que a redução de instruções que acessam a memória, produziu uma melhora considerável no impacto de desempenho de acesso aos dados inclusive quando existem loops no programa utilizado. O conjunto de instruções dedicado para operações de rede se mostrou eficaz, uma vez que atingiu o objetivo de leitura de dados de entrada, e redirecionamento para a saída. É importante ressaltar, que estas instruções foram criadas como forma de se ter uma liberdade maior de manipulação dos dados. Mesmo a chave crossbar reconfigurável sendo capaz de implementar uma topologia, estas instruções também são capazes de estabelecer conexões (usando a chave crossbar) entre entradas e saídas conforme os programas simulados demonstraram. No anexo estão presentes informações referentes ao simulador NPSIM (Network Processor Simulator) usado para simular e verificar o funcionamento da arquitetura e do conjunto de instruções do modelo CISC, onde os programas mostrados no capítulo de resultados foram simulados. Aplicando os parâmetros para modelagem de grafos, diâmetro e o grau médio, foi possível verificar a principal característica da chave crossbar reconfigurável, que é o aumento de flexibilidade para o chaveamento de pacotes de dados e a implementação dinâmica de topologias. Estas duas características representam uma maior vazão de dados e uma maior possibilidade de caminhos alternativos, já que aumenta a quantidade de arestas ou links presentes. Isto ficou evidenciado quando usamos o algoritmo de vetor de distância para verificar a escolha da melhor rota com base em influências das latências dos meios externos. Os resultados de simulação em VHDL verificam o comportamento da chave crossbar reconfigurável. Nestas simulações foi possível constatar que a implementação dinâmica de topologias facilita a comunicação entre os diversos pontos conectados na crossbar e possibilita 87 a utilização de uma topologia mais específica ou dedicada de acordo com as necessidades de cada aplicação (interconexão ou comunicação). As chaves crossbar de 1 bit e de 2 bits se mostraram eficientes e foi possível verificar a possibilidade de intervenção do processador de gerenciamento, através de suas instruções, para aumentar a principal característica das duas chaves crossbar que é a flexibilidade. Em relação à chave crossbar tradicional, verificamos situações onde foi necessário fechar 3 conexões (uma após a outra) ao longo do tempo. Nas chaves crossbar reconfiguráveis, com a topologia implementada, estas 3 conexões já estão fechadas e, portanto, ao contrário de 3 unidades de tempo para enviar um pacote para 3 destinos diferentes, gastaríamos apenas 1 unidade de tempo. Ou seja, um ganho de 3 vezes em relação a chave crossbar tradicional. Uma chave crossbar tradicional é uma unidade de chaveamento espacial. Ou seja, conforme a figura 4 e simulação apresentada na figura 36, ela não realiza a comunicação entre dois pontos de forma temporal utilizando técnicas de multiplexação. No entanto, quando uma determinada coluna da chave já está conectada, nenhum outro ponto desta coluna poderá ser fechado. Podemos considerar então que cada topologia ocorre no tempo e, portanto, uma comunicação pode ter que esperar que um outro chaveamento tenha que ser desfeito se a mesma coluna tiver que ser usada. Concluímos então, que uma chave crossbar tradicional é uma unidade de chaveamento espacial e de topologias temporais. As chaves crossbar reconfiguráveis propostas são unidades de chaveamento espacial e de topologias espaciais. O motivo pelo qual classificamos assim, se deve ao fato de existir a implementação dinâmica de topologias na chave crossbar reconfigurável. Estas topologias são representações de interconexões espaciais ou de chaveamentos espaciais, não é necessário esperar um encerramento de conexão ou um fechamento de conexão para que o chaveamento seja realizado, pois ele já está pronto. Esta conclusão pode ser ilustrada pelas figuras 24, 26 e 34 onde as topologias são espaciais e as colunas ou linhas possuem mais de uma conexão. O principal desafio é encontrar o ponto ótimo de desempenho para os processadores de rede. Qual técnica utilizar e quanto ótimo é o modelo ISA (Instruction Set Architecture) e a arquitetura do processador. Sabemos que GPPs são mais flexíveis, os ASIPs são menos flexíveis, porque são dedicados e os ASICs são muito velozes, porém pouco flexíveis. Acreditamos que a inserção de dispositivos (ex. chave crossbar) dentro da pastilha do processador (SoC) é interessante e pode aumentar o desempenho de processamento. Os projetos que utilizam as várias técnicas possíveis, provavelmente irão se aproximar do melhor ganho de desempenho. 88 De acordo com os problemas apresentados na introdução podemos concluir que: 1. Uma arquitetura RISC com estrutura em pipeline usando conceitos System-onChip (através de blocos ASICs) permitiria o aumento de desempenho do processador de rede; 2. Conjunto de instruções RISC composto de instruções de propósito geral e outras instruções dedicadas para redes seria o mais adequado; 3. A melhor opção de switching fabric para a nossa proposta é a chave crossbar. Escolha baseada em sua estrutura em formato de uma matriz de chaveamento. Chave crossbar interna a arquitetura do processador de rede; 4. Utilizar uma estrutura de chave crossbar reconfigurável para implementação dinâmica de topologias, proporcionando broadcast, multicast e topologias dedicadas para padrões de comunicação melhorando a flexibilidade e a vazão de dados; 5. As topologias podem ser implementadas programando os nós de conexão da chave crossbar para fechar ou abrir uma comunicação entre as entradas e saídas; 6. A computação reconfigurável é a técnica adotada para aumentar a flexibilidade e o desempenho de alguns blocos da UCDR do processador de rede. Em específico, tratamos da chave crossbar, que é programada através de bits de reconfiguração para implementação de novas topologias ao longo do tempo. As topologias configuradas são conseqüências dos bits de reconfiguração que podem controlar (fechar ou abrir) os nós da chave crossbar. Atualmente existe uma grande exigência por desempenho nas redes de comunicação de dados. O estudo dos diversos equipamentos e as funções, que cada um desempenha, influenciou no projeto e desenvolvimento de processadores dedicados, que pudessem suprir as necessidades de desempenho e qualidade. Desta forma surgiu o processador de rede, que em sua concepção inicial, veio contribuir com o aumento de velocidade e de qualidade de serviço nos sistemas de comunicação de dados. Foi possível constatar, através de toda a bibliografia consultada que, os processadores de rede são objetos de estudos recentes nas empresas e universidades. Os grupos estão se formando, e a partir do ano de 2000 começaram a aparecer os principais artigos. No Brasil, além do nosso grupo, está se formando outro grupo de pesquisa na Fundação de Ensino Eurípides Soares da Rocha em Marília SP, sob coordenação e orientação do professor Dr. Edward Ordonez. Foram consultados os anais e proceedings do WSCAD e SBAC dos últimos 89 anos e também o banco de dados do sistema Lattes do CNPq e verificamos que além dos dois grupos não existem outros que façam pesquisas na área. É por esta razão que acreditamos nos resultados de divulgação da nossa pesquisa como forma de incentivar outros grupos a se formarem e contribuírem com resultados para esta nova área do conhecimento. Nossa pesquisa possui uma história que começa na iniciação científica durante a graduação. Estamos gerando conhecimento sobre processadores de rede e é nossa intenção, aprofundar nos detalhes técnicos e manter em atividade um grupo de pesquisa que possa ser referência no estudo e desenvolvimento de processadores de rede e dispositivos relacionados, tal como as unidades de chaveamento (switching fabrics). As principais contribuições alcançadas e apresentadas nesta dissertação estão listadas abaixo: Arquiteturas de processadores de rede CISC e RISC; Arquiteturas de chaves crossbar reconfiguráveis para implementação dinâmica de topologias e chaveamento de pacotes de dados; Resultados matemáticos de análise de desempenho, modelagem usando grafos e simulações por VHDL; Produção científica abordando resultados de pesquisa desta nova área do conhecimento; Minicurso sobre processadores de rede ministrado na Escola Regional de Informática RJ/ES em 2003 e no Workshop em Sistemas Computacionais de Alto Desempenho também em 2003. Portanto, os principais objetivos e metas se refletiram em contribuições, que são conseqüências das idéias e dos resultados obtidos no estudo e desenvolvimento de uma proposta de processador de rede para aumento de flexibilidade e de desempenho de processamento e chaveamento de pacotes de dados em uma rede de comunicação. Acreditamos que uma outra contribuição importante seja o incentivo para o surgimento de novas pesquisas e produções científicas em uma área recente e pouco explorada academicamente, uma vez que os resultados de projeto de arquiteturas de processadores de rede têm se limitado às pesquisas industriais. Conforme descrevemos no capítulo de materiais e métodos, existem etapas futuras para conclusão da pesquisa. Desta forma, descrevemos a seguir os principais trabalhos futuros: 1. Simulação funcional por software do modelo RISC; 2. Desenvolvimento de um compilador para processador modelo RISC; 3. Análise de métricas e avaliação de resultados de desempenho; 90 4. Projeto e simulação do código em VHDL de toda a UCDR em etapas separadas tal como foi feito para a chave crossbar; 5. Análise de métricas de desempenho para a UCDR; 6. Prototipação também em etapas separadas da UCDR utilizando FPGAs; 7. Simulação e prototipação da arquitetura do processador RISC em VHDL e FPGAs; 8. Testes em uma rede de comunicação de dados real (poderá ser realizado para alguns blocos funcionais em separado). 9. Agregar e projetar novamente a arquitetura R2NP usando conceitos NoC (Network-on-Chip) 10. Refazer etapas 7 e 8 para o novo modelo R2NP/NoC. A UCDR é um dos objetos principais de estudo do R2NP. Nesta unidade, foi proposta uma nova forma de processar os dados ou pacotes de rede, que chegam pela porta de entrada. Esperamos nos próximos anos, realizar simulações e testes no protótipo da UCDR. Ao final destas etapas pretendemos obter o protótipo do processador de rede R2NP em FPGA para simular e testar em ambiente real o desempenho de processamento em relação aos demais processadores comerciais (Rede e/ou GPP). Sendo assim, é interesse para os anos de 2004 e 2005, o aumento do número de pesquisadores envolvidos no projeto, principalmente alunos de graduação, como forma de incentivo à iniciação científica e preparação para o mestrado e/ou doutorado. 91 7 – REFERÊNCIAS BIBLIOGRÁFICAS [ADC 2002] ADC, “Cuda 12000, Packet Telephony Module (PTM)”, 2002, URL: http://www.adc.com/documentationlibrary/ (último acesso em outubro de 2003) [Agere 2001a] Agere System, “Agere System Interface (ASI)”, Product Brief, June 2001, URL: http://www.agere.com/enterprise_metro_access/docs/PB01131.pdf (último acesso em outubro de 2003) [Agere 2001b] Agere System, “Building for Next Generation Network Processors”, April 2001, URL: http://www.agere.com/enterprise_metro_access/network_processors.html (último acesso em outubro de 2003) [Agere 2001c] Agere System, “Fast Pattern Processor (FPP)”, Product Brief, November 2001, URL: http://www.agere.com/enterprise_metro_access/docs/PB01132.pdf (último acesso em outubro de 2003) [Agere 2001d] Agere System, “Routing Switch Processor (RSP)”, Product Brief, April 2001, URL: http://www.agere.com/enterprise_metro_access/docs/rsp_product_brief.pdf (último acesso em outubro de 2003) [Agere 2001e] Agere System, “The Challenge for Next Generation Network Processors”, April 2001, URL: http://www.agere.com/enterprise_metro_access/network_processors.html (último acesso em outubro de 2003) [Ahmadi 1989] Ahmadi, H., Denzel, W. E., “A Survey of Modern High-Performance Switching Techniques”, IEEE Journal on Selected Areas in Communications, Vol. 7, No. 7, September 1989 [Allen 2003] Allen, J., et al, “PowerNP Network Processor, Hardware, Software and Applications”, IBM Journal of Research and Development, Communication Technologies, Vol. 47, No. 2/3, 2003, URL: http://www.research.ibm.com/journal/rd/472/allen.pdf (último acesso em outubro de 2003) 92 [Anderson 1975] Anderson, G. A., Jensen, E. Douglas, “Computer Interconnection Structures: Taxonomy, Characteristics, and Examples”, ACM Computing Surveys, Vol. 7, No. 4, December 1975 [Ashenden 1998] Ashenden, P. J., “The Student’s Guide to VHDL”, Morgan Kaufmann Publishers, Inc, San Francisco, California, USA, 1998 [Ashenden 2003] Ashenden, P. J., “The VHDL Cookbook”, unpublished technical report. Dept. of Computer Science, University of Adelaide, South Australia, 1990, URL: http://tams-www.informatik.uni-hamburg.de/vhdl/doc/cookbook (último acesso em outubro de 2003) [Aurrecoechea 1998] Aurrecoechea, C., Campbell, A. T., Hauw, L., “A Survey of QoS Architectures”, ACM/Springer Verlag Multimedia Systems Journal Special Issue on QoS Architecture, Vol. 6, No. 3, pp.138-151, 1998 [Blum 2003] Blum, R., “Network Quality of Service”, International Network Services, pp.1-16, November 20, 2000, http://www.ins.com/downloads/surveys/sv_network_qos_1100.pdf URL: (último acesso em outubro de 2003) [Bondalapati 2000] Bondalapati, K., Prasanna, V., “Reconfigurable Computing: Architectures, Models and Algorithms”, Current Science, Vol. 78, Number 7, pp.828-837, April 10, 2000 [Buyya 1999] Buyya, R., “High Performance Cluster Computing”, Volume 1, Prentice Hall, 1999 [Calvert 1992] Calvert, K. L., Doar, M. B., Zegura, E. W., “A Quantitative Comparison of Graph-based Models for Internet Topology”, IEEE/ACM Transactions on Networking, Vol. 5, No. 6, pp.770-783, December 1992 [Calvert 1997] Calvert, K. L., Doar, M. B., Zegura, E. W., “Modeling Internet Topology”, IEEE Communications Magazine, Vol. 35, Issue 6, pp.160-163, June 1997 [Campbell 2002] Campbell, A. T., Chou, S. T., Kounavis, M. E., Stachtos, V. D., Vicente, J., “NetBind: A Binding Tool for Constructing Data Paths in 93 Network Processor-Based Routers”, IEEE OPENARCH 2002, pp.91103, 2002 [Chameleon 2000] Chameleon Systems, “CS2000 Reconfigurable Communications Processor”, Family Product Brief, 2000, URL: http://www.chameleonsystems.com (último acesso em outubro de 2003) [Chao 2002] Chao, H. J., “Next Generation Routers”, Proceedings of the IEEE, Vol. 90, No. 9, pp.1518-1558, September 2002 [Cisco 1998] Cisco Systems, Catalyst 8500 CSR Architecture, White Paper, 1998, URL: http://www.cisco.com/warp/public/cc/pd/si/casi/ca8500/tech/8510_wp.pdf (último acesso em outubro de 2003) [Cisco 2000a] Cisco Systems, 7200 Series Network Processor Family, NPE-400, NPE-300 and NPE-225, Datasheet, 2000, URL: http://www.cisco.com/warp/public/cc/pd/rt/7200/nse1/prodlit/nse1_ds.pdf (último acesso em outubro de 2003) [Cisco 2000b] Cisco Systems, Route Switch Processor 8 for Cisco 7500 Series Routers, Datasheet, 2000, URL: http://www.cisco.com/warp/public/cc/pd/rt/7500/prodlit/rsp8_ds.pdf (último acesso em outubro de 2003) [Cisco 2000c] Cisco Systems, Versatile Interface Processor 4 for Cisco 7500 Series Routers, Datasheet, 2000, URL: http://www.cisco.com/warp/public/cc/pd/ifaa/ifpz/vrifpz/prodlit/vip4_ds.pdf (último acesso em outubro de 2003) [Cisco 2001a] Cisco Systems White Paper, “The Evolution of high-end Router Architectures-Basic Scalability and Performance Considerations for Evaluating Large-Scale Router Designs”, 2001, http://www.cisco.com/warp/public/cc/pd/rt/12000/tech/ruar_wp.pdf URL: (último acesso em outubro de 2003) [Cisco 2001b] Cisco Systems, 1600 Series Router Architecture, 1992-2001, URL: http://www.cisco.com/warp/public/63/arch_1600_5406.pdf (último acesso em outubro de 2003) 94 [Cisco 2001c] Cisco Systems, 2500 Series Router Architecture, 1992-2001, URL: http://www.cisco.com/warp/public/63/arch_2500_5750.pdf (último acesso em outubro de 2003) [Cisco 2001d] Cisco Systems, 7200 Series Router Architecture, 1992-2001, URL: http://www.cisco.com/warp/public/63/arch_7200_5810.pdf (último acesso em outubro de 2003) [Cisco 2001e] Cisco Systems, 7500 Series Router Architecture, 1992-2001, URL: http://www.cisco.com/warp/public/cc/pd/rt/7500/prodlit/7500r_ds.pdf (último acesso em outubro de 2003) [Cisco 2002] Cisco Systems, 10000 Series Router Architecture, Data Sheet, 19922002, URL: http://www.cisco.com/warp/public/cc/pd/rt/10000/prodlit/10ksr_ds.pdf (último acesso em outubro de 2003) [Comer 1995] Comer, D. E., “Internetworking with TCP/IP Principles, Protocols and Architecture”, Volume 1, 3rd Edition, Pearson, 1995 [Compton 2002] Compton, K. e Hauck, S., “Reconfigurable Computing: A Survey of Systems and Software”, ACM Computing Surveys, Vol. 34, No. 2, pp. 171-210, June 2002 [Coulouris 2000] Coulouris, G., Dollimore, J., Kindberg T., “Distributed Systems Concepts and Design”, Addison-Wesley, 3rd Edition, August 11, 2000 [C-Port 2001] C-Port, “C5 Network Processor”, Data Sheet, March 2001, URL: http://e-www.motorola.com/webapp/sps/site/taxonomy.jsp?nodeId=01DFTQ3126q62S (último acesso em outubro de 2003) [C-Port 2002] C-Port, “C5e Network Processor”, Product Brief, January 2002, URL: http://e-www.motorola.com/webapp/sps/site/taxonomy.jsp?nodeId=01DFTQ3126q62S (último acesso em outubro de 2003) [Crowley 2000] Crowley, P., Fiuczynski, Baer, J. L., Bershad, B. N., “Characterizing Processor Architectures for Programmable Network Interfaces”, Proceedings of the International Conference on Supercomputing, Santa Fe, NM, pp.54-65, May, 2000 95 [Crowley 2002a] Crowley, P. e Yavatkar, R., “An Introduction to Network Processor Research and Design”, Tutorial apresentado no 35th Annual International Symposium on Microarchitecture, 2002, URL: http://www.cs.washington.edu/homes/pcrowley/ (último acesso em outubro de 2003) [Crowley 2002b] Crowley, P., Baer, J. L., “A Modeling Framework for Network Processor Systems”, Workshop on Network Processor, Cambridge, MA, 11p., February 3, 2002 [Dantas 2002] Dantas, M., “Tecnologias de Redes de Comunicação e Computadores”, Editora Axcel Books, 2002 [Dantas 2003] Dantas, M., “Cluster, Grid Computing e Processamento Paralelo Oportunístico na Internet”, III Escola Regional de Informática RJ/ES, pp.41-61, 06 a 08 de outubro de 2003 [Dasan 2001] Dasan Networks, Product Overview, 2001, URL: http://www.dasannetworks.com (último acesso em outubro de 2003) [David 2003] David, E., “A Network Processor Platform Implemented in Programmable Hardware”, Dissertação de mestrado em Engenharia Elétrica da California Polytechnic State University, USA, Julho, 2003 [De Rose 2001] De Rose, C. A. F., “Arquiteturas Paralelas”, Escola Regional de Alto Desempenho, ERAD 2001, Gramado, RS, pp. 3-33, 09 a 13 de janeiro de 2001 [Dehon 2000] Dehon, A., “The Density Advantage of Configurable Computing”, IEEE Computer, Vol. 33, No. 4, pp. 41-49, 2000 [Eggers 1996] Eggers, H., Lysaght, P., Dick H., McGregor, G., “Fast Reconfigurable Crossbar Switching in FPGAs”, Proceedings of 6th International Workshop on Field-Programmable Logic and Applications, Springer LNCS 1142, pp.297-306, 1996 [EZChip 2002] EZChip Network Processors, 2002, URL: http://www.ezchip.com/html/in_prod.html (último acesso em outubro de 2003) 96 [Fewer 2002] Fewer, C., “Cross Bar Switch Implemented in FPGAs”, White Paper, Xilinx, WP166 (v1.0), September 9, 2002 [Fewer 2003] Fewer, C., et al., “A High I/O Reconfigurable Crossbar Switch”, 11th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, Napa, Califormia, pp.3-10, April 09-13, 2003 [Franklin 2002] Franklin, M. A., e Wolf, T., “A Network Processor Performance and Design Model with Benchmark Parameterization”, Workshop on Network Processors, Cambridge, MA, pp.63-74, February 3, 2002 [Franklin 2003] Franklin, M. A., e Wolf, T., “Power Considerations in Network Processor Design”, Workshop on Network Processors and Applications, Anaheim, California, pp.10-22, February 8-9, 2003 [Freitas 2000a] Freitas, H. C. e Martins, C. A. P. S., “Processador Dedicado para Roteamento em Sistemas de Comunicação de Dados”, I Congresso de Lógica Aplicada à Tecnologia (LAPTEC 2000), São Paulo, SP, pp.717-721, 2000 (Iniciação Científica) [Freitas 2000b] Freitas, H. C. e Martins, C. A. P. S., “Projeto de Processador com Microarquitetura Dedicada para Roteamento em Sistemas de Comunicação de Dados”, I Workshop de Sistemas Computacionais de Alto Desempenho (WSCAD 2000), São Pedro, SP, Brasil, pp.63, 2000 (Iniciação Científica) [Freitas 2001] Freitas, H. C. e Martins, C. A. P. S., “Processador de Rede com Suporte a Multi-protocolo e Topologias Dinâmicas”, II Workshop de Sistemas Computacionais de Alto Desempenho (WSCAD 2001), Pirenópolis, GO, pp.31-38, 2001 [Freitas 2002a] Freitas, H. C. e Martins, C. A. P. S., “NPSIM: Simulador de Processador de Rede”. XXVIII Latin-American Conference on Informatics (CLEI 2002), Montevideo, Uruguay, 12p., 2002 [Freitas 2002b] Freitas, H. C. e Martins, C. A. P. S., “R2NP: Processador de Rede RISC Reconfigurável”, III Workshop de Sistemas Computacionais de Alto Desempenho (WSCAD 2002), Vitória, ES, Brasil, pp. 60-67, 2002 97 [Freitas 2002c] Freitas, H. C. e Martins, C. A. P. S., “Simulation Tool of Network Processor for Learning Activities”, ASEE/IEEE Frontiers in Education Conference (FIE 2002), November 6-9, Boston, MA, USA, Session S2F, pp. 1-6, 2002 [Freitas 2003a] Freitas, H. C. e Martins, C. A. P. S., “Didactic Architectures and Simulator for Network Processor Learning”, Workshop on Computer Architecture Education (WCAE 2003), San Diego, CA, USA, pp.8695, 2003 [Freitas 2003b] Freitas, H. C. e Martins, C. A. P. S., “Processadores de Rede: Conceitos, Arquiteturas e Aplicações”, minicurso apresentado na III Escola Regional de Informática RJ/ES, Vitória, pp.127-166, 07 de outubro, 2003 [FutureSoft 2003] FutureSoft, “Challenges in Building Network Processor Based Solutions”, White Paper, 2003, URL: http://www.futsoft.com/pdf/NPwp.pdf, (último acesso em outubro de 2003) [Glesner 1998] Glesner, M. e Kirschbaum, A., “State-of-the-Art in Rapid Prototyping”, XI Brazilian Symposium on Integrated Circuit Design (SBCCI 98), Búzios, Rio de Janeiro, pp.60-65, 1998 [Haidari-khabbaz 2000] Haidari-khabbaz, A., “Hardware Implementation of a High-Speed Symmetric Crossbar Switch”, Monografia de bacharelado, School of Engineering Science Communication Networks Laboratory, Simon Fraser University, Canadá, 27 de novembro, 2000 [Harper 2003] Harper, S. J., “A Secure Adaptive Network Processor”, Tese em Engenharia Elétrica do Instituto Politécnico da Virginia, EUA, 30 de abril, 2003 [Hartenstein 2001] Hartenstein, R., “A Decade of Reconfigurable Computing: A Visionary Retrospective”, In Proceedings of International Conference on Design Automation and Testing in Europe, pp.642-649, 2001 [Hasan 2003] Hasan, J., Chandra, S., Vijaykumar, T. N., “Efficient Use of Memory Bandwidth to Improve Network Proceedings of the 30 th Processor Throughput”, In International Symposium on Computer Architecture (ISCA 2003), pp.300-313, June 2003 98 [Hedberg 2002] Hedberg, D., “Network Processor based Exchange Terminal – Implementation and Evaluation”, Dissertação de mestrado do Departamento de Microeletrônica e Tecnologia da Informação do Royal Institute of Tecnology (KTH), Stockholm, Suécia, 05 de dezembro, 2002 [Henriksson 2001] Henriksson, T., “Hardware Architecture for Protocol Processing”, Tese 911 em Engenharia Elétrica do Instituto de Tecnologia da Linköpings Universitet, Suécia, 2001 [Hoffmann 2001] Hoffmann A., Schiebusch, O., Nohl, A., Braun, G., “A Novel Methodology for the Design of Application Specific Instruction Set Processors (ASIP) Using the Machine Description Language”, In IEEE Transactions on Computer-Aided Design of Integrated Cicuits and Systems, Vol. 20, No. 11, pp.1338-1354, November, 2001 [IBM 2002] IBM, PowerNP NP4GS3 Databook, 2002, URL: http://www3.ibm.com/chips/products/wired/products/network_processors.html (último acesso em outubro de 2003) [Iliopoulos 2000] Iliopoulos M. e Antonakopoulos, T., “Reconfigurable Network Processors Based on Field Programmable System Level Integrated Circuits”, 10th International Workshop on Field-Programmable Logic and Applications, Proceedings of the The Roadmap to Reconfigurable Computing, Villach, Austria, pp. 39-47, August 27-30, 2000 [Intel 2000] Intel, “IXP 1200 - Network Processor”, Datasheet, 2000, URL: http://www.intel.com/design/network/products/npfamily/index.htm (último acesso em outubro de 2003) [Intel 2001] Intel, “WAN/LAN Access Switch Example Design for the Intel IXP 1200 Network Processor”, 2001, URL: http://www.intel.com/design/network/prodbrf/27904401.pdf (último acesso em outubro de 2003) [Kalte 2002] Kalte, H., Langen, D., Vonnahme, E., Brinkmann, A. e Rückert, U., “Dynamically Reconfigurable System-on-Programmable-Chip”, 10th Euromicro Workshop on Parallel, Distributed and Network-based 99 Processing (EUROMICRO-PDP 2002), Canary Islands, Spain, pp.235-242, January 09-11, 2002 [Karim 2002] Karim, F., Nguyen, A., Dey, S., “An Interconnect Architecture for Networking Systems on chips”, IEEE MICRO, Vol. 22, Issue 5, pp.36-45, September-October, 2002 [Kästner 2003] Kästner, D., “Classification of Microprocessors”, Material do curso de Sistemas Embutidos, Departamento de Ciência da Computação, Universität des Saarlandes, Alemanha, 2003, URL: http://rw4.cs.unisb.de/~kaestner/ES0203.html (último acesso em outubro de 2003) [Keshav 1998] Keshav, S., Sharma, R., “Issues and Trends in Router Design”, IEEE Communications Magazine, Vol. 36, No. 5, pp.144-151, May 1998 [Keyvani 2001] Keyvani M., “VHDL Implementation of a High-Speed Symmetric Crossbar Switch”, Dissertação de Mestrado, School of Engineering Science Communication Networks Laboratory, Simon Fraser University, Canadá, Agosto, 2001 [Kochte 2003] Kochte M., Tang, Y., “Packet-Switching Networks on Systems-on-aChip”, Networks on Chip: Seminário de graduação, Universidade de Stuttgart, Alemanha, 12 de Junho, 2003, URL: http://www.ra.informatik.unistuttgart.de/~tangyi/noc/noc-packet-switched-networks.pdf (último acesso em outubro de 2003) [Kohler 2000] Kohler, M., “NP Complete”, Embedded Systems Programming, 2000, URL: http://www.embedded.com/2000/0011ia1.htm (último acesso em outubro de 2003) [Kounavis 2003] Kounavis, M. E., Kumar, A., Vin, H., Yavatkar, R. e Campbell, A. T., “Directions in Packet Classification for Network Processors”, Workshop on Network Processors and Applications, Anaheim, California, 10p., February 8-9, 2003 [Liang 2000] Liang, J., Swaminathan, S. e Tessier, R., “aSOC: A Scalable, SingleChip Communications Architecture”, International Conference on Parallel Architectures and Compilation Techniques, pp.37-46, October 15-19, 2000 100 [Liljeqvist 2002] Liljeqvist, B., Bengtsson, L., “Grid Computing Distribution Using Network Processors”, Fourth IASTED International Conference Parallel and Distributed Computing and Systems, MIT, Cambridge, USA, pp.12-17, November 4-6, 2002 [Liljeqvist 2003] Liljeqvist, B., “Visions and Facts – A Survey of Network Processors”; Dissertação de Mestrado, Chalmers University of Technology, Suécia, 2003 [Martins 2002] Martins, C. A. P. S., et al., “Computação Reconfigurável: conceitos, tendências e aplicações”, Escola de Informática do Norte (EIN), 2002 [Martins 2003] Martins, C. A. P. S., et al., “Computação Reconfigurável: conceitos, tendências e aplicações”, Jornada de Atualização em Informática, Congresso da Sociedade Brasileira de Computação, Capítulo 8, 2003 [Memik 2002] Memik, G., Memik, S. O. e Mangione-Smith, W. H., “Design and Analysis of a Layer Seven Network Processor Accelerator Using Reconfigurable Logic”, The 10th Annual IEEE Symposium on FieldProgrammable Custom Computing Machines, Napa, California, pp.131-140, 21-24 April, 2002 [Menascé 2003] Menascé, D. A., Almeida, A. F., “Planejamento de Capacidade para Serviços na Web, Métricas, Modelos e Métodos”, Campus, 2003 [Mensch 2000] Mensch. Jr., W. D. e Silage, D. A., “System-on-chip Design Methodology in Engineering Education”, International Conference on Engineering Education, ICEE2000 (IEEE/CS), Taipei, Taiwan, pp. 224-228, August 2000 [Misra 2001] Misra, K. M. e Kharoliwalla, F., “Study of Internet Router Architectures”, May 1, 2001 URL: http://www.egr.msu.edu/~misrakir/projects/InternetRouters.PDF (último acesso em outubro de 2003) [Motorola 1999] Motorola Corporation, MPC860 PowerQUICC Processor, Hardware Specifications, 1999, URL: www.motorola.com/webapp/sps/site/taxonomy.jsp?nodeId=01M0ylsDFTQ (último acesso em outubro de 2003) http://e- 101 [Netto 2001] Netto, P. O.B., “Grafos: Teoria, Modelos e Algoritmos”, Segunda Edição, Editora Edgard Blücher, 2001 [Ordonez 2003] Ordonez, E. D. M., Pereira, F. D., Penteado, C. G., Pericini, R. A., “Projeto, Desempenho e Aplicações de Sistemas Digitais em Circuitos Programáveis (FPGAs)”, Bless Gráfica e Editora Ltda, 2003 [Patterson 2000] Patterson, D. A. e Hennessy, J. L., “Organização e Projeto de Computadores: A Interface Hardware/Software”, LTC, 2a Edição, 2000 [Reconfigurable 2003] Reconfigurable Computing Definition, Association for Computing Machinery (ACM), 2003, URL: http://www.acm.uiuc.edu/sigarch/projects/reconf/report_1.html (último acesso em outubro de 2003) [Ricarte 1999] Ricarte, I. L. M., “Organização de Computadores”, FEEC/UNICAMP, 1999, URL: http://www.dca.fee.unicamp.br/courses/EA960/ (último acesso em outubro de 2003) [Rocha 2003] Rocha, A., “Redes de Computadores”, Liga de Ensino do Rio Grande do Norte, Faculdade Natalense para o Desenvolvimento do Rio Grande do Norte (FARN), 2003, URL: http://www.farn.br/bsi/redes/Redes.pdf (último acesso em outubro de 2003) [Salefski 2001] Salefski, B. e Caglar, L., “Re-Configurable Computing in Wireless”, 38th Design Automation Conference, Las Vegas, Nevada, USA, pp.178-183, June 18-22, 2001 [Seshadri 2003] Seshadri, M. S., Bent, J., Kosar, T., “Intelligent Routing using Network Processors: Guiding Design Through Analysis”, Relatório Técnico do Departamento de Ciência da Computação da Universidade de Wisconsin, EUA, Abril de 2003 [Shah 2001] Shah, N., “Understanding Network Processors”, Dissertação de mestrado, University of California Berkeley, EUA, 2001 [Shah 2002] Shah, N., Keutzer, K., “Network Processors: Origin of Species”, Proceedings of ISCIS XVII, The Seventeenth International Symposium on Computer and Information Sciences, 5p., 2002 102 [Sherwood 2003] Sherwood, T., Varghese, G., Calder, B., “A Pipelined Memory Architecture for High Throughput Network Processors”, In Proceedings of the 30th International Symposium on Computer Architecture (ISCA), pp.288-299, June 2003 [Star 2003] Star Bridge Systems, 2003, URL: http://www.starbridgessystems.com (último acesso em outubro de 2003) [Stenberg 2002] Stenberg, A., “Network Processor Core Architecture”, Dissertação de mestrado do Departamento de Ciência da Computação e Engenharia Elétrica, Divisão Engenharia da Computação da Lulea University of Technology, Suécia, março, 2002 [Strigel 2002] Strigel A., Manimaran, G., “A Survey of QoS Multicasting Issues”, IEEE Communications Magazine, Vol. 40, Issue 6, pp.82-87, June 2002 [Suryanarayanan 2002] Suryanarayanan, D., Byrd, G. T., Marshall, J., “A Methodology and Simulator for the Study of Network Processors”, Workshop on Network Processor, Cambridge, MA, 15p., February 3, 2002 [Tanenbaum 2003] Tanenbaum, A. S., “Redes de Computadores”, Editora Campus, 4a Edição, 2003 [Tennenhouse 1997] Tennenhouse, D. L., Smith, J. M., Sincoskie, W. D., Wetherall, D. J. e Minden, G. J., “A Survey of Active Network Research”, IEEE Communications Magazine, Volume 35, No. 1, pp.80-86, 1997 [Thiele 2002] Thiele, L., Chakraborty, S., Gries, M., Künzli, S., “Design Space Exploration of Network Processor Architectures”, Workshop on Network Processors, Cambridge, MA, 16p., February 3, 2002 [Troxel 2002] Troxel, I. A., George, A. D. e Oral, S., “Design and Analysis of a Dynamically Reconfigurable Network Processor”, IEEE Conference on Local Computer Networks (LCN), Tampa, Florida, pp.483-492, November 6-8, 2002 [Tsai 2002] Tsai, M., Kulkarni, C., Sauer, C., Shah, N., Keutzer, K., “A Benchmarking Methodology for Network Processors”, Workshop on Network Processors, Cambridge, MA, 12p., February 3, 2002 103 [Ulmer 2002] Ulmer, C., Wood, C. e Yalamanchili, S., “Active SANs: Hardware Support for Integrating Computation and Communication”, Workshop on Novel Uses of System Area Networks at HPCA, 12p., 2002 [Vitesse 2002] Vitesse IQ2000, Network Processor Product Brief, 2002, URL: http://www.vitesse.com/products/briefs/IQ2200_Family.pdf (último acesso em outubro de 2003) [Wolf 2000a] Wolf, T. e Turner, J., “Design Issues for High Performance Active Routers”, International Zurich Seminar on Broadband Communications, Zurich, Switzerland, pp. 199-205, February 2000 [Wolf 2000b] Wolf, T., “Design of an Instruction Set for Modular Network Processors”, IBM Report, RC21865, October 2000 [Wolf 2000c] Wolf, T., Franklin, M. A., “COMMBENCH – A Telecommunications Benchmark for Network Processors”, IEEE International Symposium on Performance Analysis of Systems and Software, Austin, TX, USA, pp.154-162, April 2000 [Wolf 2000d] Wolf, T., Franklin, M. A., Spitznagel, E. W., “Design Tradeoffs for Embedded Network Processors”, Technical Report, WUCS-00-24, Washington University in St. Louis, USA, July 10, 2000 [Wolf 2001] Wolf, T., Franklin, M. A., “Locality-Aware Predictive Scheduling of Network Processors”, IEEE International Symposium on Performance Analysis of Systems and Software, Tucson, Arizona, USA, pp.152159, November 4-6, 2001 [Xie 2002] Xie, Haiyong, Zhou, L., Bhuyan, L., “Architectural Analysis of Cryptographic Applications for Network Processors”, Workshop on Network Processors, Cambridge, MA, 11p., February 3, 2002 [Xilinx 2002] Xilinx Development System, “Synthesis and Simulation Design Guide”, 2002, URL: http://toolbox.xilinx.com/docsan/xilinx5/pdf/docs/sim/sim.pdf acesso em outubro de 2003) (último 104 8 – BIBLIOGRAFIA SUGERIDA Os primeiros livros sobre processadores de rede foram lançados recentemente. O Workshop on Network Processor and Applications seleciona e publica os melhores artigos em um livro ao final de cada ano. O único material em formato de livro em língua portuguesa é o nosso minicurso ministrado durante a III Escola Regional de Informática de 2003 [Freitas 2003b]. A relação dos livros segue abaixo (não estão presentes no capítulo de referências): [1] Panos C. Lekkas, “Network Processors: Architectures, Protocols and Platforms”, McGraw-Hill, Agosto de 2003 [2] Bill Carlson, “Intel Internet Exchange Architecture and Applications: A Practical Guide to Intel’s Network Processors”, Intel Press, Junho de 2003 [3] Douglas E. Comer, “Network Systems Design Using Network Processors”, Prentice Hall, Janeiro de 2003 [4] Patrick Crowley, et al., “Network Processor Design: Issues and Practices”, Morgan Kaufmann, Outubro de 2002 (Livro gerado com os melhores artigos do Workshop on Network Processors – NP1) 105 9 – ANEXOS Anexo 1: NPSIM: Simulador de Processador de Rede Artigo publicado no XXVIII Latin-American Conference on Informatics, CLEI 2002, Montevidéu, Uruguai, 2002. Anexo 2: Capítulo 5 “Processadores de Rede Comerciais” do Minicurso “Processadores de Rede: Conceitos, Arquiteturas e Aplicações” Ministrado e publicado na III Escola Regional de Informática RJ/ES, Vitória ES, 2003. Artigo publicado no XXVIII Latin-American Conference on Informatics, CLEI’2002, Montevideo, Uruguay, 2002 NPSIM: Simulador de Processador de Rede Henrique C. de Freitas Pontifícia Universidade Católica de Minas Gerais, Programa de Pós-graduação em Engenharia Elétrica, Belo Horizonte, Brasil, 30535-610 [email protected] Carlos Augusto P. S. Martins Pontifícia Universidade Católica de Minas Gerais, Programa de Pós-graduação em Engenharia Elétrica, Belo Horizonte, Brasil, 30535-610 [email protected] Abstract The main goal of this paper is to present NPSIM (Network Processor Simulator). The NPSIM was developed to simulate and validate the functioning of our network processor, called RCNP (Reconfigurable CISC Network Processor). The main feature of network processors is the data communication support between various network equipments and devices. The RCNP was developed to validate beginning concepts of network microarchitecture, like described in introduction topic. Although the NPSIM is functional simulation software, it can be used as learning software. The paper topics will show the RCNP validation process and how basic concepts of processor microarchitecture and data communication can be learned, through the use of NPSIM simulator. Keywords: network processors, functional simulator, data communication, processor architecture, learning Resumo O objetivo principal deste artigo é apresentar o NPSIM (Network Processor Simulator). O NPSIM foi desenvolvido com o objetivo de simular e verificar o funcionamento do processador de rede, projetado por nós, chamado RCNP (Reconfigurable CISC Network Processor). A principal característica dos processadores de rede é o suporte a comunicação de dados, estabelecendo e efetivando a comunicação entre os diversos equipamentos e dispositivos de rede. O RCNP foi desenvolvido para validação de conceitos iniciais da proposta de nova microarquitetura de rede, tal como será descrito no item introdutório. Além de ser um software de simulação funcional, o NPSIM também pode ser utilizado como software de aprendizagem. Os itens deste artigo irão ilustrar como podem ser trabalhados os conceitos básicos de arquitetura de processadores de rede e de comunicação de dados, e como foi feita a validação através do simulador NPSIM. Palavras chave: processadores de rede, simulador funcional, comunicação de dados, arquitetura de processadores, aprendizagem. 1 Introdução O NPSIM foi desenvolvido com base na necessidade de verificação de funcionamento da proposta de microarquitetura e conjunto de instruções do RCNP (Reconfigurable CISC Network Processor) [10,11]. O RCNP faz parte do projeto RNP (Reconfigurable Network Processor) que possui ainda o R2NP (Reconfigurable RISC Network Processor) [12] em desenvolvimento. A versão CISC foi projetada por se tratar de um modelo conceitualmente mais simples de projetar. Suas características de rede foram validadas e serviram como base inicial para o projeto R2NP. O NPSIM validou a microarquitetura e o conjunto de instruções do RCNP, através de simulações [7,13], e garantiu que o projeto pudesse evoluir. O objetivo deste artigo é apresentar o NPSIM, suas interfaces, funcionalidades (simulações e validação) e as possibilidades de aprendizagem dos conceitos básicos de arquitetura [28] de processadores de rede e de comunicação de dados [33]. Partindo da validação inicial, constatou-se o potencial do NPSIM para fins didáticos [13]. Através deste simulador passou a ser possível estudar conceitos de arquitetura [28] tais como: i) Microarquitetura, ii) Conjunto de instruções (linguagem de máquina), iii) hierarquia de memória, iv) Interfaces de comunicação e v) Desempenho. Estes são itens genéricos e que se aplicam a todos os tipos de processadores, por isso, estes itens possuem amplitude suficiente para o estudo de processadores dedicados e neste caso os processadores de rede. Outros itens, referentes à comunicação de dados [33], podem ser estudados através do NPSIM, são eles: i) Topologias, ii) Redes, iii) Protocolos e iv) Algoritmos de rede. Todos os itens citados serão descritos, durante o artigo, ilustrando a potencialidade didática do NPSIM e como sua estrutura de interfaces ajudou a validar o RCNP. Com isto, pretendemos mostrar que, além de ajudar a entender o funcionamento dos processadores de rede, que são resultados de projetos recentes das empresas de microprocessadores, o funcionamento de processadores genéricos também poderão ser entendidos através dos conceitos já citados. O processador de rede [20,21] é resultado de pesquisa recente da área. Seu surgimento aconteceu durante meados da década de 90 e ainda hoje é motivo de segredo para muitas empresas. Alguns datasheets são difíceis de encontrar tornando o processo de aquisição de informação muito restrito. Podemos citar, entre outras, as seguintes empresas como fabricantes de processadores de rede: Intel (IXP1200) [17], IBM (NP4GS3) [15], Cisco (Toaster 2) [7], Motorola/C-Port (C5e) [5], Sitera/Vitesse (PRISM IQ2000) [29], Agere/Lucent (FPP) [1], Lexra (Netvortex) [19], EZChip (EZChip) [8], MMC (EPIF) [24], Chameleon [3]. O processador de rede é responsável direto pela evolução dos equipamentos de rede [4,16]. Os roteadores ativos [6,31] são resultado da evolução dos processadores de rede. As microarquiteturas dedicadas favorecem o desempenho dos equipamentos tornando-os mais eficazes durante o processo de comunicação. A qualidade de serviço (QoS) é exigência e os processadores de rede estão preparados para atuar de forma eficiente e eficaz para suportar as necessidades de comunicação. Poucas pesquisas estão sendo realizadas. Foi constato através de consulta ao sistema Lattes do CNPq e através de alguns proceedings, que ainda não existem grupos, com exceção do nosso, trabalhando com processadores de rede em universidades brasileiras. Algumas universidades americanas estão realizando pesquisas na área e entre elas podemos citar as seguintes: i) University of Washington [27], ii) Washington University in St. Louis [32], iii) North Caroline State University [7] e iv) University of Califórnia, Berkeley [26]. Recentemente foi criado o Workshop on Network Processor [34], específico para discutir estudos referentes a processadores de rede dentro do HPCA (High Performance and Computer Architecture) onde as principais pesquisas são discutidas. Foi com base na importância dos processadores de rede, que decidimos desenvolver o projeto RNP. Um dos produtos e também resultado do projeto é o NPSIM. Além da sua capacidade como validador funcional do RCNP, acreditamos na sua capacidade de auxiliar o ensino de processadores e principalmente na difusão e aprendizagem do processador de rede, pouco conhecido, porém de extrema importância tecnológica para a sociedade atual. Este artigo está estruturado com os seguintes tópicos: Tópico 2: Simulador NPSIM Tópico 3: Conceitos de Arquitetura e Redes através do NPSIM Tópico 4: Resultados de Simulações Tópico 5: Conclusões Referências 2 2 Simulador NPSIM Este simulador tem a função de realizar testes funcionais dos diversos blocos do processador. Através deste simulador é possível escrever e executar diversos algoritmos, escritos em assembly, e visualizar a execução e os resultados através dos registradores, pilhas e matrizes representados pelos diversos componentes existentes no compilador C++ Builder 5.0, utilizado para construir e compilar o simulador. Através deste simulador também é possível estudar o comportamento de um processador de rede CISC, escrever algoritmos de roteamento e oferecer aos desenvolvedores, a possibilidade de escrever compiladores para o processador virtual (simulador) de rede, tal como uma máquina virtual. O simulador está dividido em sete interfaces: Memória, Registradores e Botões de Acesso Rápido; Montador (janela de edição do programa assembly) Buffers Permanentes (buffers reconfiguráveis da porta de entrada) Buffers Temporários (oito buffers fixos de entrada) Pacotes de Entrada (janela de edição de pacotes) Seletor de Conexão (matriz de comutação entre entrada e saída) Registradores de DMA (acesso direto à memória) Apenas a primeira interface é fixa. Esta interface, que contém a modelagem da memória, registradores e os botões de execução, permanece sempre à esquerda do simulador, para que o usuário possa visualizar os resultados que são comuns a todas as outras interfaces. A primeira e segunda interface são descritas através da figura 1. 2.1 Interface gráfica da Memória, Registradores, Botões de Acesso Rápido e Montador (Assembler) Como descrito anteriormente, este simulador possui uma interface gráfica fixa (figura 1), comum a todas as outras janelas gráficas. Esta interface é composta inicialmente pela representação da memória. A primeira coluna representa o endereço de memória e a segunda coluna a palavra de 1 byte, tamanho máximo de cada célula. Ao todo são oito registradores de controle, representados pelos seus valores em hexadecimal e decimal. É também representado o registrador de instrução, registrador de endereços, o registrador de status (informa porta de saída livre), registrador de Carry, registrador de magnitude (resultado da última operação realizada), contador de programa e por fim o registrador da palavra de controle (sinal de controle para cada bloco lógico). Os registradores das portas de entrada e saída e do Seletor de Conexão aparecem com o nome da instrução que os acessa, como na figura 9. Estes registradores são responsáveis por guardar dados referentes à porta de entrada que está sendo acessada, porta de saída para qual o pacote está sendo enviado, entre outros. Figura 1 – Interface Principal Por fim, a janela fixa termina com os botões de acesso rápido. Estes botões são responsáveis por executar o 3 programa armazenado na memória (Rodar), executar o programa passo a passo (Passos) e resetar o contador de programa (Resetar). A primeira janela móvel é o montador (assembler). O montador é responsável pela edição do programa assembly (instruções dedicadas do processador projetado) e pela conversão das instruções em byte code, que são armazenadas na memória. O botão Montar converte e armazena os byte codes na memória a partir do endereço da caixa de edição ao lado. 2.2 Interface gráfica Buffers Permanentes (buffers reconfiguráveis da porta de entrada) Buffers permanentes (figura 2) significam os buffers reconfiguráveis usados para armazenar os pacotes que não puderam ser enviados para o destino no momento que chegaram. Esta interface não simula a reconfiguração [18], porém existem buffers de tamanhos diferentes, usados para receber os pacotes enviados pelos buffers temporários (oitos buffers para cada entrada física). Ou seja, dependendo do tamanho do pacote um buffer permanente será escolhido para recebê-lo. Cada buffer permanente possui um registrador que indica qual a entrada que recebeu o pacote inicialmente. Este registrador ajuda, por exemplo, no momento em que o pacote tem que ser reenviado para a origem. Figura 2 – Buffers permanentes 2.3 Interface gráfica Buffers Temporários (oito buffers fixos de entrada) Cada uma das oito entradas físicas da Porta de Entrada (figura 3) possui um buffer temporário. Este buffer é usado primeiramente para receber os pacotes e fornecer ao processador a primeira leitura do pacote. Desta forma o processador pode decidir se re-direciona o pacote imediatamente para a Porta de Saída, através do Seletor de Conexão, guarda nos buffers reconfigurávéis ou na memória. Neste simulador o pacote é recebido pelos buffers temporários e só é enviado para reconfiguração após o clique no botão reconfigurar. Desta forma o aluno pode ver o pacote ser recebido pelo buffer temporário e em seguida ser enviado para o buffer permanente. É importante dizer que, um buffer permanente só recebe um pacote após o mesmo ter passado por um buffer temporário. Figura 3 – Buffers temporários 4 Como este simulador foi construído com os buffers permanentes já reconfigurados, o pacote recebido só é enviado para os buffers que podem recebê-los. Esta é a razão da caixa de edição Qtd. O valor desta caixa define que o pacote só pode ser enviado para os buffers reconfigurados selecionados. Ou seja, caso este valor seja igual a 10, somente os buffers entre 10 e 20 poderão ser usados para o cálculo de otimização do armazenamento do pacote. O simulador foi construído com 20 buffers já reconfigurados, por isto, se o pacote for de 16 kbytes, os buffers de tamanho inferior a este não poderão ser usados como base de cálculo para recebimento do pacote. Um buffer temporário pode ser conectado a uma saída por tempo indeterminado usando a instrução FCX. Um byte setado pela instrução SETDSC pode ser usado para desfazer esta conexão, por isto cada buffer possui um registrador que guarda este byte. 2.4 Interface gráfica Pacotes de Entrada (janela de edição de pacotes) Tal como o Montador esta janela (figura 4) oferece uma caixa de edição para criação dos pacotes usados em testes nos buffers da Porta de Entrada. Após digitar o texto, basta digitar qual a entrada que deverá receber o pacote e clicar em Enviar. O texto escrito na caixa de edição é convertido (Tabela 1) para ASCII e carregado no buffer referente à entrada digitada. Existe a opção de converter o pacote para ASCII ou para Hexadecimal. Neste último caso é necessário que o início da linha comece com duas barras e que contenha apenas números entre 0 e 65535. Uma nova barra na mesma linha separa números diferentes. Com exceção das barras, espaços e marcadores de parágrafo são convertidos para ASCII e enviados. Tabela 1 – Exemplos de conversão Texto Conversão Simulador 53696D756C61646F72 (ascii) 255 323535 (ascii) //255 FF (hexa) //44055/762 AC1702FA (hexa) Figura 4 – Editor de pacotes 2.5 Interface gráfica Seletor de Conexão (matriz de comutação entre entrada e saída) O Seletor de Conexão (figura 5) nada mais é do que uma chave crossbar configurável. Através desta chave são possíveis inúmeras combinações entre entrada (buffers) e saída. A interface da figura 5 mostra que o byte 0Ah está sendo enviado do buffer B9 para a saída S3. Cada linha da matriz é representada por um buffer e cada coluna por uma saída. Por problemas de espaço e para evitar uma barra de rolagem, os primeiros buffers permanentes compartilham as linhas com os buffers temporários. 5 Figura 5 – Chave crossbar 2.6 Interface gráfica Registradores de DMA (acesso direto à memória) Esta interface (figura 6) representa o bloco lógico que lê e escreve dados da entrada na memória ou da memória para a saída, sem a interferência dos registradores de controle do processador. Este bloco possui alguns registradores que auxiliam no endereçamento de memória e na escolha dos buffers de entrada e saída. O primeiro registrador guarda a posição inicial de leitura ou escrita em memória, o segundo registrador guarda o tamanho do pacote e o terceiro a posição final de memória. Outros dois registradores definem qual buffer será lido ou em qual saída será escrito o pacote, que estava guardado em memória. Figura 6 – Bloco DMA 3 Conceitos de Arquitetura e Redes através do NPSIM Neste tópico serão apresentadas as possibilidades de aprendizagem utilizando o NPSIM. Os conceitos de arquitetura [28] e de comunicação de dados [33] dos processadores de rede e em específico do RCNP [10,11] serão descritos nos sub itens a seguir. É importante ressaltar que o NPSIM irá oferecer um conhecimento introdutório sobre processadores de rede, afinal, existem processadores de rede comerciais com diferentes implementações arquiteturais e muito mais complexos. Abstração computacional [28] é o conhecimento dos níveis de arquitetura software / hardware que compõem o computador, no nosso caso, os processadores de rede. Os níveis de abstração são os seguintes: i) linguagem de alto nível (Ex.: orientada a objeto), ii) Assembly, iii) Sistema operacional, iv) arquitetura do conjunto de instruções, v) microarquitetura e vi) Nível lógico digital. No nosso caso trataremos de um número mais reduzido de níveis. A linguagem de mais alto nível utilizada no NPSIM é o assembly, não é utilizado sistema operacional e também não será ilustrado o nível digital do RCNP. 6 O NPSIM possui um menu com dois links que oferecem informações sobre o próprio simulador e também sobre o RCNP. Os links são: i) Sobre (processador de rede, o simulador, arquitetura e instruções do RCNP) e ii) Ajuda (informações de como utilizar o NPSIM). 3.1 Microarquitetura Figura 7 - Microarquitetura Figura 8 - Informações Através da opção Sobre é possível ter acesso a detalhes da microarquitetura do RCNP. A figura 7 ilustra o diagrama em blocos do processador de rede. A figura 8 ilustra detalhes dos buffers da porta de entrada e da chave crossbar. É possível também obter informações referentes à microarquitetura através do texto à esquerda da figura. Portanto, além de poder simular o código no NPSIM, estão disponíveis nesta opção, os diagramas necessários para entender o caminho de dados, de controle e também as interligações entre blocos que possibilitam o funcionamento dedicado para redes de comunicação de dados (Ex. portas de entrada e saída). 3.2 Conjunto de Instruções As figuras abaixo também fazem parte do menu Sobre. A figura 9 ilustra o conjunto de instruções e o respectivo código de operação. Por se tratar de um processador conceitual, com o objetivo de otimização dos blocos de rede, o conjunto de instrução é bastante simples. Não se usa formato de instrução otimizado, cada instrução é codificado por 1 byte. Instruções que possuem endereços de memória, como operandos, ocupam mais posições de memória. A figura 10 descreve a ação de cada instrução. Estas duas figuras, juntamente com as figuras 7 e 8, oferecem a possibilidade de estudo do funcionamento e comportamento de cada instrução e o impacto que cada uma delas tem na microarquitetura, principalmente as específicas de rede, que otimizam o processamento de pacotes. A simulação de um código, como será visto no item 4, resulta na visualização de causa e efeito das instruções executadas, favorecendo a melhoria de aprendizagem e mostrando como instruções específicas de rede aumentam o desempenho de processamento. Figura 9 – Conjunto de instrução Figura 10 - Ações 3.3 Hierarquia de Memória Um ponto importante no estudo da arquitetura de processadores é a hierarquia de memória [28], ou seja, como a proximidade e o tamanho de cada tipo de memória pode influenciar no desempenho do processador. A figura 11 7 ilustra a estrutura padrão de hierarquia de memória e a hierarquia utilizada no RCNP. Como a microarquitetura é dedicada para trabalhar em redes de comunicação de dados, quanto mais rápido o pacote, que está na porta de entrada, for processado ou redirecionado para a saída, maior o desempenho do processador. Por isto que os buffers de entrada (temporários e permanentes) são os melhores pontos na estrutura de hierarquia do RCNP. Isto ocorre, porque no RCNP existem dois pontos de referência, o processador e a porta de entrada. Por possuir alocação para os pacotes, é desnecessário em situação ideal, que os pacotes sejam deslocados da porta de entrada, o que não ocorre em processadores de propósito geral, que não possuem este tipo de espaço para alocação. As figuras 2 e 3 ilustram a estrutura de buffers da porta de entrada. Figura 11 – Hierarquia de memória 3.4 Interfaces de Comunicação Os blocos funcionais que são responsáveis pela caracterização do RCNP como processador de rede, estão ilustrados na figura 12. Os blocos do conjunto 1 são dedicados para o recebimento e tratamento dos pacotes. Estão presentes neste conjunto as portas de entrada e saída, a chave crossbar, os buffers de entrada (temporários e permanentes) e o registrador de status (guarda saída livre ou ocupada). O bloco 2 representa as interfaces com outros processadores. A unidade PCI é responsável pela interface com processadores de propósito geral e a unidade dedicada é responsável pela comunicação entre processadores de tipo RCNP. Esta unidade utiliza protocolo leve para obter maior velocidade de comunicação. Estas duas unidades de interface não estão representadas no NPSIM. 1 2 Figura 12 – Blocos de comunicação 3.5 Desempenho O principal motivo para o desenvolvimento dos processadores de rede é o desempenho [28]. A crescente necessidade por velocidade e qualidade de serviço, principalmente na Internet, tem impulsionado as pesquisas na área. Através do NPSIM é possível obter por simulações, resultados quantitativos que demonstram a melhoria de processamento quando se tem uma microarquitetura e conjunto de instruções dedicadas. Os resultados quantitativos foram obtidos e descritos no item 4. É importante ressaltar que o NPSIM não foi desenvolvido para testes de desempenho, porém, sua característica de funcionalidade provê a possibilidade de visualização e comparação de execução das instruções com demais tipos de processadores. 3.6 Redes e Topologias Do ponto de vista de arquitetura de comunicação de dados [33], duas variáveis importantes no estudo são os tipos de rede e topologias. Atualmente as redes mais utilizadas são: LAN (Local Area Network), MAN (Metropolitan Area Network) e WAN (Wide Area Network). As redes locais (LAN) são utilizadas em prédios de instituições e empresas, as redes MAN e WAN são redes de maior abrangência e se tornaram populares através da Internet. No entanto outros tipos de redes são muito importantes para o aumento de desempenho de processamento. Quando aglomerados 8 (clusters) [2,25] de processadores ou computadores necessitam de maior resposta ou vazão de dados é necessário à utilização de redes menores, onde os nós de processamento estão mais próximos. Este tipo de rede é chamado de System Area Network (SAN). Redes em nível de sistema computacional, onde protocolos leves são responsáveis pela comunicação entre os processadores, são normalmente utilizadas em aplicações de processamento paralelo ou distribuído de alto desempenho. As topologias são a representação física da rede, como os nós (computadores, processadores ou dispositivos) estão distribuídos. No item resultados, serão descritos três tipos de topologias. Programas foram escritos e simulados para as topologias que representam clusters em uma rede SAN. 3.7 Protocolos e Programas de Comunicação O padrão de comunicação entre os equipamentos de uma rede é definido pelo protocolo [33]. Desta forma a troca de informações é estabelecida através de programas previamente desenvolvidos que são capazes de interpretar corretamente os dados encontrados em cada posição do pacote. A figura 1 ilustra o Assembler (Montador). Através do Assembler é possível escrever, editar e carregar na memória o programa desenvolvido para ser executado pelo NPSIM. A figura 4 ilustra o editor de pacotes. Nesta interface é possível escrever um pacote e enviá-lo para uma das 8 entradas da figura 2. O item de resultados irá exemplificar melhor, as topologias e protocolos de comunicação. 4 Resultados de Simulações Algumas simulações foram realizadas para verificação funcional do RCNP [10,11]. Partindo destes resultados, também é possível comprovar as potencialidades didáticas do simulador. A seguir serão descritos os programas e topologias utilizadas para os testes. Será feito análise de como as simulações validam o RNCP e ajudam na aprendizagem prática dos conceitos ensinados em sala de aula. Não é intenção, destas simulações, comparar o desempenho entre as topologias. Elas foram escolhidas apenas com o intuito de exemplo didático e como forma de comparar os resultados quantitativos de acesso à memória e portas de I/O com processadores GPP’s. As topologias simuladas são: Hipercubo: Nesta topologia cada nó (vértice) representa um processador RCNP. Um algoritmo de roteamento foi feito e está descrito na tabela 2. Nesta topologia o endereço de cada vértice é diferente em apenas 1 bit para o endereço do vértice adjacente. Este foi o critério usado para cálculo de rota. Anel unidirecional: Apenas um processador RCNP é responsável por criar esta topologia. A chave crossbar interliga todos os nós da rede. Nesta topologia, a saída do computador, à esquerda, está conectado com a entrada do computador à direita. Árvore balanceada: Cada vértice também é um processador RCNP. Neste caso o programa de roteamento utiliza a padronização de endereços existente na topologia. Os endereços crescem da esquerda para a direita. Figura 13 – Topologias simuladas A tabela 2 descreve os três programas e a quantidade de ciclos que foi gasto por cada instrução. É importante ressaltar que o RCNP não utiliza pipeline, por isto a quantidade de ciclos por instrução é alta. A quantidade de ciclos por instrução, mostrado na tabela 2, não é resultado do simulador. Estes ciclos foram definidos no projeto das instruções e estão apenas ilustrando a quantidade que cada instrução gasta para ser executada antes que outra instrução comece a ser processada. 9 Tabela 2 – Programas testados Qtd. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Hipercubo LDX F,000006 LDI D,03 PUT SUI B,00 JZ 000000 LDI B,00 LDI C,05 ENT BC XOR D MOV E,A JZ F ANI A,01 JMZ 000029 ANI E,02 JMZ 000025 LDI B,03 SEC JMP F LDI B,02 SEC JMP F LDI B,01 SEC JMP F Ciclos 5 5 4 5 5 5 5 4 4 4 4 5 5 5 NE 5 NE 5 NE 4 NE 4 NE 5 NE 4 NE 4 NE 5 4 4 Árvore Balanceada LDI D,06 PUT SUI B,00 JZ 000025 LDI B,00 LDI C,05 ENT BC SUB D JMI 00001A LDI B,04 SEC JMP 000002 JZ 000025 LDI B,05 SEC JMP 000002 HLT ------------------------------------------------------------------------------------------------------------------------------- Ciclos 5 4 5 5 5 5 4 4 5 5 4 5 5 NE 5 NE 4 NE 5 NE 4 NE ---------------------------------------------------------------- Anel unidirecional LDI A,07 LDI B,01 PUT B LDI B,08 SEC FCX PUT B DCR B SEC FCX DCR A JMZ 000009 HLT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ciclos 5 5 4 5 4 4 4 4*8 4*7 4*7 4*7 5*8 4 ---------------------------------------------------------------------------------------------------- NE: Não executado na simulação Comparando os resultados de simulação do RCNP [10,11] com resultados de processadores de propósito geral, chegamos aos resultados ilustradas na figura 14 (simulação da topologia hipercubo). Para o processador RCNP simulado através do NPSIM, foi obtido valores baixos de acesso à memória e às portas de entrada e saída. Com apenas duas intruções de I/O foi possível redirecionar um pacote inteiro da origem para o destino. Para um processador de propósito geral de mesmas características, foi necessário a utilização de 21 instruções. Estes valores foram obtidos simulando um pacote pequeno. Quanto maior o pacote e mais complexo for o cabeçalho, maior será o ganho de performance obtido pelo RCNP em relação a um GPP. Como o GPP tem que guardar o pacote e várias informações na memória, o acesso de leitura e escrita também é muito maior, e cresce juntamente com o tamanho do pacote. Um processador dedicado de rede opera com um desempenho muito mais rápido do que um GPP (General-purpose processor). Resultados como estes ajudam a entender a necessidade de projetos otimizados e que venham acrescentar velocidade de processamento em ambientes exigentes como a comunicação de dados. Dentro do projeto RNP está em fase de desenvolvimento a versão RISC do RCNP, o R2NP. Este processador aproveita as vantagens da microarquitetura de rede otimizada com as vantagens do modelo RISC. Está em fase final o projeto de simulador reconfigurável [30] que verificará funcionalmente o R2NP. Este simulador tem a finalidade de se tornar uma ferramenta eficaz no ensino de arquitetura de computadores, uma fez que seu objetivo é a flexibilidade de simulações. Qualquer tipo de processador poderá ser simulado apenas acrescentando arquivos de configuração específicos. Acesso a memória e portas de I/O 90 81 80 70 Acessos 60 50 Memória 40 I/O 30 20 10 21 12 2 0 RCNP GPP Processadores Figura 14 – Quantidade de Acessos 10 5 Conclusões Através do NPSIM foi possível comprovar que processadores de rede são muito mais eficientes que processadores de propósito geral. Chegamos a constatar um ganho 7 vezes de performance, em relação a um processador GPP, para acesso a memória. O conjunto de instruções de rede otimizou consideravelmente o processamento de pacotes. Com apenas 2 instruções é possível redirecionar todo o pacote para a saída, o que não acontece com o GPP, que precisa guardar em memória para depois redirecionar. As interfaces de auxílio, encontradas no menu, acrescentam conhecimento à cerca de processadores de rede e do funcionamento do RCNP. As interfaces de execução ilustram o movimento de dados, que ocorre durante a execução dos programas, podendo passo a passo, ilustrar a seqüência correta de efeito e influência de cada instrução nos blocos funcionais ilustrados em todas as interfaces do NPSIM. Ressaltamos como resultados obtidos pelo NPSIM, a validação da microarquitetura e conjunto de instruções do RCNP, que comparadas se mostraram bastante eficientes. Podemos concluir que o objetivo do NPSIM foi alcançado. Desenvolvemos uma ferramenta de simulação capaz de validar o projeto inicial do RCNP e de oferecer uma nova opção de aprendizagem [13] de arquitetura de processadores de rede e comunicação de dados. Como contribuição, apresentamos um simulador que além de todas as características já mencionadas, procura difundir os processadores de rede, ainda pouco conhecidos, na comunidade científica. Como descrito na introdução, existem poucas pesquisas na área de processadores de rede. Porém podemos ressaltar o projeto do simulador CnetSim (Component Network Simulator) [7], desenvolvido na North Caroline State University em parceria com a Cisco para o processador Toaster 2. Os objetivos principais desta pesquisa são: i) Descrever a arquitetura do Toaster 2, ii) Obter resultados de performance e iii) Uma metodologia de estudo e desenvolvimento de hardware. Entre as características mencionadas do projeto do simulador CNetSim, ressaltamos os resultados de performance, não implementado no NPSIM. Porém, a principal diferença se encontra no fato de que o CNetSim simula um processador comercial e o NPSIM simula um processador conceitual. Os objetivos, descrição de arquitetura e método de estudo (simulador didático) são encontrados no NPSIM. As pesquisas relacionadas com processadores de rede reconfiguráveis [10,11,12] ainda são mais recentes e podemos citar as seguintes universidades: i) University of California, Los Angeles [9], ii) University of Florida [14], iii) University of Patras [23]. A computação reconfigurável [18] tem por objetivo aumentar a flexibilidade e o desempenho dos processadores de rede. Como trabalhos futuros da nossa pesquisa, podemos citar o seguinte: i) Acrescentar contadores no NPSIM para testes e simulações de desempenho, ii) Simular o R2NP com o simulador reconfigurável (Reconf_KMT) [30], iii) Simular o R2NP em VHDL (VHSIC Hardware Description Language) [22], iv) Prototipar o R2NP em FPGA (Field Programmable Gate Array) [22], v) Simular o R2NP em uma rede de comunicação real e vi) criar ambiente de auxílio ao estudo através dos simuladores de processadores de rede desenvolvidos. Referências [1] Agere System, Fast Pattern Processor (FPP) Product Brief, April 2001, http://www.agere.com [2] Buya, R., High Performance Cluster Computing, Volume 1, Prentice Hall, 1999 [3] Chameleon Systems, “CS2000 Reconfigurable Communications Processor”, Family Product Brief, 2000 [4] Cisco Systems White Paper, “The Evolution of high-end Router Architectures-Basic Scalability and Performance Considerations for Evaluating Large-Scale Router Designs”, 2001, http://www.cisco.com [5] C-Port, C5e Network Processor Product Brief, January 2002, http://www.motorola.com [6] D. L. Tennenhouse, J. M. Smith, W. D. Sincoskie, D. J. Wetherall, G. J. Minden, “A Survey of Active Network Research”, IEEE Communications Magazine, Volume 35, No 1, pp.80-86, 1997 [7] D. Suryanarayanan, G. T. Byrd and J. Marshall, “A Methodology and Simulator for the Study of Network Processors”, Workshop on Network Processor (NP1 at HPCA 8), Cambridge Massachusetts, February 2-6, 2002 [8] EZChip Network Processors, http://www.ezchip.com [9] G. Memik, S. O. Memik, W. H. Mangione-Smith, “Design and Analysis of a Layer Seven Network Processor Accelerator Using Reconfigurable Logic”, The 10th Annual IEEE Symposium on Field-Programmable Custom Computing Machines FCCM’02, Napa, California, 21-24 April, 2002 11 [10] H. C. Freitas, C. A. P. S. Martins, “Processador de Rede com Suporte a Multi-protocolo e Topologias Dinâmicas”, II Workshop de Sistemas Computacionais de Alto Desempenho, WSCAD’2001, Pirenópolis - GO, Brasil, pp.31-38 [11] H. C. Freitas, C. A. P. S. Martins, “Projeto de Processador com Microarquitetura Dedicada para Roteamento em Sistemas de Comunicação de Dados”, I Workshop de Sistemas Computacionais de Alto Desempenho, WSCAD’2000, São Pedro - SP, Brasil, pp.63, (Iniciação Científica) [12] H. C. Freitas, C. A. P. S. Martins, “R2NP: Processador de Rede RISC Reconfigurável”, III Workshop de Sistemas Computacionais de Alto Desempenho, WSCAD’2002, Vitória, ES, Brasil, pp. 60-67 [13] H. C. Freitas, C. A. P. S. Martins, “Simulation Tool of Network Processor for Learning Activities”. Frontiers in Education Conference (FIE 2002), Boston, MA, USA, November 2002, Session S2F, pp.1-6 [14] I. A. Troxel, A. D. George, S. Oral, “Design and Analysis of a Dynamically Reconfigurable Network Processor”, IEEE Conference on Local Computer Networks (LCN), Tampa, Florida, November 6-8, 2002 [15] IBM PowerNP NP4GS3 Databook, http://www.ibm.com [16] Intel WAN/LAN Access Switch Example Design for the Intel IXP 1200 Network Processor, May, 2001, http://www.intel.com [17] Intel, “IXP 1200 - Network Processor”, Datasheet, May 2000, http://www.intel.com [18] K. Compton, S. Hauck, “Reconfigurable Computing: A Survey of Systems and Software”, ACM Computing Surveys, Vol. 34, No. 2, June 2002, pp. 171-210 [19] Lexra, NetVortex Network Communications System Multiprocessor NPU, http://www.lexra.com [20] Lucent Technologies, Building for Next Generation Network Processors, September 1999 [21] Lucent Technologies, The Challenge for Next Generation Network Processors, September 10, 1999 [22] M. Glesner, A. Kirschbaum, “State-of-the-Art in Rapid Prototyping”, XI Brazilian Symposium on Integrated Circuit Design, SBCCI’98, Búzios, Rio de Janeiro, 1998, pp.60-65 [23] M. Iliopoulos, T. Antonakopoulos, “Reconfigurable Network Processors Based on Field Programmable System Level Integrated Circuits”, Field-Programmable Logic and Applications, The Roadmap to Reconfigurable Computing, 10th International Workshop, FPL 2000, Villach, Austria, August 27-30, 2000, pp. 39-47 [24] MMC Networks, “EPIF-105, EPIF-200, GPIF-207, XPIF-300, Packet Processors”, http://www.mmcnet.com [25] Myrinet Overview, http://www.myri.com/myrinet/overview/index.html [26] N. Shah; “Understanding Network Processors”, Trabalho de Dissertação apresentado na Universidade de Berkeley, 4 de setembro de 2001 [27] P. Crowley, J.-L. Baer, “A Modeling Framework for Network Processor Systems”, Workshop on Network Processor (NP1 at HPCA 8), Cambridge Massachusetts, February X-X, 2002 [28] Patterson, D. A., J. L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, Morgan Kaufmann Publisher, 1997 [29] Sitera IQ2000, Network Processor Product Brief, http://www.sitera.com [30] T. H. Medeiros, C. A. P. S. Martins, “Reconf_KMT, Uma Ferramenta Reconfigurável para a Simulação de Microprocessadores”, III Workshop de Sistemas Computacionais de Alto Desempenho, WSCAD’2002, Vitória, ES, Brasil, pp. 32-38 [31] T. Wolf and J. Turner, “Design Issues for High Performance Active Routers”, International Zurich Seminar on Broadband Communications, Zurich, Switzerland, February 2000, pp. 199-205 [32] T. Wolf and M. A. Franklin, “Design of an Instruction Set for Modular Network Processors”, IBM Research Report, RC21865, October 2000 [33] Tanembaum, A. S., Redes de Computadores, 3a Edição, Editora Campus, 1997 [34] Workshop on Network Processor, http://www.cs.washington.edu/NP2/ 12 Capítulo sobre Processadores Comerciais do Minicurso Processadores de Rede: Conceitos, Arquiteturas e Aplicações. Publicado na III Escola Regional de Informática RJ/ES, Vitória, 07 de outubro de 2003 141 5. Processadores de Rede Comerciais Apresentamos nesta seção os Processadores de Rede comerciais de cada fabricante descrito na introdução. A descrição dos principais blocos lógicos, o funcionamento e alguns dados quantitativos de cada processador. Na seção 8 apresentamos alguns resultados da nossa proposta de um processador acadêmico. Os Processadores de Rede comerciais possuem uma arquitetura muito parecida com a que foi descrita na seção 4, como sendo de referência. Neste tópico iremos descrever arquiteturas específicas de alguns fabricantes. 5.1. Motorola – PowerQUICC Family Neste tópico será apresentado o processador de comunicação de dados MPC860 [Motorola 1999] da família PowerQUICC. As aplicações principais deste processador são: roteadores e switches de LAN/WAN, dispositivos de integração de redes, concentradores de rede, gateways, DSL/cable modems e sistemas de voz sobre IP. A classificação da Motorola para os Processadores de Rede define que estes são destinados ao aumento de desempenho na qualidade de serviço (QoS), o que não se aplica, neste caso, aos processadores de comunicação de dados da Motorola. Porém estas duas classes de processadores da Motorola são complementares. O MPC860 possui um barramento auto-ajustável de 8-, 16-, e 32 bits. Existem três blocos principais na figura 5.1, que serão descritos com mais detalhes a seguir: Figura 5.1. – Arquitetura do MPC860 Bloco 1 (PowerPC core): Este bloco possui o processador principal de 32 bits (PowerPC) responsável pela execução dos códigos das camadas mais altas, com o intuito de aumentar o throughput (vazão). Possui cache de instrução e de dados de 4kbytes e duas unidades de gerenciamento de memória, relacionada cada uma com seu respectivo cache. Bloco 2 (System Interface Unit): Bloco responsável pela interface do barramento interno com barramentos externos. Possui uma controladora de memória, um barramento de interface, uma unidade de funções do sistema, clock e uma unidade de interface PCMCIA. Bloco 3 (Communications Processor Module): Este é o módulo de comunicação de dados. Através deste modulo é possível enviar e receber dados de diferentes tipos de dispositivos através de quatro canais seriais de comunicação (SCC) e dois de gerenciamento (SMC). Os dispositivos 142 conectados podem ser usados de forma individual ou, através destes canais, usar um barramento multiplexador por divisão de tempo. Este módulo possui um micro-controlador de 32 bits e 16 canais seriais de DMA (Acesso Direto a Memória). Oito canais para transmissão e oito para recepção. Os canais de DMA são de uso exclusivo do micro-controlador, sendo usados para obter e mover dados para a memória. Alguns dos protocolos suportados por este módulo são: Ethernet, Fast Ethernet, ATM, HDLC, Appletalk, UART (Universal Asynchronous Receive and Transmit) e ISDN. A comunicação entre os dois processadores é feita através da memória interna. Através desta memória cada processador pode escrever bits de controle e ler bits de status, possibilitando a requisição e resposta dos dados. Neste processador o processamento “rápido” é feito pelo micro-controlador e o processamento “lento” é feito pelo PowerPC. 5.2. Motorola/C-Port – C5 Family Esta família de processador foi projetada pela C-Port / Motorola [C-Port 2001, 2002] para aplicações de rede mais ligada à qualidade de serviço QoS. Portanto, as duas famílias de processadores da Motorola se complementam, um estabelece a comunicação com mais consistência e o outro prioriza os critérios de QoS, exigência crescente entre as aplicações e serviços de rede. Os principais blocos do C-5 NP (Network Processor), são os seguintes (figura 5.2): • Channel Processors (CP) • Executive Processor (EP) • Fabric Processor (FP) • Buffers Management Unit (BMU) • Table Lookup Unit (TLU) • Queue Management Unit (QMU) Channel Processors O C-5 NP possui dezesseis processadores de canal que recebem, processam e transmitem os dados. O número de processadores por porta é configurável, dependendo do tipo de interface. Inicialmente um processador é alocado para aplicações onde a largura de banda é média, porém quando há necessidade de utilização de uma interface de alta velocidade, múltiplos processadores podem ser alocados por porta. Múltiplas portas podem alocar apenas um processador, neste caso é utilizado um multiplexador externo e o tipo de aplicação é para aplicação de banda baixa. Esta arquitetura suporta protocolos seriais e paralelos: • 10Mb Ethernet (RMII) • 100Mb Ethernet (RMII) 143 • 1Gb Ethernet (RMII e TBI) • OC-3 • OC-12 • DS1/DS3, através de multiplexadores externos Executive Processor Este processador é o ponto principal de processamento. Ele é responsável por gerenciar as interfaces e suas funções são: • Resetar e iniciar o C-5 NP • Carregar o programa e controla os CP’s • Controla as exceções • Gerenciar a interface host pela PCI • Gerenciar a interface PCI, o barramento e a memória PROM O sistema de interface é composto por: • PCI: Utilizada para conectar com outros processadores (host) • SBI: Interface bidirecional de propósito geral • PROM: Memória flash usada para boot. Interface de baixa velocidade. Tamanho máximo de 8Mbytes. Fabric Processor Este processador atua como uma interface de rede de alta velocidade. Ele suporta transferência bi-direcional de pacotes, frames ou células do C-5 NP para as interfaces de hardware que provêem conectividade com outros Processadores de Rede ou hardwares de processamento similar. Buffers Management Unit Esta unidade é responsável pela interface do C-5 NP com a arquitetura de pipeline externo, Single Data Rate Synchronous DRAM. A memória externa é particionada e usada como buffers para receber e transmitir dados entre CP’s, FP e EP. Ela está no segundo nível de hierarquia de memória do Executive Processor. Table Lookup Unit É responsável pela busca e a atualização em tabela e serviços associados para os processadores CP, EP e FP. Possui também interface para memória externa. Queue Management Unit Gerencia o número de aplicações definidas nos descritores de fila. Esta unidade possui um chip interno responsável por guardar os descritores na memória SRAM externa. 144 Figura 5.2. – Arquitetura do C-5 NP 5.3. Intel – IXP1200 Este Processador de Rede [Intel 2000] (figura 5.3) é composto por sete processadores RISC. O primeiro processador é chamado de StrongARM e é responsável pelo processamento mais complexo, tal como construção e manutenção de tabelas e gerenciamento da rede. Os outros seis processadores são chamados de microengines. Eles trabalham com multi-processamento e multi-thread e são responsáveis pelo processamento e re-direcionamento dos pacotes. Com base nestes dados iniciais, já é possível definir que, a classe de processamento “rápido” está relacionada com as microengines e a classe de processamento “lento” está relacionada com o processador StrongARM. Figura 5.3. – Arquitetura do IXP1200 A seguir serão descritas algumas características básicas de cada bloco lógico: Processador StrongARM Processador RISC de 32 bits, com 16kbytes de cache de instrução e 8kbytes de cache de dados. Possui um mini-cache de 512bytes, unidade de gerenciamento de memória e acesso às unidades FBI, PCI e memória SDRAM. Microengines Suportam multi-thread, possuem ULA’s (Unidades Lógicas e Aritméticas) e 128 registradores de propósito geral e 128 de transferência. Possuem cache de instrução e de dados e acesso à unidade FBI, aos canais PCI DMA, SRAM e SDRAM. 145 Memórias A memória SDRAM possui um máximo de endereçamento de 256Mbytes e a SRAM um máximo de 8Mbytes. Existe também uma memória FlashROM de 8Mbytes para boot do processador StrongARM. Unidade FBI e Barramento IX A unidade FBI trabalha na camada MAC sobre o barramento IX e é responsável pelo serviço de periféricos. O barramento IX possui 64 bits em 66 MHz e é responsável pela interface com a ETHERNET, ATM e outros processadores da família IXP. Unidade PCI É uma unidade padrão PCI de 32 bits responsável pela interface com outros dispositivos PCI, processadores (CPU’s) e dispositivos MAC. Opera em uma freqüência de 66 Mhz. Este processador possui ainda uma porta serial UART (Universal Asynchronous Receive and Transmit), e quatro portas I/O de propósito geral. A família de Processadores de Rede da Intel ainda é composta pelos seguintes processadores: IXP2850, IXP2800, IXP2400, IXP425, IXP422, IXP421 e IXP420. 5.4. IBM – PowerNP NP4GS3 Serão descritos neste tópico, os principais blocos do NP4GS3 (figura 5.4), Processador de Rede IBM [IBM 2002]. Multiplexador Camada Física Provê a interface do Processador de Rede com portas de comunicação externa. Existem dez unidades de transferência de dados (Data Mover Units), sendo que, cinco de entrada e cinco de saída. Quatro pares são usados para interfaces externas. Cada DMU suporta os seguintes tipos de configuração: • 10 x 10/100 FDX Ethernet, por DMU • 1 x 1GB, por DMU • 4 x OC-3, por DMU • 1 x OC-12, por DMU • 1 x OC-48, por 4 DMU’s O outro par DMU é para comunicação interna ao processador (Wrap Port). Ingress EDS (I-EDS) Este bloco é responsável por encaminhar os frames recebidos pelo DMU. Suas principais funções são: • Guardar os frames em memória interna RAM. • Filtrar e decidir algumas alterações no frame. • Desenfileirar, encaminhar ou descartar o frame. 146 Switch Interface Provê uma célula de dados baseado na interface entre NP’s via um switching fabric (para três ou mais NP’s) ou conexão direta entre dois NP’s. Este bloco está dividido nas seguintes partes: • I/E-SDM: Interface lógica entre o I/E-EDS e a célula. • I/E-SCI: Transmite e recebe células da interface física. • DASL: Interface física entre: o NP e switch fabric o Entrada/saída de 1 NP o Entrada/saída de 2 NP’s Egress EDS (E-EDS) Suas principais funções são: • Receber frames do Switch Interface. • Enfileirar os frames e guardar em memória RAM externa. • Processar os pacotes, desenfileirar e encaminhar os frames. Shaper Gerencia a largura de banda por frame com base nas portas Egress – DMU. Embedded Processor Complex Determina o que deve ser feito com os frames recebidos pelo I-EDS e E-EDS. Contém oito Dyadic Picoprocessors e nove co-processadores. “O código faz parecer que o processador é um ASIC programável”. Embedded PowerPC (ePPC) O PowerPC 405 engine foi desenvolvido para controle de funções de rede tais como: • Encaminhar e filtrar pacotes analisando campos do protocolo IP. • Controlar protocolos de roteamento tal como: RIP, OSPF e BGP. • Gerenciar, configurar, diagnosticar e suportar agentes SNMP. System Memory Este bloco suporta memórias interna e externa. Os tipos são: • SRAM (interna) • Z BT SRAM (externa) • DDR SDRAM (externa) 147 Figura 5.4. – Arquitetura do NP4GS3 5.5. Lucent/Agere – FPP/ASI/RSP A solução da Lucent/Agere [Agere 2001] consiste em três tipos de processadores: FPP (Fast Pattern Processor), RSP (Routing Switch Processor) e ASI (Agere System Interface). A figura 5.6 ilustra a arquitetura da solução usando os três processadores. O pipeline de dados é realizado através de interface física entre o FPP e o RSP. O processador ASI é utilizado apenas quando há um excesso no gerenciamento. Figura 5.6. – Arquitetura integrada dos três processadores Fast Pattern Processor (FPP) O FPP (figura 5.7) é um processador com pipeline e suporte até 64 threads. Cada unidade de pacote de dados (PDU) que chega do barramento UTOPIA é assinalado como uma nova thread. O suporte em hardware para o chaveamento de contexto habilita o FPP a processar múltiplas PDU’s em paralelo. 148 Figura 5.7. – Arquitetura do FPP As principais aplicações para este processador são: • Roteadores e switches; • Firewalls, gerenciamento e monitoramento de redes; • Segmentação ATM e Frame Relay; • Processamento de lista e controle de acesso. Routing Switching Processor (RSP) O RSP (figura 5.8) recebe a classificação dos dados e as PDU’s do FPP e entrega para a fabric. As quatro principais funções do RSP são: enfileiramento, gerenciamento de tráfego, gerenciamento de modelo e modificação de pacote. O RSP recebe os pacotes de instrução do FPP e guarda as PDU’s na SDRAM. Baseado nos cálculos de gerenciamento de tráfego, as PDU’s podem ser enfileiradas ou descartadas. A PDU pode então, ser transmitida ou buscada de memória, modificada e então transmitida. Figura 5.8. – Arquitetura do RSP Agere System Interface (ASI) A principal função do ASI (figura 5.9) é referente ao processamento que requer o caminho “lento”. Este processamento é caracterizado por: roteamento, atualizações em tabelas, atualizações em filas, exceções e estatísticas. Existe uma interface PCI para gerenciamento externo e uma interface PCI133 SDRAM, para acesso à memória. 149 Figura 5.9. – Arquitetura do ASI 5.6. EZChip – NP - 1 O NP-1 [EZChip 2002] é um Processador de Rede full-duplex de 10Gbits camada 7. Este processador incorpora a tecnologia TOPcore (Top Optimized Processing Core), que consiste em um array integrado de processadores customizados em uma arquitetura super-escalar que provê desempenho e flexibilidade de processamento de pacotes. Suas principais aplicações são: • Equipamentos de rede, tais como roteadores, switches e gateways; • Balanceamento de carga; • Analisadores e testadores de rede; • Firewalls e VPN’s. A figura 5.10 ilustra as interfaces do NP-1. Figura 5.10. – Interfaces do NP-1 Interfaces: • Uma porta OC-192 com interface SPI4.2; • Duas portas Ethernet 10 Gbits com uma MAC integrada; • Oito portas Ethernet 1 Gbit com oito MAC’s integradas de 10/100/1000 Mbps; • Uma interface padrão CSIX (Common Switch Interface) provê conectividade com um switch fabric; • Uma interface PCI é usada para interconectar o NP-1 com outro tipo de processador. 150 A figura 5.11 ilustra a arquitetura TOPcore. A função de cada estágio é a seguinte: • TOPparse: identificar protocolos e extrair cabeçalhos dos pacotes; • TOPsearch: executar lookups em diferentes níveis; • TOPresolve: assinala pacotes para enfileirar ou enviar para portas; • TOPmodify: modifica conteúdo dos pacotes; Figura 5.11. – Arquitetura do NP-1 5.7. Sitera/Vitesse – Prism IQ2000 Family Este é um Processador de Rede [Vitesse 2002] (figura 5.12), que trabalha como um processador padrão. Enquanto o processador padrão faz o trabalho de controle, processamento e gerenciamento de sistemas, o co-Processador de Rede faz o trabalho de processamento dos pacotes, classificação, lookups e análise de QoS (Quality of Service) e Cós (Class of Service). O IQ2000 trabalha na camada 2 e 3 em equipamentos como switches e roteadores e suporta pacotes com taxas de 2.5Gbps. Figura 5.12. – Arquitetura do IQ2000 Algumas aplicações do IQ2000: • Roteamento de multi-protocolos complexos; • Classificação, filtragem, inspeção e criptografia; • Políticas de QoS; • Multicast; • Tradução de endereços de rede; • Outras operações de processamento de pacotes. 151 Algumas características técnicas: • Quatro processadores escalares de 200Mhz; • Largura de banda (DS-0 a OC-48); • Suporte nativo para implementações MIPS, PowerPC e outros RISC’s; • Co-processadores especializados; • Conjunto de instruções especializado para operações de rede; • Suporte em hardware para Qualidade de Serviço (QoS) 5.8. Chameleon CS2000 Family O processador de comunicação reconfigurável da Chameleon Systems [Chameleon 2000] foi o primeiro da indústria de Processadores de Rede a utilizar reconfiguração (seção 8.1.) dinâmica como parte do sistema normal de operação. A arquitetura do CS2000 é ilustrada na figura 5.13. Algumas características técnicas do CS2000: • Fabric reconfigurável de 32 bits; • 84 unidades de caminho de dados de 32 bits; • 24 unidades de multiplexadores de 16x24 bits; • 3000 MMACS de 16 bits; • 24000 MOPS de 16 bits; • Fabric reconfigurável em 1 ciclo de clock; • Canais de voz/dados/vídeo por chip; • Processador ARC integrado de 32 bits; • Controlador PCI integrado de 32 bits; • Controlador de memória integrado de 64 bits; • Controlador de DMA integrado de 16 canais; • 160 pinos de entrada e saída programáveis; • Largura de banda de 2Gbytes por segundo. Algumas de suas principais aplicações são: Estações base sem fio de 2G e 3G, Wireless Local Loop (WLL) [Salefski 2001], Voz sobre IP e alto desempenho DSL. Figura 5.13. – Arquitetura do CS2000 152 A unidade reconfigurável [Compton 2002] [Martins 2002] do CS2000 é o Processing Fabric (figura 5.14). Esta unidade é dividida em fatias, as unidades básicas de reconfiguração. O CS2112 possui quatro fatias, cada uma pode ser reconfigurada independentemente. Cada fatia consiste de três blocos, constituídos de Unidades de Caminho de Dados, Multiplicadores, Memórias Locais e Unidades de Controle. Figura 5.14. – Fabric reconfigurável