3 research outputs found

    Recursive and iterative algorithms for N-ary search problems

    Get PDF
    The paper analyses and compares alternative iterative and recursive implementations of N-ary search algorithms in hardware (in field programmable gate arrays, in particular). The improvements over the previous results have been achieved with the aid of the proposed novel methods for the fast implementation of hierarchical algorithms. The methods possess the following distinctive features: 1) providing sub-algorithms with multiple entry points; 2) fast stack unwinding for exits from recursive sub-algorithms; 3) hierarchical returns based on two alternative approaches; 4) rational use of embedded memory blocks for the design of a hierarchical finite state machine.Applications in Artificial Intelligence - SearchRed de Universidades con Carreras en Informática (RedUNCI

    Análise e implementação de ordenação de dados em FPGA

    Get PDF
    Mestrado em Engenharia Electrónica e TelecomunicaçõesDesde os primórdios da computação que os algoritmos de ordenação têm sido investigados. Estes podem ser baseados em diferentes tipos de estruturas de dados. A sua implementação num dado sistema permite um acesso mais eficaz aos dados armazenados em memória. O aumento da capacidade de processamento da FPGA (Field Programmable Gate Arrays) torna possível a implementação de algoritmos de ordenação que actuem sobre listas de dados de tamanho razoável. Nesta tese foi desenvolvida uma aplicação de software, assim como um circuito a ser implementado em FPGA, que permitem realizar a transferência de 1024 dados do sistema computacional de uso geral para a FPGA, através de ligação USB. Os dados enviados possuem 16 bits, com gama de valores entre 0 e 65535 e são criados pela aplicação de software desenvolvida. Os dados são ordenados na FPGA e no sistema computacional de uso geral usando a estrutura de dados árvore binária. Posteriormente visualizam-se estes valores e o tempo necessário para os ordenar, tanto no monitor, ligado à placa com FPGA, como na consola do computador de uso geral. No final, é comparado o tempo necessário para ordenar nos dois sistemas. A FPGA utilizada foi a Spartan-3E, da Xilinx®.Sorting algorithms have been investigated since the beginning of computing era. Their implementation in a system optimizes the process of data access. These algorithms may be based on different kinds of data structures. The increase of the processing capacity of FPGA (Field Programmable Gate Arrays) allows for the implementation of sorting algorithms that act upon data lists of considerable size. In this thesis, a software application and a circuit to be implemented in an FPGA were developed, which allow for the transfer of 1024 data values from the general purpose computer system to the FPGA, via USB interface. The values sent possess 16 bits, ranging from 0 to 65535 and are created by the developed software application. The data were sorted using the binary tree data structure both in software and in the FPGA. The sorted results were presented on a VGA monitor screen connected to the FPGA board and in the console output of the developed application. The respective sorting time, calculated both in software and in the FPGA, were compared and analyzed. An FPGA of Spartan-3E family of Xilinx was used as a hardware platform

    Synthesis of FPGA-based accelerators implementing recursive algorithms

    Get PDF
    Doutoramento em Engenharia InformáticaO desenvolvimento de sistemas computacionais é um processo complexo, com múltiplas etapas, que requer uma análise profunda do problema, levando em consideração as limitações e os requisitos aplicáveis. Tal tarefa envolve a exploração de técnicas alternativas e de algoritmos computacionais para optimizar o sistema e satisfazer os requisitos estabelecidos. Neste contexto, uma das mais importantes etapas é a análise e implementação de algoritmos computacionais. Enormes avanços tecnológicos no âmbito das FPGAs (Field-Programmable Gate Arrays) tornaram possível o desenvolvimento de sistemas de engenharia extremamente complexos. Contudo, o número de transístores disponíveis por chip está a crescer mais rapidamente do que a capacidade que temos para desenvolver sistemas que tirem proveito desse crescimento. Esta limitação já bem conhecida, antes de se revelar com FPGAs, já se verificava com ASICs (Application-Specific Integrated Circuits) e tem vindo a aumentar continuamente. O desenvolvimento de sistemas com base em FPGAs de alta capacidade envolve uma grande variedade de ferramentas, incluindo métodos para a implementação eficiente de algoritmos computacionais. Esta tese pretende proporcionar uma contribuição nesta área, tirando partido da reutilização, do aumento do nível de abstracção e de especificações algorítmicas mais automatizadas e claras. Mais especificamente, é apresentado um estudo que foi levado a cabo no sentido de obter critérios relativos à implementação em hardware de algoritmos recursivos versus iterativos. Depois de serem apresentadas algumas das estratégias para implementar recursividade em hardware mais significativas, descreve-se, em pormenor, um conjunto de algoritmos para resolver problemas de pesquisa combinatória (considerados enquanto exemplos de aplicação). Versões recursivas e iterativas destes algoritmos foram implementados e testados em FPGA. Com base nos resultados obtidos, é feita uma cuidada análise comparativa. Novas ferramentas e técnicas de investigação que foram desenvolvidas no âmbito desta tese são também discutidas e demonstradas.Design of computational systems is a complex multistage process which requires a deep analysis of the problem, taking into account relevant limitations and constraints as well as software/hardware co-design. Such task involves exploring competitive techniques and computational algorithms, enabling the system to be optimized while satisfying given requirements. In this context, one of the most important stages is analysis and implementation of computational algorithms. Tremendous progress in the scope of FPGA (Field-Programmable Gate Array) technology has made it possible to design very complicated engineering systems. However, the number of available transistors grows faster than the ability to meaningfully design with them. This situation is a well known design productivity gap, which was inherited by FPGA from ASIC (Application-Specific Integrated Circuit) and which is increasing continuously. Developing engineering systems on the basis of high capacity FPGAs involves a wide variety of design tools, including methods for efficient implementation of computational algorithms. The thesis is intended to provide a contribution in this area by aiming at reuse, high level abstraction, automation, and clearness of algorithmic specifications. More specifically, it presents research studies which have been carried out in order to obtain criteria regarding implementation of recursive vs. iterative algorithms in hardware. After describing some of the most relevant strategies for implementing recursion in hardware, a selection of algorithms for solving combinatorial search problems (considered as application examples) are also described in detail. Iterative and recursive versions of these algorithms have been implemented and tested in FPGA. Taking into consideration the results obtained, a careful comparative analysis is given. New research-oriented tools and techniques for hardware design which have been developed in the scope of this thesis are also discussed and demonstrated
    corecore