Evaluation of arithmetic operators for the MPPA-256 manycore architecture
Autor(a) principal: | |
---|---|
Data de Publicação: | 2016 |
Tipo de documento: | Trabalho de conclusão de curso |
Idioma: | eng |
Título da fonte: | Repositório Institucional da UFRGS |
Texto Completo: | http://hdl.handle.net/10183/147661 |
Resumo: | 1.1 Introdução Este capítulo apresenta um resumo estendido em português sobre o Trabalho de Final de Estudos, escrito em inglês, realizado na França durante a participação do Programa de Intercâmbio Brafitec com a obtenção do duplo diploma. A motivação do trabalho assim como as etapas de desenvolvimento do mesmo são apresentadas brevemente para que se tenha uma compreensão geral texto. 1.1.1 Contexto do trabalho Este trabalho de conclusão de curso em microeletrônica, decorrente da co-tutela firmada entre as universidades Institut Polytechnique de Grenoble – École Nationale de Physique, Électronique et Matériaux (Phelma) e Universidade Federal do Rio Grande do Sul, foi realizado no período de seis meses na empresa KALRAY. Esta empresa tem atuação na área de microeletrônica voltada para desenvolvimento de microprocessadores manycore de alto desempenho e baixo consumo. O principal produto desenvolvido pela empresa é o processador MPPA-256 que contém 256 núcleos de processamento funcionando a 400 MHz. Baseando-se no massivo poder de processamento paralelo com núcleos VLIW e com uma frequência de operação mais baixa se comparada aos processadores mais comuns disponíveis no mercado, este processador é extremamente eficiente energeticamente uma vez que possui uma relação de taxa teórica de pico de computação por unidade de energia em torno de 25 GFLOPS/W. 1.1.2 Motivação Em processadores atuais mais populares, como aqueles pertencentes à família x86, a lógica de controle do processador é bastante engenhosa devido à retrocompatibilidade de instruções e à natureza superescalar desses processadores. Mecanismos de predição de desvios e escalonadores dinâmicos de instruções são exemplos de módulos de hardware consideravelmente complexos e, por consequência, possuem área consideravelmente grande em relação ao tamanho de cada núcleo de processamento. Assim, melhorias aportadas à construção da lógica de controle são mais propícias a surtirem efeitos consideráveis sobre consumo de energia e área utilizada do que modificações sobre a lógica das unidades operacionais. No processador MPPA-256 cada núcleo trabalha com um conjunto de instruções VLIW, logo algumas tarefas de otimização de execução – como a alocação de unidades funcionais – são realizadas pelo compilador. Logo, a lógica de controle do processador torna-se mais simples e, consequentemente, as unidades operacionais como somadores, multiplicadores, entre outros possuem uma representatividade maior na área e no consumo energético de cada núcleo. A partir dessa premissa, a empresa percebeu a necessidade de explorar a implementação de diversas arquiteturas de operadores aritméticos na tecnologia empregada, buscando melhorias no desempenho do processador. Haja visto a grande quantidade de arquiteturas existentes na literatura e os diversos requerimentos e restrições impostos para cada operador aritmético no âmbito de sua utiliação, torna-se necessário a criação de uma biblioteca de hardware com circuitos aritméticos descritos em linguagem HDL, testados e sintetizados e de fácil acesso às características destes a fim de melhorar e simplificar o processo de decisão do projeto do processador quanto à parte operativa. 1.2 Trabalho Desenvolvido Dado que existem diversas arquiteturas de somadores e multiplicadores definidas na literatura, é necessário efetuar um estudo sobre o estado da arte a fim de avaliar e comparar cada circuito. Dessa forma, a primeira etapa do trabalho desenvolvido remete a uma revisão teórica sobre os circuitos aritméticos assim como apresenta sucintamente todas as arquiteturas estudadas sobre as quais foram extraídos os dados da síntese. Nos anexos, encontram-se análises mais aprofundadas sobre área e timing para algumas arquiteturas selecionadas. Visando a avaliação completa de cada arquitetura estudada, foi definido um conjunto de métricas, ao qual deu-se o nome de Quality of Results (QoR), comum tanto aos somadores quanto aos multiplicadores. Nesse conjunto são listados diversos dados característicos de cada circuito, no qual frequências de operação, área utilizada e potência dissipada correspondem aos fatores mais importantes. Para implementar e comparar os resultados da síntese de cada arquitetura, algumas ferramentas foram desenvolvidas visando a simplificação e automatização desse processo. Quanto à implementação dos circuitos, foi desenvolvido um framework para flexibilizar a geração de códigos VHDL assim como a geração dos testbenches associados a esses circuitos. Também, diversos scripts foram desenvolvidos para que a síntese e a extração dos dados de cada circuito ocorresse de modo automático. Para catalogação dos dados, foi desenvolvido uma ferramenta de acesso ao banco de dados criado, permitindo ao usuário, de forma simples, visualizar e comparar arquiteturas para certos critérios informados. 1.2.1 Gerador de Código VHDL A descrição de circuitos em linguagem HDL pode ser uma tarefa longa e muito suscetível a erros. Além disso, certas arquiteturas são definidas a partir de modelos recursivos que cujos parâmetros de recursão dependem do tamanho dos dados de entrada. Essas arquiteturas são extremamente difíceis de descrever genericamente em VHDL e normalmente resultam em circuitos ineficientes. Para resolver esse problema, foi desenvolvido um framework em linguagem Python que contém os elementos básicos da lógica combinacional propostos pela linguagem VHDL. Todos os elementos da linguagem VHDL – fios, operadores lógicos, entidades, etc – são representados através de classes nesse framework. A vantagem desse framework reside justamente em resolver as complexidades inerentes a um algoritmo qualquer que descreve um circuito antes que este seja modelado através de uma linguagem HDL. Para descrever um circuito, o usuário cria um modelo em Python do algoritmo desejado usando os elementos disponibilizados pelo framework e as funcionalidades primitivas da linguagem Python. Assim, o resultado final é uma descrição VHDL completamente sintétizavel com todos os elementos do circuito contidos em um único arquivo. Vale ressaltar que esse arquivo não faz uso de recursos adicionais da linguagem VHDL tais como generic, for, etc, pois todas as dependências referentes a tamanho de dados e quantidade de instâncias de um componente dentro de um design são resolvidas pelo framework. Adicionalmente, esse framework suporta a geração automática de testbenches em linguagem SystemVerilog conforme solicitação do usuário. A escolha da linguagem para tais testes foi feita baseada no ambiente utilizado dentro da empresa. O usuário deve informar uma expressão compatível com a linguagem do teste que represente a função computada pelo circuito assim como as entradas e as saídas a serem analisadas. Ao final, são gerados dois arquivos onde um deles é responsável pela interface do módulo de teste e o outro contém as instanciações e testes necessários para a verificação do circuito segundo a expressão fornecida. 1.2.2 Scripts de automatização do fluxo Dado que a quantidade de circuitos a serem analisados é bastante grande, foi necessário automatizar o processo de geração dos arquivos HDL, verificação da corretude dos circuitos, sintetização da netlists e extração das características de cada arquitetura. Para tanto, diversos scripts foram desenvolvidos para que cada processo ocoresse automática e independentemente. Após a síntese de cada circuito com a ferramenta Cadence Encouter RTL Compiler ©, vários arquivos são gerados com características de potência, área, frequência, entre outros. A partir desses arquivos, as características de cada circuito são extraídas automaticamente através de um script e armazenadas em um arquivo CSV para ser uitlizado na análise de dados e atualização do banco de dados. 1.2.3 Ferramentas de análise de dados Com os arquivos CSV criados com as características dos circuitos, duas abordagens são propostas para análise de dados. A primeira abordagem é voltada para compreender o a variação do QoR de cada arquitetura para diferentes constraints. Para tanto, alguns scripts em Matlab foram desenvolvidos com a capacidade de gerar gráficos de comparação a partir de uma interface gráfica projetada. Os gráficos utilizados na seção de resultados deste trabalho foram gerados com esses scripts. Já a segunda abordagem remete à criação de um software responsável pelo gerenciamento de uma base de dados com as características de síntese extraídas para cada circuito. Essa ferramenta é importante pois permite escolher rapidamente qual arquitetura é mais adaptada para certos requisitos (área, tamanho de dados, etc) através de buscas parametrizadas pelo usuário. Apesar de ter sido desenvolvida para os circuitos aritméticos considerados nesse trabalho, o software é facilmente adaptável para suportar outros circuitos. 1.2.4 Análise dos Resultados Após a síntese e extração das características de cada arquitetura estudada, alguns gráficos comparando a área ocupada, frequência máxima de utilização e potência estática dissipada são apresentados. As análises apresentadas referem-se apenas aos piores casos, isto é, aos circuitos com a maior largura de dados. Com esses gráficos é possível verificar experimentalmente as vantagens e as desvantagens de cada arquitetura. Ainda, é apresentada uma conclusão sobre os circuitos mais adaptados ao processador MPPA-256. 1.3 Conclusão Sabe-se que hoje os processadores manycore são essenciais para obter sistemas de alta performance já que oferecem um poder de processamento paralelo elevado além de mitigar as restrições físicas do processo de fabricação de circuitos integrados, como a limitação da frequência. Para o processador de baixo consumo MPPA-256, em particular, foi imprescindível estudar o comportamento das arquiteturas dos operadores aritméticos para encontrar formas de otimização do circuito como um todo considerando três aspectos principais – frequência, área e consumo. A partir dos resultados obtidos do trabalho realizado, percebeu-se que a margem de otmização para somadores é muito pequena já que a abordagem atual apresenta-se mais eficiente em relação às arquiteturas estudadas. Entretanto, o mesmo não é válido para multiplicadores, onde há uma margem considerável para melhorias devido às otimizações arquiteturais apresentadas. Ainda, o sistema construído para armazenamento e consulta às características dos circuitos provou-se eficiente e extensível para outros tipos de circuito. |
id |
UFRGS-2_fd092786e50c2ff899b593052adb7a75 |
---|---|
oai_identifier_str |
oai:www.lume.ufrgs.br:10183/147661 |
network_acronym_str |
UFRGS-2 |
network_name_str |
Repositório Institucional da UFRGS |
repository_id_str |
|
spelling |
Rocha, Leandro Mateus GiacominiKastensmidt, Fernanda Gusmão de LimaMorin-Allory, Katell2016-08-26T02:15:14Z2016http://hdl.handle.net/10183/1476610009997531.1 Introdução Este capítulo apresenta um resumo estendido em português sobre o Trabalho de Final de Estudos, escrito em inglês, realizado na França durante a participação do Programa de Intercâmbio Brafitec com a obtenção do duplo diploma. A motivação do trabalho assim como as etapas de desenvolvimento do mesmo são apresentadas brevemente para que se tenha uma compreensão geral texto. 1.1.1 Contexto do trabalho Este trabalho de conclusão de curso em microeletrônica, decorrente da co-tutela firmada entre as universidades Institut Polytechnique de Grenoble – École Nationale de Physique, Électronique et Matériaux (Phelma) e Universidade Federal do Rio Grande do Sul, foi realizado no período de seis meses na empresa KALRAY. Esta empresa tem atuação na área de microeletrônica voltada para desenvolvimento de microprocessadores manycore de alto desempenho e baixo consumo. O principal produto desenvolvido pela empresa é o processador MPPA-256 que contém 256 núcleos de processamento funcionando a 400 MHz. Baseando-se no massivo poder de processamento paralelo com núcleos VLIW e com uma frequência de operação mais baixa se comparada aos processadores mais comuns disponíveis no mercado, este processador é extremamente eficiente energeticamente uma vez que possui uma relação de taxa teórica de pico de computação por unidade de energia em torno de 25 GFLOPS/W. 1.1.2 Motivação Em processadores atuais mais populares, como aqueles pertencentes à família x86, a lógica de controle do processador é bastante engenhosa devido à retrocompatibilidade de instruções e à natureza superescalar desses processadores. Mecanismos de predição de desvios e escalonadores dinâmicos de instruções são exemplos de módulos de hardware consideravelmente complexos e, por consequência, possuem área consideravelmente grande em relação ao tamanho de cada núcleo de processamento. Assim, melhorias aportadas à construção da lógica de controle são mais propícias a surtirem efeitos consideráveis sobre consumo de energia e área utilizada do que modificações sobre a lógica das unidades operacionais. No processador MPPA-256 cada núcleo trabalha com um conjunto de instruções VLIW, logo algumas tarefas de otimização de execução – como a alocação de unidades funcionais – são realizadas pelo compilador. Logo, a lógica de controle do processador torna-se mais simples e, consequentemente, as unidades operacionais como somadores, multiplicadores, entre outros possuem uma representatividade maior na área e no consumo energético de cada núcleo. A partir dessa premissa, a empresa percebeu a necessidade de explorar a implementação de diversas arquiteturas de operadores aritméticos na tecnologia empregada, buscando melhorias no desempenho do processador. Haja visto a grande quantidade de arquiteturas existentes na literatura e os diversos requerimentos e restrições impostos para cada operador aritmético no âmbito de sua utiliação, torna-se necessário a criação de uma biblioteca de hardware com circuitos aritméticos descritos em linguagem HDL, testados e sintetizados e de fácil acesso às características destes a fim de melhorar e simplificar o processo de decisão do projeto do processador quanto à parte operativa. 1.2 Trabalho Desenvolvido Dado que existem diversas arquiteturas de somadores e multiplicadores definidas na literatura, é necessário efetuar um estudo sobre o estado da arte a fim de avaliar e comparar cada circuito. Dessa forma, a primeira etapa do trabalho desenvolvido remete a uma revisão teórica sobre os circuitos aritméticos assim como apresenta sucintamente todas as arquiteturas estudadas sobre as quais foram extraídos os dados da síntese. Nos anexos, encontram-se análises mais aprofundadas sobre área e timing para algumas arquiteturas selecionadas. Visando a avaliação completa de cada arquitetura estudada, foi definido um conjunto de métricas, ao qual deu-se o nome de Quality of Results (QoR), comum tanto aos somadores quanto aos multiplicadores. Nesse conjunto são listados diversos dados característicos de cada circuito, no qual frequências de operação, área utilizada e potência dissipada correspondem aos fatores mais importantes. Para implementar e comparar os resultados da síntese de cada arquitetura, algumas ferramentas foram desenvolvidas visando a simplificação e automatização desse processo. Quanto à implementação dos circuitos, foi desenvolvido um framework para flexibilizar a geração de códigos VHDL assim como a geração dos testbenches associados a esses circuitos. Também, diversos scripts foram desenvolvidos para que a síntese e a extração dos dados de cada circuito ocorresse de modo automático. Para catalogação dos dados, foi desenvolvido uma ferramenta de acesso ao banco de dados criado, permitindo ao usuário, de forma simples, visualizar e comparar arquiteturas para certos critérios informados. 1.2.1 Gerador de Código VHDL A descrição de circuitos em linguagem HDL pode ser uma tarefa longa e muito suscetível a erros. Além disso, certas arquiteturas são definidas a partir de modelos recursivos que cujos parâmetros de recursão dependem do tamanho dos dados de entrada. Essas arquiteturas são extremamente difíceis de descrever genericamente em VHDL e normalmente resultam em circuitos ineficientes. Para resolver esse problema, foi desenvolvido um framework em linguagem Python que contém os elementos básicos da lógica combinacional propostos pela linguagem VHDL. Todos os elementos da linguagem VHDL – fios, operadores lógicos, entidades, etc – são representados através de classes nesse framework. A vantagem desse framework reside justamente em resolver as complexidades inerentes a um algoritmo qualquer que descreve um circuito antes que este seja modelado através de uma linguagem HDL. Para descrever um circuito, o usuário cria um modelo em Python do algoritmo desejado usando os elementos disponibilizados pelo framework e as funcionalidades primitivas da linguagem Python. Assim, o resultado final é uma descrição VHDL completamente sintétizavel com todos os elementos do circuito contidos em um único arquivo. Vale ressaltar que esse arquivo não faz uso de recursos adicionais da linguagem VHDL tais como generic, for, etc, pois todas as dependências referentes a tamanho de dados e quantidade de instâncias de um componente dentro de um design são resolvidas pelo framework. Adicionalmente, esse framework suporta a geração automática de testbenches em linguagem SystemVerilog conforme solicitação do usuário. A escolha da linguagem para tais testes foi feita baseada no ambiente utilizado dentro da empresa. O usuário deve informar uma expressão compatível com a linguagem do teste que represente a função computada pelo circuito assim como as entradas e as saídas a serem analisadas. Ao final, são gerados dois arquivos onde um deles é responsável pela interface do módulo de teste e o outro contém as instanciações e testes necessários para a verificação do circuito segundo a expressão fornecida. 1.2.2 Scripts de automatização do fluxo Dado que a quantidade de circuitos a serem analisados é bastante grande, foi necessário automatizar o processo de geração dos arquivos HDL, verificação da corretude dos circuitos, sintetização da netlists e extração das características de cada arquitetura. Para tanto, diversos scripts foram desenvolvidos para que cada processo ocoresse automática e independentemente. Após a síntese de cada circuito com a ferramenta Cadence Encouter RTL Compiler ©, vários arquivos são gerados com características de potência, área, frequência, entre outros. A partir desses arquivos, as características de cada circuito são extraídas automaticamente através de um script e armazenadas em um arquivo CSV para ser uitlizado na análise de dados e atualização do banco de dados. 1.2.3 Ferramentas de análise de dados Com os arquivos CSV criados com as características dos circuitos, duas abordagens são propostas para análise de dados. A primeira abordagem é voltada para compreender o a variação do QoR de cada arquitetura para diferentes constraints. Para tanto, alguns scripts em Matlab foram desenvolvidos com a capacidade de gerar gráficos de comparação a partir de uma interface gráfica projetada. Os gráficos utilizados na seção de resultados deste trabalho foram gerados com esses scripts. Já a segunda abordagem remete à criação de um software responsável pelo gerenciamento de uma base de dados com as características de síntese extraídas para cada circuito. Essa ferramenta é importante pois permite escolher rapidamente qual arquitetura é mais adaptada para certos requisitos (área, tamanho de dados, etc) através de buscas parametrizadas pelo usuário. Apesar de ter sido desenvolvida para os circuitos aritméticos considerados nesse trabalho, o software é facilmente adaptável para suportar outros circuitos. 1.2.4 Análise dos Resultados Após a síntese e extração das características de cada arquitetura estudada, alguns gráficos comparando a área ocupada, frequência máxima de utilização e potência estática dissipada são apresentados. As análises apresentadas referem-se apenas aos piores casos, isto é, aos circuitos com a maior largura de dados. Com esses gráficos é possível verificar experimentalmente as vantagens e as desvantagens de cada arquitetura. Ainda, é apresentada uma conclusão sobre os circuitos mais adaptados ao processador MPPA-256. 1.3 Conclusão Sabe-se que hoje os processadores manycore são essenciais para obter sistemas de alta performance já que oferecem um poder de processamento paralelo elevado além de mitigar as restrições físicas do processo de fabricação de circuitos integrados, como a limitação da frequência. Para o processador de baixo consumo MPPA-256, em particular, foi imprescindível estudar o comportamento das arquiteturas dos operadores aritméticos para encontrar formas de otimização do circuito como um todo considerando três aspectos principais – frequência, área e consumo. A partir dos resultados obtidos do trabalho realizado, percebeu-se que a margem de otmização para somadores é muito pequena já que a abordagem atual apresenta-se mais eficiente em relação às arquiteturas estudadas. Entretanto, o mesmo não é válido para multiplicadores, onde há uma margem considerável para melhorias devido às otimizações arquiteturais apresentadas. Ainda, o sistema construído para armazenamento e consulta às características dos circuitos provou-se eficiente e extensível para outros tipos de circuito.Multi-core processors became the most suitable solution to increase the computer performance as the current manufacturing technology is reaching its limits and the unconstrained frequency increasing is no longer possible since it is directly linked to the dissipated power. In this context, there a highly performant and energy-aware many-core processor – the MPPA-256 – developed by Kalray. Consequently, this work describes my internship at Kalray where I explored and analyzed some arithmetic operators’ architectures aiming for this type of processor. These arithmetic components are present in almost all processor subsystems from the arithmetic core to the memory addressing, thus its importance to observe which architectures offer the best solutions based on their speed, area and leakage power. The structure of this work is composed as follows: firstly, it is presented the context on which the many-core processors are inserted as well as a theoretical study about the most common adders and multipliers designs. Then, the adopted methodology is described with the developed tools to support perform all analysis followed by the obtained results comparing all studied architectures. Finally, some considerations are made about these results succeeded by some commentaries about the whole internship.application/pdfengMicroeletrônicaMany-core processorsArithmetic circuitsLow power circuitsEvaluation of arithmetic operators for the MPPA-256 manycore architectureinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisUniversidade Federal do Rio Grande do SulInstituto de InformáticaPorto Alegre, BR-RS2016Engenharia de Computaçãograduaçãoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRGSinstname:Universidade Federal do Rio Grande do Sul (UFRGS)instacron:UFRGSORIGINAL000999753.pdf000999753.pdfTexto completo (inglês)application/pdf4440404http://www.lume.ufrgs.br/bitstream/10183/147661/1/000999753.pdf985d80687dfe43e513862be0abf901beMD51TEXT000999753.pdf.txt000999753.pdf.txtExtracted Texttext/plain111843http://www.lume.ufrgs.br/bitstream/10183/147661/2/000999753.pdf.txtbe21fb3ff4f858cfce5773ed98bae384MD52THUMBNAIL000999753.pdf.jpg000999753.pdf.jpgGenerated Thumbnailimage/jpeg1140http://www.lume.ufrgs.br/bitstream/10183/147661/3/000999753.pdf.jpg66acb4730b7d36d6062b63a126ffbadfMD5310183/1476612021-05-07 05:07:45.268969oai:www.lume.ufrgs.br:10183/147661Repositório de PublicaçõesPUBhttps://lume.ufrgs.br/oai/requestopendoar:2021-05-07T08:07:45Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS)false |
dc.title.pt_BR.fl_str_mv |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
title |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
spellingShingle |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture Rocha, Leandro Mateus Giacomini Microeletrônica Many-core processors Arithmetic circuits Low power circuits |
title_short |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
title_full |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
title_fullStr |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
title_full_unstemmed |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
title_sort |
Evaluation of arithmetic operators for the MPPA-256 manycore architecture |
author |
Rocha, Leandro Mateus Giacomini |
author_facet |
Rocha, Leandro Mateus Giacomini |
author_role |
author |
dc.contributor.author.fl_str_mv |
Rocha, Leandro Mateus Giacomini |
dc.contributor.advisor1.fl_str_mv |
Kastensmidt, Fernanda Gusmão de Lima |
dc.contributor.advisor-co1.fl_str_mv |
Morin-Allory, Katell |
contributor_str_mv |
Kastensmidt, Fernanda Gusmão de Lima Morin-Allory, Katell |
dc.subject.por.fl_str_mv |
Microeletrônica |
topic |
Microeletrônica Many-core processors Arithmetic circuits Low power circuits |
dc.subject.eng.fl_str_mv |
Many-core processors Arithmetic circuits Low power circuits |
description |
1.1 Introdução Este capítulo apresenta um resumo estendido em português sobre o Trabalho de Final de Estudos, escrito em inglês, realizado na França durante a participação do Programa de Intercâmbio Brafitec com a obtenção do duplo diploma. A motivação do trabalho assim como as etapas de desenvolvimento do mesmo são apresentadas brevemente para que se tenha uma compreensão geral texto. 1.1.1 Contexto do trabalho Este trabalho de conclusão de curso em microeletrônica, decorrente da co-tutela firmada entre as universidades Institut Polytechnique de Grenoble – École Nationale de Physique, Électronique et Matériaux (Phelma) e Universidade Federal do Rio Grande do Sul, foi realizado no período de seis meses na empresa KALRAY. Esta empresa tem atuação na área de microeletrônica voltada para desenvolvimento de microprocessadores manycore de alto desempenho e baixo consumo. O principal produto desenvolvido pela empresa é o processador MPPA-256 que contém 256 núcleos de processamento funcionando a 400 MHz. Baseando-se no massivo poder de processamento paralelo com núcleos VLIW e com uma frequência de operação mais baixa se comparada aos processadores mais comuns disponíveis no mercado, este processador é extremamente eficiente energeticamente uma vez que possui uma relação de taxa teórica de pico de computação por unidade de energia em torno de 25 GFLOPS/W. 1.1.2 Motivação Em processadores atuais mais populares, como aqueles pertencentes à família x86, a lógica de controle do processador é bastante engenhosa devido à retrocompatibilidade de instruções e à natureza superescalar desses processadores. Mecanismos de predição de desvios e escalonadores dinâmicos de instruções são exemplos de módulos de hardware consideravelmente complexos e, por consequência, possuem área consideravelmente grande em relação ao tamanho de cada núcleo de processamento. Assim, melhorias aportadas à construção da lógica de controle são mais propícias a surtirem efeitos consideráveis sobre consumo de energia e área utilizada do que modificações sobre a lógica das unidades operacionais. No processador MPPA-256 cada núcleo trabalha com um conjunto de instruções VLIW, logo algumas tarefas de otimização de execução – como a alocação de unidades funcionais – são realizadas pelo compilador. Logo, a lógica de controle do processador torna-se mais simples e, consequentemente, as unidades operacionais como somadores, multiplicadores, entre outros possuem uma representatividade maior na área e no consumo energético de cada núcleo. A partir dessa premissa, a empresa percebeu a necessidade de explorar a implementação de diversas arquiteturas de operadores aritméticos na tecnologia empregada, buscando melhorias no desempenho do processador. Haja visto a grande quantidade de arquiteturas existentes na literatura e os diversos requerimentos e restrições impostos para cada operador aritmético no âmbito de sua utiliação, torna-se necessário a criação de uma biblioteca de hardware com circuitos aritméticos descritos em linguagem HDL, testados e sintetizados e de fácil acesso às características destes a fim de melhorar e simplificar o processo de decisão do projeto do processador quanto à parte operativa. 1.2 Trabalho Desenvolvido Dado que existem diversas arquiteturas de somadores e multiplicadores definidas na literatura, é necessário efetuar um estudo sobre o estado da arte a fim de avaliar e comparar cada circuito. Dessa forma, a primeira etapa do trabalho desenvolvido remete a uma revisão teórica sobre os circuitos aritméticos assim como apresenta sucintamente todas as arquiteturas estudadas sobre as quais foram extraídos os dados da síntese. Nos anexos, encontram-se análises mais aprofundadas sobre área e timing para algumas arquiteturas selecionadas. Visando a avaliação completa de cada arquitetura estudada, foi definido um conjunto de métricas, ao qual deu-se o nome de Quality of Results (QoR), comum tanto aos somadores quanto aos multiplicadores. Nesse conjunto são listados diversos dados característicos de cada circuito, no qual frequências de operação, área utilizada e potência dissipada correspondem aos fatores mais importantes. Para implementar e comparar os resultados da síntese de cada arquitetura, algumas ferramentas foram desenvolvidas visando a simplificação e automatização desse processo. Quanto à implementação dos circuitos, foi desenvolvido um framework para flexibilizar a geração de códigos VHDL assim como a geração dos testbenches associados a esses circuitos. Também, diversos scripts foram desenvolvidos para que a síntese e a extração dos dados de cada circuito ocorresse de modo automático. Para catalogação dos dados, foi desenvolvido uma ferramenta de acesso ao banco de dados criado, permitindo ao usuário, de forma simples, visualizar e comparar arquiteturas para certos critérios informados. 1.2.1 Gerador de Código VHDL A descrição de circuitos em linguagem HDL pode ser uma tarefa longa e muito suscetível a erros. Além disso, certas arquiteturas são definidas a partir de modelos recursivos que cujos parâmetros de recursão dependem do tamanho dos dados de entrada. Essas arquiteturas são extremamente difíceis de descrever genericamente em VHDL e normalmente resultam em circuitos ineficientes. Para resolver esse problema, foi desenvolvido um framework em linguagem Python que contém os elementos básicos da lógica combinacional propostos pela linguagem VHDL. Todos os elementos da linguagem VHDL – fios, operadores lógicos, entidades, etc – são representados através de classes nesse framework. A vantagem desse framework reside justamente em resolver as complexidades inerentes a um algoritmo qualquer que descreve um circuito antes que este seja modelado através de uma linguagem HDL. Para descrever um circuito, o usuário cria um modelo em Python do algoritmo desejado usando os elementos disponibilizados pelo framework e as funcionalidades primitivas da linguagem Python. Assim, o resultado final é uma descrição VHDL completamente sintétizavel com todos os elementos do circuito contidos em um único arquivo. Vale ressaltar que esse arquivo não faz uso de recursos adicionais da linguagem VHDL tais como generic, for, etc, pois todas as dependências referentes a tamanho de dados e quantidade de instâncias de um componente dentro de um design são resolvidas pelo framework. Adicionalmente, esse framework suporta a geração automática de testbenches em linguagem SystemVerilog conforme solicitação do usuário. A escolha da linguagem para tais testes foi feita baseada no ambiente utilizado dentro da empresa. O usuário deve informar uma expressão compatível com a linguagem do teste que represente a função computada pelo circuito assim como as entradas e as saídas a serem analisadas. Ao final, são gerados dois arquivos onde um deles é responsável pela interface do módulo de teste e o outro contém as instanciações e testes necessários para a verificação do circuito segundo a expressão fornecida. 1.2.2 Scripts de automatização do fluxo Dado que a quantidade de circuitos a serem analisados é bastante grande, foi necessário automatizar o processo de geração dos arquivos HDL, verificação da corretude dos circuitos, sintetização da netlists e extração das características de cada arquitetura. Para tanto, diversos scripts foram desenvolvidos para que cada processo ocoresse automática e independentemente. Após a síntese de cada circuito com a ferramenta Cadence Encouter RTL Compiler ©, vários arquivos são gerados com características de potência, área, frequência, entre outros. A partir desses arquivos, as características de cada circuito são extraídas automaticamente através de um script e armazenadas em um arquivo CSV para ser uitlizado na análise de dados e atualização do banco de dados. 1.2.3 Ferramentas de análise de dados Com os arquivos CSV criados com as características dos circuitos, duas abordagens são propostas para análise de dados. A primeira abordagem é voltada para compreender o a variação do QoR de cada arquitetura para diferentes constraints. Para tanto, alguns scripts em Matlab foram desenvolvidos com a capacidade de gerar gráficos de comparação a partir de uma interface gráfica projetada. Os gráficos utilizados na seção de resultados deste trabalho foram gerados com esses scripts. Já a segunda abordagem remete à criação de um software responsável pelo gerenciamento de uma base de dados com as características de síntese extraídas para cada circuito. Essa ferramenta é importante pois permite escolher rapidamente qual arquitetura é mais adaptada para certos requisitos (área, tamanho de dados, etc) através de buscas parametrizadas pelo usuário. Apesar de ter sido desenvolvida para os circuitos aritméticos considerados nesse trabalho, o software é facilmente adaptável para suportar outros circuitos. 1.2.4 Análise dos Resultados Após a síntese e extração das características de cada arquitetura estudada, alguns gráficos comparando a área ocupada, frequência máxima de utilização e potência estática dissipada são apresentados. As análises apresentadas referem-se apenas aos piores casos, isto é, aos circuitos com a maior largura de dados. Com esses gráficos é possível verificar experimentalmente as vantagens e as desvantagens de cada arquitetura. Ainda, é apresentada uma conclusão sobre os circuitos mais adaptados ao processador MPPA-256. 1.3 Conclusão Sabe-se que hoje os processadores manycore são essenciais para obter sistemas de alta performance já que oferecem um poder de processamento paralelo elevado além de mitigar as restrições físicas do processo de fabricação de circuitos integrados, como a limitação da frequência. Para o processador de baixo consumo MPPA-256, em particular, foi imprescindível estudar o comportamento das arquiteturas dos operadores aritméticos para encontrar formas de otimização do circuito como um todo considerando três aspectos principais – frequência, área e consumo. A partir dos resultados obtidos do trabalho realizado, percebeu-se que a margem de otmização para somadores é muito pequena já que a abordagem atual apresenta-se mais eficiente em relação às arquiteturas estudadas. Entretanto, o mesmo não é válido para multiplicadores, onde há uma margem considerável para melhorias devido às otimizações arquiteturais apresentadas. Ainda, o sistema construído para armazenamento e consulta às características dos circuitos provou-se eficiente e extensível para outros tipos de circuito. |
publishDate |
2016 |
dc.date.accessioned.fl_str_mv |
2016-08-26T02:15:14Z |
dc.date.issued.fl_str_mv |
2016 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
format |
bachelorThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10183/147661 |
dc.identifier.nrb.pt_BR.fl_str_mv |
000999753 |
url |
http://hdl.handle.net/10183/147661 |
identifier_str_mv |
000999753 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFRGS instname:Universidade Federal do Rio Grande do Sul (UFRGS) instacron:UFRGS |
instname_str |
Universidade Federal do Rio Grande do Sul (UFRGS) |
instacron_str |
UFRGS |
institution |
UFRGS |
reponame_str |
Repositório Institucional da UFRGS |
collection |
Repositório Institucional da UFRGS |
bitstream.url.fl_str_mv |
http://www.lume.ufrgs.br/bitstream/10183/147661/1/000999753.pdf http://www.lume.ufrgs.br/bitstream/10183/147661/2/000999753.pdf.txt http://www.lume.ufrgs.br/bitstream/10183/147661/3/000999753.pdf.jpg |
bitstream.checksum.fl_str_mv |
985d80687dfe43e513862be0abf901be be21fb3ff4f858cfce5773ed98bae384 66acb4730b7d36d6062b63a126ffbadf |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFRGS - Universidade Federal do Rio Grande do Sul (UFRGS) |
repository.mail.fl_str_mv |
|
_version_ |
1801224515653468160 |