RECONFIGURABLE COMPUTING: A DESIGN AND IMPLEMENTATION STUDY OF ELLIPTIC CURVE METHOD OF FACTORING USING SRC CARTE-C AND CELOXICA HANDEL-C

Size: px
Start display at page:

Download "RECONFIGURABLE COMPUTING: A DESIGN AND IMPLEMENTATION STUDY OF ELLIPTIC CURVE METHOD OF FACTORING USING SRC CARTE-C AND CELOXICA HANDEL-C"

Transcription

1 RECONFIGURABLE COMPUTING: A DESIGN AND IMPLEMENTATION STUDY OF ELLIPTIC CURVE METHOD OF FACTORING USING SRC CARTE-C AND CELOXICA HANDEL-C Committee: by Hoang Le A Thesis Submitted to the Graduate Faculty of George Mason University In Partial Fulfillment of The Requirements for the Degree of Master of Science Computer Engineering Dr. Kris Gaj, Thesis Director Dr. Ronald Barnes, Committee member Dr. David Hwang, Committee member Dr. Andre Manitius, Department Chairperson Dr. Lloyd J. Griffiths, Dean, The Volgenau School of Information Technology and Engineering Date: Spring Semester, 2007 George Mason University Fairfax, Virginia

2 Reconfigurable Computing: A Design and Implementation Study of Elliptic Curve Method of Factoring Using SRC Carte-C and Celoxica Handel-C A thesis submitted in partial fulfillment of the requirements for the degree of Master of Science at George Mason University By Hoang Le Bachelor of Science, Computer Engineering George Mason University, 2005 Thesis Director: Dr. Kris Gaj, Associate Professor Department of Electrical and Computer Engineering George Mason University Spring Semester, 2007 Fairfax, VA

3 Copyright 2007 by Hoang Le All Rights Reserved ii

4 iii ACKNOWLEDGEMENTS As always, I owe thanks to a handful of people who devoted their time and expertise to me and to the creation of my Thesis. The following people were instrumental in this process and their inputs were invaluable. Their patience and willingness to help were surpassed only by their astounding knowledge of all the subject matter in question. I thank each and every one of them for their significant contributions. With deep gratitude, I would like to specifically acknowledge those who were an integral part of my writing: Dr. Kris Gaj, my advisor, whose knowledge and diversity of expertise never fails to impress me and is way too humble to know what an incredible educator he is. Almost as impressive are his patience in sharing that knowledge, and his prompt and thorough responses to my countless detailed questions. Dr. Soonhak Kwon, Dr. Patrick Baier, Paul Kohlbrenner, Ramakrishna Bachimanchi and Mohammed Khaleeluddin for their contributions in prototyping and designing the architecture. Mr. and Mrs. McNees, my friends, are quite simply the finest and the best. Thank you for your unfaltering support and input, and for being in the clutch with editorial and conceptual direction in this Thesis. I value our partnership more than words can express. Lastly, Tracy Vu, my soul-mate, who perpetually offered me creative input, enthusiastic support, and a reason to believe. You re my foundation, my strength, and my inspiration. I never take for granted how incredibly lucky I am to have you. I would also like to thank the staff at SRC Computers, who was a valuable resource in providing a state-of-the-art platform for this work to be performed on, and the great amount of time and assistance in debugging and technical support. Finally, my thanks go for the reconfigurable research groups at GMU and GWU.

5 iv TABLE OF CONTENTS ABSTRACT... xi CHAPTER 1 - INTRODUCTION HIGH PERFORMANCE COMPUTING RECONFIGURABLE SUPERCOMPUTING AND BENEFIT IN CRYPTOGRAPHY AND CRYPTANALYSIS MOTIVATION AND GOAL OF THIS THESIS... 4 CHAPTER 2 - RECONFIGURABLE COMPUTING PLATFORMS FIELD PROGRAMMABLE GATE ARRAYS (FPGAS) FPGAs: A High-Performance Complement to Microprocessor FPGA Vendors and Families FPGA Boards RECONFIGURABLE COMPUTERS SRC Architecture Communications Cray XD CHAPTER 3 - RECONFIGURABLE COMPUTING LANGUAGES AND PROGRAMMING ENVIRONMENTS TRADITIONAL DESIGN FLOW HDLs for Programming FPGAs HLLs for Programming Microprocessors Application Programming Interfaces (APIs) between FPGAs and Microprocessors SRC CARTE C Introduction Language Code Development Code Optimization User's Callable Macros CELOXICA HANDEL-C Introduction Language Code Development Efficient FPGA Resource Usage Code Optimization PAGE

6 v Some Restrictions When Using Handel-C and FPGAs Environment CHAPTER 4 - ELLIPTIC CURVE METHOD OF FACTORING RSA PUBLIC KEY CRYPTOSYSTEM RSA SECURITY FACTORIZATION Special Algorithm: Elliptic Curve Method (ECM) ECM: Overview ECM: Algorithm Operations on an Elliptic Curve Top Level: Scalar Multiplication Medium Level: Point Addition and Doubling Low Level: Montgomery Multiplication General Algorithm: Number Field Sieve (NFS) NFS: Overview ECM in NFS CHAPTER 5 - PREVIOUS WORK ON IMPLEMENTING APPLICATIONS IN HIGH LEVEL LANGUAGES FOR RECONFIGURABLE HARDWARE CHAPTER 6 - IMPLEMENTATION OF ECM USING SRC CARTE-C PARTITIONING THE CODE BETWEEN HIGH LEVEL LANGUAGE (HLL) AND HARDWARE DESCRIPTION LANGUAGE (HDL) CODING PARTITION 1: DATA COMMUNICATION MODULE IN CARTE-C Overview Architecture Results CODING PARTITION 2: DATA COMMUNICATION MODULE AND CONTROL UNIT IN CARTE-C Overview Architecture Results CHAPTER 7 - IMPLEMENTATION OF ECM USING CELOXICA HANDEL-C CODING PARTITION 1: CONTROL UNIT IN HANDEL-C Overview Architecture Result CODING PARTITION 2: ENTIRE ECM IN HANDEL-C Overview Architecture Result CHAPTER 8 - COMPARISON OF RESULTS COMPARISON OF RESULTS OF TWO SCHEMES IN SRC... 90

7 vi COMPARISON OF RESULTS OF TWO SCHEMES IN CELOXICA COMPARISON OF RESULT OF ONE COMMON SCHEME IN SRC AND CELOXICA CHAPTER 9 - COMPARISON BETWEEN LANGUAGES AND PROGRAMMING ENVIRONMENTS COMPARISON OF EXISTING HDL CORES AND METHODS OF THEIR INSTANTIATIONS COMPARISON BETWEEN SRC CARTE-C AND CELOXICA HANDEL-C LANGUAGES COMPARISON BETWEEN SRC CARTE AND CELOXICA DK4 DEVELOPMENT ENVIRONMENTS COMPARISON OF FEATURES USED IN THE DEVELOPMENT USING TWO LANGUAGES CHAPTER 10 - DISCUSSION OF RESULTS CHAPTER 11 - CONCLUSIONS BIBLIOGRAPHY CURRICULUM VITAE

8 vii LIST OF TABLES TABLE TABLE 1: CRAY XD1 TECHNICAL SPECIFICATIONS TABLE 2: SRC MACRO'S CHARACTERISTICS CHART TABLE 3: CONVERSION BETWEEN THE ORDINARY DOMAIN AND THE MONTGOMERY DOMAIN TABLE 4: EXECUTION TIME OF PHASE 1 AND PHASE 2 USING SRC-6 RECONFIGURABLE COMPUTER HOLDING 9 ECM UNITS FOR 198-BIT NUMBERS N; B1 = 960 (WHICH IMPLIES NUMBER OF BITS OF K; KN = 1375), B2 = 57000, AND D = 210 IN SRC SCHEME TABLE 5: PLACE & ROUTE SUMMARY IN SRC SCHEME TABLE 6: NUMBER OF LINES OF CODES IN SRC SCHEME TABLE 7: PLACE AND ROUTE SUMMARY FOR ONE ECM UNIT IN SRC SCHEME TABLE 8: NUMBER OF LINES OF CODES IN SRC SCHEME TABLE 9: PLACE & ROUTE SUMMARY FOR ONE UNIT IN HANDEL-C SCHEME TABLE 10: PLACE & ROUTE SUMMARY FOR TEN UNITS IN HANDEL-C SCHEME TABLE 11: FREQUENCY AND EXECUTION IN HANDEL-C SCHEME TABLE 12: NUMBER OF LINES OF CODES IN HANDEL-C SCHEME TABLE 13: PLACE & ROUTE SUMMARY FOR ONE UNIT IN HANDEL-C SCHEME TABLE 14: PLACE & ROUTE SUMMARY FOR ELEVEN UNITS IN HANDEL-C SCHEME TABLE 15: FREQUENCY AND EXECUTION IN HANDEL-C SCHEME TABLE 16: NUMBER OF LINES OF CODES IN HANDEL-C SCHEME TABLE 17: COMPARISON OF RESULTS OF TWO SCHEMES IN SRC TABLE 18: COMPARISON OF RESULTS OF TWO SCHEMES IN CELOXICA HANDEL-C TABLE 19: RESULTS OF HANDEL-C SCHEME 1 AND SRC SCHEME TABLE 20: COMPARISON OF EXISTING HDL CORES AND METHODS OF THEIR INSTANTIATIONS TABLE 21: COMPARISON BETWEEN SRC CARTE-C AND CELOXICA HANDEL-C LANGUAGES TABLE 22: COMPARISON BETWEEN SRC CARTE AND CELOXICA DK4 DEVELOPMENT ENVIRONMENTS TABLE 23: COMPARISON OF FEATURES USED IN TWO LANGUAGESGES PAGE

9 viii LIST OF FIGURES FIGURE FIGURE 1: GENERAL ARCHITECTURE OF A RECONFIGURABLE COMPUTER... 3 FIGURE 2: GENERAL ARCHITECTURE OF FPGA... 7 FIGURE 3: XILINX CLB'S STRUCTURE... 9 FIGURE 4: XILINX CLB SLICE'S STRUCTURE FIGURE 5: SRC HARDWARE ARCHITECTURE FIGURE 6: MAP'S INTERFACE ARCHITECTURE BLOCK DIAGRAM FIGURE 7: SNAP CARD FIGURE 8: ARCHITECTURE OF CRAY XD1 MACHINE FIGURE 9: DESIGN FLOW FOR FPGAS IN HDLS FIGURE 10: SOFTWARE DEVELOPMENT PROCESS FIGURE 11: COMMUNICATION BETWEEN MAIN PROGRAM IN HOST COMPUTER AND FPGA BOARDS USING APIS FIGURE 12: SRC PROGRAMMING MODEL FIGURE 13: LIBRARY DEVELOPMENT IN SRC FIGURE 14: SRC PARALLEL REGION FIGURE 15: SRC DEVELOPMENT PROCESS FIGURE 16: MAP COMPILATION PROCESS FIGURE 17: COMPARISON BETWEEN HANDEL-C AND ANSI-C FIGURE 18: BRANCHING AND RE-JOINING OF THE EXECUTION FLOW FIGURE 19: DESIGN FLOW IN HANDEL-C FIGURE 20: OPERATION OF SECRET-KEY CRYPTOSYSTEM FIGURE 21: OPERATION OF PUBLIC-KEY CRYPTOSYSTEM FIGURE 22: TRAP-DOOR ONE-WAY FUNCTION OF RSA FIGURE 23: HIERARCHY OF ELLIPTIC CURVE OPERATIONS FIGURE 24: GRAPHICAL ILLUSTRATION OF MONTGOMERY LADDER ALGORITHM, FOR THE CASE OF K = FIGURE 25: REQUIRED STEPS IN NFS FIGURE 26: SRC PROGRAM PARTITIONING FIGURE 27: GENERAL ARCHITECTURE OF ECM. NOTATION: MEM-MEMORY; M1; M2-MULTIPLIERS 1 AND 2; A/S- ADDER/SUBTRACTOR FIGURE 28: CODING PARTITION SCHEME 1. NOTATION: MEM-MEMORY; M1; M2-MULTIPLIERS 1 AND 2; A/S- ADDER/SUBTRACTOR FIGURE 29: CODING PARTITION SCHEME 2. NOTATION: MEM-MEMORY; M1; M2-MULTIPLIERS 1 AND 2; A/S- ADDER/SUBTRACTOR FIGURE 30: CODING PARTITION SCHEME 3. NOTATION: MEM-MEMORY; M1; M2-MULTIPLIERS 1 AND 2; A/S- ADDER/SUBTRACTOR PAGE

10 ix FIGURE 31: FOUR SCHEMES TO BE IMPLEMENTED IN THIS THESIS FIGURE 32: SRC SCHEME 1 - DATA COMMUNICATION MODULE IN MAP-C. NOTATION: DCM - DATA COMMUNICATION MODULE FIGURE 33: TOP LEVEL OF ECM UNIT IN SRC SCHEME FIGURE 34: BLOCK DIAGRAM OF THE TOP-LEVEL UNIT IN SRC SCHEME 1. NOTATION: MEM-MEMORY; M1; M2-MULTIPLIERS 1 AND 2; A/S-ADDER/SUBTRACTOR FIGURE 35: OVERALL RESULTS OF EXECUTION TIME IN SRC SCHEME FIGURE 36: SRC SCHEME 2 - CONTROL UNIT IN MAP-C. NOTATION: DCM - DATA COMMUNICATION MODULE FIGURE 37: TOP LEVEL OF ECM MODULE IN SRC SCHEME FIGURE 38: BLOCK DIAGRAM OF THE TOP-LEVEL UNIT IN SRC SCHEME 2. NOTATION: M1; M2-MULTIPLIERS 1 AND 2; A/S- ADDER/SUBTRACTOR FIGURE 39: HANDEL-C SCHEME 2 - CONTROL UNIT IN HANDEL-C. NOTATION: DCM - DATA COMMUNICATION MODULE FIGURE 40: HANDEL-C SCHEME 3 - ENTIRE ECM IN HANDEL-C. NOTATION: DCM - DATA COMMUNICATION MODULE FIGURE 41: DIFFERENT COMPARISONS OF ECM IMPLEMENTATION IN SRC CARTE AND CELOXICA HANDEL-C FIGURE 42: SRC CARTE COMPILER AREA PENALTY. NOTATION: CU CONTROL UNIT; U ECM UNIT FIGURE 43: GRAPHICAL COMPARISON OF TWO SRC SCHEMES FIGURE 44: CELOXICA HANDEL-C COMPILER AREA PENALTY NOTATION: CU - CONTROL UNIT; U: ECM UNIT FIGURE 45: GRAPHICAL COMPARISON OF TWO HANDEL-C SCHEMES FIGURE 46: COMPARISON OF AREA PENALTY IN SRC AND CELOXICA. NOTATION: CU - CONTROL UNIT; U: ECM UNIT FIGURE 47: GRAPHICAL COMPARISON OF HANDEL-C SCHEME 2 AND SRC SCHEME FIGURE 48: COMPARISONS OF ALL SCHEMES IN CARTE C AND HANDEL-C

11 x LIST OF ALGORITHMS ALGORITHM ALGORITHM 1: ECM ALGORITHM ALGORITHM 2: MONTGOMERY LADDER ALGORITHM ALGORITHM 3: ADDITION AND DOUBLING USING THE MONTGOMERY S FORM OF ELLIPTIC CURVE ALGORITHM 4: RADIX-2 MONTGOMERY MULTIPLICATION PAGE

12 ABSTRACT RECONFIGURABLE COMPUTING: A DESIGN AND IMPLEMENTATION STUDY OF ELLIPTIC CURVE METHOD OF FACTORING USING SRC CARTE-C AND CELOXICA HANDEL-C Hoang Le, MS George Mason University, 2007 Thesis Director: Dr. Kris Gaj High Level Languages (HLLs), especially C-based, for hardware/software system design has entered industrial flows. HLLs raise the level of abstraction to allow the designers to describe the desired functions in the quickest possible way, rather than focusing on the underlying details. HLL also facilitates hardware/software co-design, and shortens development time, which encourages complex experiments. Code partitioning is the task of indentifying some portion of the code to be implemented in HLLs, and leave the rest in Hardware Description Languages (HDLs). Application developers are willing to give up some performance and area utilization in exchange of productivity. With that said, in-depth comparison is needed, in which code partitioning should be analyzed to determine the optimal combination of HDLs and HLLs codes to resolve the development time vs. performance trade-off.

13 This thesis explores different coding partitions of Elliptic Curve Method (ECM) of factoring using SRC Carte-C and Handel-C. Two code partitioning approaches have been implemented and examined using the appropriate development environments, SRC Carte and Celoxica DK4 Development Kit. Similarities, differences and tradeoffs among the investigated languages and partitioning styles are also presented.

14 Chapter 1 - Introduction High Performance Computing Due to high computational demands, many research projects are plainly impossible to pursue without a High Performance Computing (HPC) platform, or they would take an unreasonable amount of time to complete. Most commonly used today HPC platforms include parallel supercomputers and computer clusters, that is, computing systems comprised of multiple general-purpose microprocessors linked together in a single system with high speed interconnects. This computing environment allows for development of concurrent high-performance solutions using traditional and concurrent programming languages and common application-specific APIs. However, the architecture of general purpose microprocessors, as it name suggests, is designed not only for one specific application, but for general computing. In addition, the instruction sets of microprocessors have fixed and limited lengths that may not match the sizes required by an application. Therefore, applications with large operand sizes often require multiple instruction executions, which result in a longer execution time. 1

15 2 The lack of speed optimization, along with the limitation in microprocessor architecture, has led to the need for an optimized, easy-to-manage and uniform platform. An HPC machine is also a convenient tool for serving the computational needs of many small projects, where installing the software and other similar tasks are much easier to do than they would be on a set of separate computers Reconfigurable Supercomputing and Benefit in Cryptography and Cryptanalysis The term reconfigurable computing refers to the concept of a computer consisting of one or more standard processors and an array of reconfigurable hardware. The general architecture of a Reconfigurable Computer is conceptualized in Figure 1. The main processor controls the behavior of the reconfigurable hardware. The reconfigurable hardware would then be tailored to perform a specific task, such as image processing or cryptography, as quickly as a dedicated piece of hardware. Once the task was done, the hardware could be reconfigured to do some other task. This architecture resulted in a hybrid computer structure combining the flexibility of software with the speed of hardware. Currently there are a number of vendors with commercially available reconfigurable computers aimed at the high performance computing market; including Cray, SGI and SRC Computers, Inc. A modern reconfigurable computer consists of traditional microprocessors coupled with user-programmable FPGAs. The systems can be used as

16 3 traditional cluster computers without using the FPGAs. As mentioned before, the real benefit of reconfigurable computer over traditional computer comes from the parallelism supported by FPGAs. By allowing the computationally intensive parts of the problem to run on FPGA we can achieve a very high throughput. In addition, a reconfigurable computer can be programmed using high-level programming languages, such as C, by mathematicians and scientists themselves. It can also shorten development time and encourage experimentation and complex optimizations. Microprocessor system Reconfigurable system µp µp FPGA FPGA µp Memory µp Memory FPGA Memory FPGA Memory I/O Interface Interface I/O Figure 1: General Architecture of a Reconfigurable Computer In cryptography, applications are commonly used to implement security services for two parties communicating between each other. Modern security protocols use modular arithmetic in encryption and decryption of messages. Such operations are known to be

17 4 resource and computational intensive on general-purpose microprocessors as they are not optimized for fast execution, especially in the case of public-key algorithms. FPGA implementations have the potential of running substantially faster than software implementations due to possible deep pipelining and parallelism Motivation and Goal of this Thesis There are a number of works that have been done to compare the performance and efficiency of designs in different devices and platforms. However, the majority of them have a common characteristic, and that is the cores have been implemented using Hardware Description Languages (HDLs). However, reconfigurable computers are becoming more and more popular along with hardware-targeted High Level Languages (HLLs). That raises the need for a deeper comparison, in which code partitioning should be analyzed to determine the optimal combination of HDLs and HLLs. This thesis explores different coding partitions of Elliptic Curve Method (ECM) of Factoring using SRC Carte-C and Handel-C. In this thesis, two code partitions will be implemented and examined using each development environment, SRC Carte and Celoxica DK4 Development Kit. Design choices and tradeoffs between them are also compared. This thesis is organized as follows: Chapter 2 introduces Reconfigurable Computing Platforms. Chapter 3 describes Reconfigurable Computing Languages and Programming Environments. Chapter 4 discusses the Elliptic Curve Method of Factoring. Chapter 5 describes some previous work on implementing applications in High Level

18 5 Languages for reconfigurable hardware. Chapter 6 and 7 portray implementation of different coding partitions of ECM using SRC Carte-C and Celoxica Handel-C. The comparisons of results, languages, and environments are given in Chapter 8 and 9. Finally, a conclusion is included in Chapter 10.

19 Chapter 2 - Reconfigurable Computing Platforms Field Programmable Gate Arrays (FPGAs) A field programmable gate array (FPGA) is a semiconductor device containing programmable logic components and programmable interconnects. The programmable logic components can be programmed by an end user to describe the functionality of basic logic gates such as,,, or more complex functions such as decoders or simple math functions. In its simplest form, a FPGA consists of an array of uncommitted elements that can be programmed or interconnected according to a user s specification. The ability to reprogram these devices over and over again and the flexibility of interconnection resources make FPGAs an ideal device for implementing and testing ASIC prototypes. The general architecture of a FPGA is described in Figure 2. Figure 3 shows a Xilinx CLB's Structure and Figure 4 shows structure of a Xilinx CLB Slice's. The most important components in an FPGA are configurable logic blocks (CLBs), input/output blocks (IOBs) and programmable interconnects. 6

20 7 The CLBs contain a variety of different logic functions, such as look-up tables (LUTs), registers, multiplexers (MUX), and the like. CLBs are incorporated into FPGAs range in complexity and size. A common aspect among CLBs is the use of look-up tables (LUT) for implementing logic functions. Additionally, CLBs often consist of multiple LUTs along with programmability allowing LUTs to be connected together within the CLB. These CLBs can be as simple as 2-input NAND gates, or can have a complex structure such as multiplexers or look-up tables. Most logic blocks also contain some type of flip- flop, to aid in the implementation of sequential circuits. Configurable Logic Blocks Block RAMs Block RAMs I/O Blocks Block RAMs Figure 2: General Architecture of FPGA

21 8 The IOBs contain circuitry that facilitates the transfer of signals to and from input/output (IO) pads of the FPGA. The IOBs are configured to the inter-connect network which includes vertical and horizontal inter-connect channels comprising adjacent inter-connect lines. An IOB allows signals to be driven offchip or optionally brought onto the FPGA onto interconnect segments. The IOB can typically perform other functions, such as tri-stating outputs and registering incoming or out-going signals. The I/O blocks provide the interface between the external pins of the IC package and the internal signals lines, including the programmable interconnects. The programmable interconnect generally connects a single output of a CLB to an input of another CLB, CLBs to the wire segments, or one wire segment to another. A interconnect is comprised of metal wires and transistors that act as pass gates and signal buffers that preserve the signal integrity. The wire segments, along with programmable switches are together connected as routing architecture. Similar to the logic blocks, these switches can be designed in many ways, varying in number of connections between blocks. These designs directly affect the complexity of routing process. The programmable switches can be constructed by: pan-transistors controlled by static RAM cells, antifuses, EPROM transistors and EEPROM transistors. The interconnection can be a symmetrical array, row based, hierarchical, or sea of gates.

22 FPGAs: A High-Performance Complement to Microprocessor Programmable Logic Devices offer a cost effective alternative to custom processors due to their generic nature with the added benefits of short time-to-market, no NRE costs, off-the-shelf availability, ability to control inventory in peak and trough times, and ability to reduce total cost of ownership over the lifetime of an end product. Figure 3: Xilinx CLB's Structure Microprocessor obsolescence is a major concern for many companies. Programmable logic can provide a viable solution to this problem. By using soft core microprocessors

23 10 embedded within a programmable logic device, not only one can own the processor core for use in any future devices and platforms, but the design can be both flexible and scalable to suit different platforms [1]. Figure 4: Xilinx CLB Slice's Structure The advantage of FPGA over a processor is due to its find-grain parallelism, the advantage over an application-specific integrated circuit (ASIC) is FPGAs

24 11 reconfigurability. This later characteristic allows the FPGA device to be configured to carry out a specific function, and to be reconfigured to carry out a different function at a later time. FPGAs can be reconfigured on-the-fly during in-field use, as each algorithm is implemented as a separate configuration file. Algorithms can run at very high speeds because each of them is separately optimized without constraints imposed by any other algorithm. The clock speed can also be controlled according to the performance of each algorithm, independent of any other algorithm. Similarly, the entire on-chip logical resources of the FPGA can be devoted to maximizing the packing density of a particular algorithm's processing cell independent of other algorithms. FPGAs do not force a rigid predefined limit on the number of cells per chip. Switching FPGA wiring between algorithms is brief, and is transparent to the user. Each algorithm's processing element is as small as possible, maximizing the opportunity for parallelism FPGA Vendors and Families There are a number of FPGA vendors in the market, such as Xilinx, Altera, Actel, etc. Their products are classified into two categories: SRAM-based FPGAs o Xilinx, Inc o Altera Corp. o Atmel o Lattice Semiconductor

25 12 Flash & antifuses FPGAs o Actel Corp. o Quick Logic Corp. Each company produces different lines of devices, from low-cost to high performance. Xilinx and Altera are the most popular FPGA vendors. They capture about 90% market share. Xilinx FPGAs include Old families o XC3000, XC4000, XC5200 (old 0.5µm, 0.35µm and 0.25µm technology. Not recommended for modern designs) Low-cost families o Spartan/XL derived from XC4000 o Spartan-II derived from Virtex o Spartan-IIE derived from Virtex-E o Spartan-3 High-performance families o Virtex (0.22µm) o Virtex-E, Virtex-EM (0.18µm) o Virtex-II, Virtex-II PRO (0.13µm) o Virtex-4 (0.09µm)

26 13 Altera FPGAs include Low-Cost FPGAs o Cyclone III (0.065µm) o Cyclone II (0.09µm) o Cyclone (0.13µm) High-End FPGAs o Stratix III (0.065µm) o Stratix II GX (0.09µm) o Stratix II (0.09µm) FPGA Boards There are a number of FPGA boards produced by different vendors in the market such as Xilinx (Spartan 3E starter kit, HW-AFX-FG , HW-V2P-ML323, etc), Xess (XSA-50, XSA-3S1000, XSB-300E, etc), Celoxica (RC10, RC300, RC2000, etc), and so on. The main usages of FPGA board are for prototyping and education. They ease the manufacture of products, in a way that allows developers to concentrate at the system level, knowing that the intricacies of the system parts have been fully engineered to a competent level. FPGA boards can have a good amount of add-ons, which can help speed up the development process. Those add-ons include, but are not limited to, microcontroller, memory, oscillator, a parallel port, PS/2 port for a mouse or keyboard, A/D converter, stereo input/output, and a VGA monitor port.

27 / / / / / / / Reconfigurable Computers SRC Architecture The SRC-6E system architecture front/end consists of two dual Intel processor motherboards. Each motherboard contains two Intel P4 2.8 GHz Xeon processors and one gigabyte of double-data rate (DDR200) DRAM memory. Each system hosts a multiprocessor version of the Linux operating system, and provides two distinct Linuxbased microprocessor-fpga reconfigurable computers [2]. P4 (2.8GHz ) MB/s P4 (2.8GHz ) MB/s Control FPGA XC2V6000 ½ MAP Board 1064 MB/s 1064 MB/s L2 PCI-X up Board 4256 MB/s MIOC L2 Computer Memory (8 GB) DDR Interface SNAP 4256 MB/ s 2128 MB/s FPGA 1 XC2V MB/s / (6x64 bits) On-Board Memory (24 MB) 4800 MB/s (6x 64 bits) / 2400 MB/s (192 bits) (108 bits) / 4800 MB/s (6x 64 bits) / (108 bits) FPGA 2 XC2V6000 Chain Ports 2400 MB/s Figure 5: SRC Hardware Architecture

28 15 Each MAP coprocessor consists of two Xilinx Virtex II 6000 FPGA chips available for user logic, and a control processor which is also a Xilinx Virtex II 6000 FPGA, all at a speed grade four, rating and running at a clock rate of 100 MHz. The control processor implements fixed control logic, and handles data transfers between Intel system memory and the onboard memory of the MAP processor. Figure 6: MAP's Interface Architecture Block Diagram

29 Communications The MAP control processor communicates with the Intel processors through a SNAP interconnect. The SNAP interconnect is a high speed, low latency interface which functions as a memory interface, and plugs into a DRAM slot on the motherboard. SNAP s effective data transfer into the MAP control FPGA is 1.6 GB/s. This high speed data transfer is due to a DMA s read from common memory before write to the SNAP interface. Since there is one control bit for every byte of data transferred, the maximum payload bandwidth is 1,422 MB/s. Payload bandwidths are further reduced to 1,415 MB/s for SNAP writes and 1,280 MB/s for SNAP reads due to SRC microprocessor cache flushing requirements. These SNAP transfer rates provide a significant throughput advantage for SRC s SNAP versus component interfacing using the PCI-X bus. SNAP Out Cable Connector SNAP In Cable Connector Packetizer Write FIFO Control Chip De-Packetizer Read FIFO DIM Slot Figure 7: SNAP Card

30 17 The block diagram of a SNAP card is shown in Figure Cray XD1 The Cray XD1 system is based on the Direct Connected Processor architecture (Figure 8). It combines many processors into a single system to deliver a high level of application performance. This implementation links processors to each other using a high performance interconnect fabric, eliminating shared memory contention and PCI bus bottlenecks. The Cray XD1 supercomputer is designed to deliver exceptional HPC application performance. It is very reliable and scalable to hundreds of compute notes due to its high bandwidth and low latency. Figure 8: Architecture of Cray XD1 Machine

31 18 Cray XD1 technical specifications are shown in Table 1. For more details, please contact Cray, The SuperComputer Company. Table 1: Cray XD1 technical specifications CPU bit AMD Opteron 200 series single or dual core processors per chassis Cache 64K L1 instruction cache, 64K L1 data cache, 1 MB L2 cache per core FLOPS 106 GFLOPS theoretical peak performance (@ 2.2 GHz dual core) SMP 2-way (single core) or 4-way (dual core) nodes Main Memory GB PC3200 (DDR 400) Registered ECC SDRAM per chassis or 96 GB PC2700 (DDR333) Registered ECC SDRAM per chassis (1-8 GB per socket) Memory Bandwidth Interconnect Application Acceleration (FPGA) External I/O Options 12.8 GB/s per node 2 or 4 Cray RapidArray links per node (4 or 8 GB/s per node) Fully nonblocking Cray RapidArray switch fabric (48 or 96 GB/s) 12 or 24 external Cray RapidArray interchassis links - 24 or 48 GB/s aggregate 1.7 µs latency between nodes Direct Connect or Fat Tree Topology 6 Xilinx Virtex-4 FPGAs, XC4VLX160-10, 16 MB QDR RAM, 3.2 GB/s interconnect 4 PCI-X bus slots Single, Dual, and Quad Port Gigabit Ethernet PCI-X cards Single Port 10 Gigabit Ethernet PCI-X card Single and Dual Port Fibre Channel HBAs Single Port Infiniband HCA Disk Up to six 3.5 inch Serial ATA drives (74 GB 10K RPM or 250 GB 7200 RPM) System Administration Graphical and command line system administration toolsets for partition management, fault management, configuration, security, software updating, telemetry, and provisioning across all chassis in a system

32 19 Partitioning of system into multiple logical computers Administration of entire partition as a single entity (single system command and control) Transaction processing used to ensure configuration consistency Workload management - Grid Engine, PBS Pro Automatic interconnect topology verification and autoconfiguration of L2 and IP networking Automatic response to component failures: isolation of hard failures, re-initialization on soft failures, switching around redundant components Automatic restart of jobs following system failure Reliability Management processor, network, over 200 measurement points on each Cray XD1 chassis Independent 100 Mb/s management fabric within and between Cray XD1 chassis Thermal stability maintained through temperature monitoring and regulation of fan speed Proactive detection of impending fan failure and automatic isolation of affected components Hot swappable fans and disk blades Operating System Cray HPC-enhanced Linux, Kernel version File Systems NFS v2/3, ReiserFS, Lustre Global Parallel File System External Storage Fibre Channel disk controllers and drive enclosures Parallel MPI 1.2 MPI-IO, Sockets Direct Protocol (SDP) for TCP/IP acceleration Processing Shared Memory Shmem, OpenMP, Global Arrays Access Compilers Power Dimensions Fortran 77, 90, 95, HPF; C/C++; Java 2200 W typical. 3 phase: Circuit requirement: 20A, 208 V per chassis Single Phase: Circuit requirement: 30A, 200 V to 240 V per chassis 3 VU (5.25") x 23" W x 36" D per chassis (13.3 cm high x 58.4 cm wide x 91.4 cm deep), 12 chassis per cabinet

33 Chapter 3 - Reconfigurable Computing Languages and Programming Environments Traditional Design Flow HDLs for Programming FPGAs FPGAs have traditionally been programmed by hardware engineers using a Hardware Design Language (HDL). The two principal languages being used are Verilog and VHDL. They were originally developed as modeling languages and tools for direct implementation from the Register Transfer Level (RTL). HDL was a big improvement over schematic circuit design. The design process for FPGAs in HDLs is conceptualized in Figure 9. The input of the process is the specification of the design. Developers then describe that specification in HDLs. A functional simulation will be performed at this point to ensure that the design is functioning properly. Upon the completion of functional simulation, the HDLs source codes are synthesized using a synthesis tool such as Synplify Pro. A post-synthesis simulation is conducted to make sure that there is no error during the translating process. A netlist file, which is generated by the synthesis tool, will be used by the 20

34 21 implementation tools (such as Xilinx) to perform mapping, placing and routing. A bitstream, which is the output of the implementation process, will be used to configure the targeted FPGA device. Specification HDL description HDL source code Functional Simulation Synthesis Netlists Bitstream Implementation (Mapping, Placing & Routing Post-synthesis Simulation Timing Simulation Configuration On-chip Testing Figure 9: Design Flow for FPGAs in HDLs

35 HLLs for Programming Microprocessors The software development process consists of the following step: Software elements analysis: to extract the requirements. This is the most important task in the process. Specification: to describe the software to be written. Specification is the most important internal interface and should be consistent. Architecture: an abstract representation of the system to make sure it will meet all the requirements. Implementation: translate the design into HLL codes. Testing: to ensure that the final product is bug-free, and meets all the customer s requirements. The entire software development process is described in Figure Application Programming Interfaces (APIs) between FPGAs and Microprocessors An API (application programming interface) is a layer that allows developers to work at a higher level of design abstraction. These API functions act as the interface between the programming software and the actual hardware. It hides the underlying detail, and draws parallels with the development support and hardware independence provided by modern microprocessors operating system environments. API allows consistent

36 23 interfacing between hardware applications and software applications. It simplifies the development process and improves application portability. Software elements analysis Extract the requirements Customer Precisely describe the software Specification Abstract representation Architecture Coding Implementation Test all parts of the software Testing Figure 10: Software Development Process Host Computer Main Program APIs FPGA Boards Figure 11: Communication between Main program in host computer and FPGA boards using APIs

37 24 Figure 11 shows the communication between a main program in the host computer and the FPGA board. As described in the figure, the APIs take care of the communication task, providing input data to FPGA board from the host computer, and transferring output data from FPGA board back to the host computer. There is no common standard for APIs available, thus FPGA vendors develop their own API standard. This problem leads to a targeted hardware dependent code and a poor portability between vendors SRC Carte C Introduction Carte-C is a part of SRC Carte programming environment. It is a subset of ANSI-C, thus very easy to learn and use. Carte-C is developed for software developers, mathematicians and scientists, who want to employ the power of hardware with the flexibility of software design. It also facilitates hardware/software co-design, and shortens development time, which encourages and complex optimizations. The relationship between microprocessor sources, MAP processor sources, MAP/user macros, and their execution structure within a MAP FPGA is described in Figure 12. On the MAP, FPGA designs can be implemented in VHDL, in C or FORTRAN, or any combination of both. A simple API is available in the high-level language (HLL) to handle data transfer functions between the Intel and MAP processors and the control of data input and output to included user HDL designs.

38 25 SRC also supports the use of library macros to speed up the development process. A macro is an HDL source that is targeted for the MAP processor. Either VHDL or Verilog is allowed to use to write macro. A macro s primary characteristics are defined as functional, stateful, or external. Additional characteristics define latency of the design and whether the design is pipelined. However, library can be developed in either HDL or HLL. Developers can make use of pre-defined library to speed up the development time, and the efficiency of the code since they have been tested and optimized. Microprocessor function_1 FPGA Libraries of macros main.c macro_1(a, b, c) macro_2(b, d) macro_1 macro_2 macro_3 macro_4 function_1() macro_2(c, e) VHDL function_2() FPGA function_2 I/O macro_3(s, t) a macro_1(n, b) b macro_1 c ANSI-C macro_4(t, k) Carte-C (Subset of ANSI-C) macro_2 d I/O macro_2 e Figure 12: SRC Programming Model

39 26 If a C or FORTRAN source is used alone or in combination with HDL source to implement the design within the MAP processor, the compiler attempts to extract the maximum parallelism within an active loop construct, and generate pipelined hardware logic for instantiation in the MAP FPGAs. LLL (ASM) HLL (C, Fortran) HLL (C, Fortran) µp system FPGA system HDL (VHDL, Verilog Library Developer HLL (C, Fortran) HLL (C, Fortran) Application Developer Figure 13: Library Development in SRC Language Code Development In order to fully take advantage of the MAP hardware, it is essential for the user to make some modifications to the application. As the compiler technology matures and more optimizations can be automatically performed that target the unique characteristics of MAP hardware, it will become less significant for the users to understand the behavior

40 27 of the hardware and modify their code accordingly. These modifications include partitioning the code for MAP execution into new files, restructuring the partitioned code, inserting MAP resource management library calls, and inserting calls to the function compiled for MAP execution in the code that executes on the Intel processor [3]. Partitioning the code: Good code partitioning approach improves overall performance. Another potential improvement could be in the process of manipulating single bits from within a long bit-stream of data. Inlining functionality: Inlining allows the user to structure their MAP code into a hierarchy of function calls. Another benefit of inlining is that after the inlining phase has completed, the entire code body is available to the compiler for optimization, allowing optimization across function calls and eliminating function call overhead. Modifications to the MAP functions: All data must be passed as parameters to the function, including an argument that indicates the of the MAP that this function is to be executed on. The parameter is the last parameter in the formal parameter list. Modifications to the calling functions: These modifications include deciding where the data will reside in memory, aligning data arrays passed as actual

41 28 parameters to the MAP function, allocating and releasing MAP resources, providing a prototype of the function, and calling the MAP function. Using two user logic chips: If a MAP routine cannot fit into one user chip, the second chip can be used to effectively double the amount of available logic and BRAM space. In this mode the two chips are programmed with two separate routines, that will execute concurrently and that can communicate and synchronize with each other. Note that only the primary one can communicate with the main program in the microprocessor side, the secondary one will need to communicate via the primary one. Parallel code blocks: The compiler can identify and exploit much parallelism within each code block, especially within a pipelined loop. However, performance may benefit further when different sections of the original code execute in parallel independently. A parallel region contains multiple parallel sections as illustrated in Figure 14. When normal execution reaches a parallel region, a FORK code block is initiated and execution simultaneously starts at the beginning of all of the parallel sections. Thus there is an active code block in each of the parallel sections until that parallel section completes (reaches the special JOIN code block). Only when all parallel sections are complete does execution continue from the JOIN code block.

42 29 FORK Parallel Section #1 Parallel Section #2 Parallel Section #N JOIN Figure 14: SRC Parallel Region Code Optimization Since the MAP's user logic is clocked at 100, achieving good performance hinges on parallel execution of functional units. In the current compilation environment, parallelism comes from three sources. First, code blocks can be executed in parallel. Second, operations within code blocks that have no data dependencies can execute concurrently. Third, perform pipeline parallelism from inner loops. Loop performance: There are four potential sources of loop slowdown: loopcarried scalar dependencies, loop carried memory dependencies, multiple

43 30 accesses to a memory unit (OBM or BRAM), and periodic input macro calls. Use SRC macros or temporary variables to avoid the problems. Replacement of If-Then-Else Statement: If-then-else statements may result in in-efficient code generation. In some cases these statements can be eliminated by using SRC macros and. In pipelined inner loops the compiler automatically transforms the code to a form that uses selector macros. Thus, the programmer only needs to manually insert selector macros in code outside of pipelined inner loops such as: straight-line code, outer loops, and loops that cannot be pipelined User's Callable Macros The MAP compiler translates the source code's various basic operations into macro instantiations. (A macro is a piece of hardware logic designed to implement a certain function. It may originate from Verilog, VHDL, schematic capture, etc., but is typically represented in the form of an EDIF *.edn file.). Since users often wish to extend the built-in set of operators, the compiler allows users to integrate their own macros into the compilation process. A macro is invoked from within the C void function by means of a void function call. This call's arguments must be specified so that all incoming values precede all outgoing values. Macros can be categorized by various criteria, and the compiler treats them in different ways based on their characteristics. Five types of user macros can be used by the MAP

44 31 compiler: Pure Functional, Pure Functional Periodic, Stateful, Stateful Periodic, and external. The chart in Table 2 below shows their characteristics. Table 2: SRC Macro's Characteristics Chart Stateful External Latency Fully pipelined Periodic Pure Functional No No Fixed Yes No Pure Functional Periodic No No Fixed No Yes Stateful Yes No Fixed Yes No Stateful Periodic Yes No Fixed No Yes External Yes or No Yes Variable N/A N/A Application sources.c or.f files.mc or.mf files µp Compiler MAP Compiler HDL sources.v files Macro sources.vhd or.v files Logic synthesis Object files.o files.o files Netlists.ngo files Place & Route Linker.bin files Application executable Configuration bitsreams Figure 15: SRC Development Process

45 32 The compilation process consists of three parts: compilation of user logic HDL files to be executed on the MAP processor, compilation of the C or FORTRAN code to be executed on the MAP processor, and the compilation of the C or FORTRAN code to be executed on the Intel processor. The binary files produced by each compilation process are combined into a single executable file. The MAP-C compiler translates functions that have been modified for MAP execution into re-locatable object files. The translation process has several steps, each performed by a distinct component of the MAP-C compiler [3]. The flow of the MAP compilation process is conceptualized in Figure 16. RC Compilation System Optimization HLL Source FORTRAN & C DFG Generation Logic Partitioning Verilog Generation Synthesis Place & Route Application Executable MAP Macros Customer Macros Runtime Macros Figure 16: MAP Compilation Process

46 33 is the command that controls the different components of the MAP compilation process for C codes. The input is a file consisting of C functions that have been modified to execute on a MAP. The resulting output files depend on the options specified in the command line. These options control the execution of the compiler components, which produce the object files required to support the three execution modes: hardware, debug, and simulation Celoxica Handel-C Introduction Handel-C is a programming language designed to facilitate the compilation of programs into synchronous hardware. It is not a hardware description language though; rather, it is a programming language aimed at compiling high level algorithms directly into gate level hardware [4]. Handel-C s level of design abstraction is above RTL but below behavioral level, allows the designer to focus more on the specification of an algorithm rather than adopting a structural approach to coding. For these reasons the Handel-C is used for implementation of ECM Language Handel-C is a subset of ANSI-C with the necessary constructs added for hardware design. Comparison of ANSI-C and Handel-C is given in Figure 17. The Handel-C syntax is based on that of conventional C so programmers familiar with conventional C will recognize

47 34 almost all the constructs in the Handel-C language. Since Handel-C is based on the syntax of conventional C, programs written in Handel-C are implicitly sequential. Writing one command after another indicates that those instructions should be executed in that exact order. Handel-C provides constructs to control the flow of a program. Algorithms can be expressed in Handel-C without worrying about how the underlying computation engine works. This philosophy makes Handel-C a programming language rather than a hardware description language. In some senses, Handel-C is to hardware what a conventional high-level language is to microprocessor assembly language. Side Effects ie. ANSI-C Standard Library Arrays Preprocessors ie. Arithmetic operators ANSI-C Constructs Handel-C Standard Library Parallelism Arbitrary width variables RAM, ROM Channels Signals Resursion Floating Point Pointers Structures Bitwise operators Functions Interface Enhanced bit manipulation ANSI-C Handel-C Figure 17: Comparison between Handel-C and ANSI-C

48 35 Code partitioning can be carried after successfully verifying the functionality of the system at the high level (C/C++). At this point, individual function (module) can be chosen to implement in Handel-C. Simulation can be done within the completely specified system model, and it can help developers consider block-based partitioning decisions. Testbenches can be built in C/C++, incorporating input from and output to other tools. The same testbenches can be used for the entire developing process. Handel-C program can be built as a stand-alone standard executable, which runs outside the DK environment, to be included in larger systems or distribution. Like SRC Carte, Handel-C supports hardware macro written in VHDL or Verilog. The Handel-C uses an construct to communicate with the HDL or EDIF, but the connections are slightly different in these two cases, since buses are expanded into single signals in EDIF. Handel-C identifies the HDL/EDIF component it must connect to by using the component's HDL/EDIF name as the Handel-C _. (For VHDL, if the ports generated by the Handel-C are of a different type to those used in VHDL, a wrapper file is needed to connect the two types of ports together). The hardware design that DK produces is generated directly from the Handel-C source program. There is no intermediate interpreting layer as exists in assembly language when targeting general-purpose microprocessors. The logic gates that make up the final Handel-C circuit are the assembly instructions of the Handel-C system.

49 Code Development Similarly to other High Level Languages, the target of the Handel-C compiler is low-level hardware. Thus, the major advantages are made possible by the use of parallelism. Although programs written in Handel-C are sequential, it is possible to construct the compiler to build hardware to execute statements in parallel. Handel-C parallelism is true parallelism - it is not the time-sliced parallelism familiar from general purpose computers. In other words, when instructed to execute two instructions in parallel, those two instructions will be executed at exactly the same instant in time by two separate pieces of hardware. When a parallel block in encountered, execution flow splits at the start of the parallel block and each branch of the block executes simultaneously. Execution flow then re-joins at the end of the block when all branches have completed. Any branches that complete early are forced to wait for the slowest branch before continuing as shown in Figure 18. Within parallel blocks of code, sequential branches can be added by using a code block denoted with the brackets instead of a single statement. For example: { { } }

50 37 Statement Parallel Block Figure 18: Branching and Re-joining of the Execution Flow In this example, the first branch of the parallel statement executes the assignment to while the second branch sequentially executes the assignments to and. The assignments to and occur in the same clock cycle; the assignment to occurs in the next clock cycle. Using this parallel statement, large blocks of functionality can be generated that execute in parallel. It should be noted that variable cannot be written multiple times in same clock cycle.

51 Efficient FPGA Resource Usage For efficient use of hardware, Handel-C provides the flexibility of use of user defined data types of variable sizes. In Handel-C, integers are not limited to 64 bits; in fact, Handel-C types are not limited to specific widths. When a variable is declared, the minimum width should be specified to minimize hardware usage, i.e., to declare a 5-bit integer Code Optimization Handel-C is a C based hardware description language. In Handel-C registers are implemented using flip- flops and all other circuitry is made up of logic gates. Each of the logic gates in the circuit has delay associated with it as the inputs propagates through the outputs. Optimization is the main part while modeling hardware to reduce the propagation delay and to exploit parallelism and pipelining. A Handel-C program executes with one clock source for each main statement. It is important to be aware exactly which parts of the code execute on which clock cycles. This is not only important for writing code that executes in fewer clock cycles, but may mean the difference between correct and incorrect coding when using Handel-C s parallelism. The following techniques may be utilized when optimizing the code: Reducing logic depth: Deep logic results in long path delays in the final circuits, therefore reducing logic depth should increase clock speed. Division and modulo

52 39 operators produce the deepest logic. Most common division and multiplications can be done with the shift operators. Most common modulo operations can be done with the operator. Wide adders should be broken up using more clock cycles with shorter adders. Greater than and less than comparisons should be avoided since they produce deep logic. Complex expressions should be reduced into a number of stages. Pipelining: A pipeline circuit takes more than one clock cycle to calculate any result but can produce one result every clock cycle. The trade-off is an increase in latency for a higher throughput so pipelining is only effective if there is a large amount of data to be processed. Parallelism: is the main reason why application on hardware can run much faster than in software even though the hardware run at a much slower clock speed. One should analyze the potential parallelism of a program in order to be able to break it into different non-conflicting parallel blocks, which operate at the same clock cycle to archive speed up Some Restrictions When Using Handel-C and FPGAs There are a number of resemblances between the Handel-C and ANSI-C. Handel-C has a few extensions to ANSI-C, which allows additional functionality for hardware design. However, Handel-C is a language digital logic design, which means that the way in which DK interprets it may differ to the way in which compilers interpret ANSI-C for software

53 40 design. It also lacks some ANSI-C constructs which are not appropriate to hardware implementation Environment In contrast to SRC Carte, design in Handel-C is quite simple. Figure 19 describes the design flow in Handel-C. The current programming environment for Handel-C is Development Kit DK-4. DK is the Integrated Development Environment (IDE) for Handel- C and supports a mixed abstraction level modeling and simulation environment. DK support Handel-C, C and C++ source code, in which C/C++ functions are used for simulation only. There is a clear boundary between the parts of design used for simulation and parts used for hardware implementation. Since Handel-C is based on the syntax of conventional C, programs written in Handel-C are implicitly sequential. Writing one command after another indicates that those instructions should be executed in that exact order. To execute instructions in parallel, the keyword must be used. The hardware design that DK produces is generated directly from the Handel-C source program. There is no intermediate interpreting layer as exists in assembly language when targeting general-purpose microprocessors. The logic gates that make up the final Handel-C circuit are the assembly instructions of the Handel-C system.

54 41 The overall program structure comprises of one or more associated with a clock. This is unlike conventional C, where only one functions, each function is allowed. More than one function should only be used if different speeds (and so different clocks) needed. Executable Specification Handel-C VHDL Synthesis EDIF EDIF Place & Route Figure 19: Design Flow in Handel-C

55 Chapter 4 - Elliptic Curve Method of Factoring RSA Public Key Cryptosystem There are two kinds of cryptographic systems: Secret Key and Public Key. A Secret key system involves the use of one key, called Secret Key. A Public key system involves the use of two keys, named Public Key and Private Key. plaintext ciphertext Shared key ciphertext plaintext Figure 20: Operation of Secret-Key Cryptosystem In secret key cryptographic system, only a single key is used. Given a message (plaintext), and the key, encryption produces a cipher text (unintelligible data), which is 42

56 43 about the same length as the plaintext. Decryption is the reverse of encryption, whereby the cipher text and the same key are used to produce the plaintext. Secret key cryptosystem is sometimes referred as conventional or symmetric cryptosystem (Figure 20). The main challenge in this system is to get the sender and receiver to agree on a secret key without anyone knowing the key. Anyone who finds out the secret key can read, modify and forge all messages encrypted using that key. The generation, transmission and storage of keys are called key management. Secret key cryptosystem often has difficulty providing secure key management. Public key cryptosystem is sometimes referred as asymmetric cryptosystem, invented in 1976 by Whitfield Diffie and Martin Hellman [5]. Unlike secret key cryptosystem, keys are not shared. Instead, each individual has two keys: a private key that is kept secretly, and a public key that is known to the world. The private and public keys are mathematically linked to each other. This system functions as one-way trapdoor and is described in Figure 21. RSA is named after its inventors, Rivest, Shamir, and Adleman. It is the most widely used public key cryptosystem that does encryption as well as decryption. The key length is variable depending on application. RSA s key can be chosen long for enhanced security, or short for efficiency. The most commonly used key length for RSA is 1024 bits.

57 44 In an RSA system, there are a public key and a corresponding private key. Keys are generated as follows: X Public Key Y Private Key Figure 21: Operation of Public-Key Cryptosystem Choose two large primes and, multiply them together to get. Choose a number that is relatively prime to. Public Key will be. Find the number d that is the multiplicative inverse of. That is. Private Key will be. Given a message, cipher text is calculated as. Given a cipher text, message is recovered by. This forms the trap-door one-way function as in Figure 22.

58 45 m Public Key (e, n) c Private Key (d, n) Figure 22: Trap-door One-way Function of RSA RSA Security The real premise behind RSA s security is the assumption that factoring a big number is difficult or infeasible. If can be factored to get and, then the security of RSA is compromised. Therefore the cost and time required to factor an -bit RSA modulus provide an upper bound on the security of -bit RSA. Currently the size of used these days is 1024 bits or 309 digits Factorization Algorithms for integer factorization can be split into two groups, the special and the general algorithms. The special algorithms are for a special class of numbers, that is the factoring time depends on the size or special features of the factors. The special algorithms include,, and. The general algorithms are not constructed for any special class of numbers to be factored, that is the factoring time depends on the size of the

59 46 number. Quadratic Sieve and Number Field Sieve are two examples of the general algorithms Special Algorithm: Elliptic Curve Method (ECM) ECM: Overview Let be a field with characteristics different from 2, 3. For example, with a prime, which is a set of integers with addition and multiplication. An elliptic curve over is defined as a set of points satisfying Eq. 1 together with a special point called the point at infinity and denoted. Two points and can be added together to give a third point, where and for some - rational functions and. The point at infinity,, is an identity element of this operation, i.e.. Points of the curve (including the point at infinity), together with aforementioned addition form a group, which is denoted by. The representation of elliptic curve points using two coordinates is called the affine representation. In order to increase the computational efficiency of point addition, one may prefer the representation of in homogeneous (projective) coordinates of,

60 47 Eq. 2 With this change, with represents in affine coordinates. If then is the point at infinity, which is represented by in projective coordinates. Montgomery [6] studied elliptic curves of the form,, to increase the speed of elliptic curve operations in software and hardware. This form is obtained by the change of variables,, from Eq. 1. The corresponding expression in projective coordinates is Eq. 3 with. Using the above form of elliptic curves, Montgomery derived an addition formula for P and Q which does not need any y-coordinate information, assuming that the difference is already known. The choice of parameters a and b for the given above curve can be simplified using Suyama s parameterization, which expresses and coordinates of a point on the curve, as a function of a single parameter, as described in detail in [7]. Let be a composite integer to be factored. The ECM Method [6] [7] [8] considers elliptic curves in Montgomery form, given in Eq. 3, and involves elliptic curve operations, where the elements in are reduced. Since is not a

61 48 prime, over is not really an elliptic curve but we can still do point additions and doublings as if was a field ECM: Algorithm The Elliptic Curve Method (ECM) was originally proposed by Lenstra [9] and subsequently extended by Brent [8] and Montgomery [6]. The original part of the algorithm proposed by Lenstra is typically referred to as Phase 1 (or Stage 1), and the extension by Brent and Montgomery is called Phase 2 (or Stage 2). The pseudo-code of both phases is given below as Algorithm 1. Algorithm 1: ECM Algorithm Require: : composite number to be factored, E: elliptic curve, : initial point, : bounds for Phase 1 and Phase 2 respectively,. Ensure: : factor of,, or FAIL Phase If then 5. Return q 6. Else 7. Go to Phase 2

62 49 8. End if Phase For each prime do End for If then 16. Return q 17. Else 18. Return FAIL 19. End if Let be an unknown factor of. Then the order of the curve, i.e., the number of points on the curve with operations performed, might be a smooth number that divides. In that case, we have for some. For any point belonging to the curve, therefore. Thus,, and the unknown factor of, can be recovered by taking. Montgomery [6] [10] and Brent [8] independently suggested a continuation of Phase 1, if one has. Their ideas utilize that fact that even if one has, the value of k might miss just one large prime divisor of. In that case, one only

63 50 needs to compute the scalar multiplication by to get. A second bound, restricts the size of possible values of. Let be the cost of one multiplication. Then Phase 1 of ECM finds a factor of with the conjectured time complexity [9]. Phase 2 speeds up Lenstra s original method by the factor which is absorbed in the term of the complexity, but is significant for small and medium size factors Operations on an Elliptic Curve The hierarchy of major operations used in the ECM algorithm is shown in Figure 23. Scalar multiplication,, is a basic elliptic curve operation used in ECM. It is also a fundamental operation of a majority of Elliptic Curve Cryptosystems [11], and therefore it has been studied extensively in the past from the point of view of efficient implementations in software and hardware Top Level: Scalar Multiplication Scalar multiplication is defined as an addition,, where is an integer and is a point on an elliptic curve. An efficient algorithm for computing scalar multiplication was proposed by Montgomery [6] in 1987, and is known as the Montgomery Ladder Algorithm. This algorithm is applicable to any curve, and is independent of the point representation, i.e., it can be

64 51 executed in both affine and projective coordinates. However, it is especially useful when an elliptic curve is expressed in Montgomery form (see Eq. 3), in projective coordinates. In this case, all intermediate computations can be executed using only and coordinates, and the -coordinate of the result can be retrieved (if needed) from the and coordinates of the final point. In the ECM method, the -coordinate of the result is not needed, so this final computation is unnecessary. As a result, we denote the starting point by, intermediate points, by, and the final point by. The pseudocode of the Montgomery Ladder Algorithm is shown below as Algorithm 2. Algorithm 2: Montgomery Ladder Algorithm Require: on with, an -bit positive integer with Ensure: For downto 0 do 3. If then Else End if 8. End for 9. Return

65 52 ECM Top Level Scalar Multiplication Medium Level Point Addition Point Doubling Low Level Modular Multiplication Modular Addition Modular Subtraction Figure 23: Hierarchy of Elliptic Curve Operations Medium Level: Point Addition and Doubling Montgomery ladder algorithm s two basic steps, Point Addition and Doubling, are defined in detail as Algorithm 3. The algorithm is constructed in such a way that the difference between the intermediate points and,, is always constant, and equal to the value of the initial point, as shown graphically in Figure 24. Therefore, and in the formulas in can be replaced by and respectively. A careful analysis of formulas in Algorithm 3 indicates that point addition requires 6

66 53 multiplications, and point doubling 5 multiplications. Therefore, a total of 11 multiplications are required in each step of the Montgomery ladder algorithm. In Phase 1 of ECM, the initial point,, can be chosen arbitrarily. Choosing implies throughout the entire algorithm, and reduces the total number of multiplications from 11 to 10 per one step of the algorithm, independent of the -th bit of. This optimization is not possible in Phase 2, where the initial point is the result of computations in Phase 1, and thus cannot be chosen arbitrarily. Algorithm 3: Addition and Doubling using the Montgomery s Form of Elliptic Curve Require: with, where is a parameter of the curve in Eq. 3 Ensure: Low Level: Montgomery Multiplication Let be an odd integer. In many cryptosystems such as RSA, computing is a crucial operation. Taking the reduction of is a more time consuming step than the multiplication without reduction. Montgomery [12]

67 54 introduced a method for calculating products without the costly reduction, known as Montgomery multiplication. Montgomery multiplication of and,, is defined as for some fixed integer. P, 2P 2P, 3P 3P, 4P 4P, 5P 5P, 6P 6P, 7P 7P, 8P 8P, 9P 9P, 10P 10P, 11P 11P, 12P 12P, 13P 13P, 14P 14P, 15P 15P, 16P Figure 24: Graphical illustration of Montgomery Ladder Algorithm, for the case of k = 11 Since Montgomery multiplication is not an ordinary multiplication, there is a process of conversion between the ordinary domain (with ordinary multiplication) and the Montgomery domain. The conversion between the ordinary domain and the

68 55 Montgomery domain is given by the relation with and the corresponding diagram is shown below in Table 3. Table 3: Conversion between the ordinary domain and the Montgomery domain Ordinary Domain Montgomery Domain The table shows that the conversion is compatible with multiplication in each domain, since Eq. 4 The conversion between each domain can be done using the same Montgomery operation, in particular and, where can be pre-computed. Despite the initial conversion cost, if we do many Montgomery multiplications followed by an inverse conversion, as in RSA, we obtain an

69 56 advantage over ordinary multiplication. In fact, in the ECM method, the inverse conversion is not necessary because for an arbitrary, and odd. Algorithm 4: Radix-2 Montgomery Multiplication Require: Ensure: For to do End for 6. Return Algorithm 4 shows the pseudo-code for radix-2 Montgomery multiplication where we choose. It should be mentioned that this is slightly different from which Montgomery [12] originally used. This modified algorithm makes all the inputs and output in the same range, i.e.,. Therefore, it is possible to implement Algorithm 4 repeatedly without any reduction unlike the original algorithm [12], where one has to take reduction at the end of the algorithm to make the output value in the same range as the input values.

70 General Algorithm: Number Field Sieve (NFS) NFS: Overview The fastest known method for factoring large integers is the Number Field Sieve (NFS), invented by Pollard in 1991 [13]. It has since been improved substantially and developed from its initial special form (which was only used to factor numbers close to perfect powers, such as Fermat numbers) to a general purpose factoring algorithm. Using the Number Field Sieve, an RSA modulus of 663 bits was successfully factored by Bahr, Boehm, Franke and Kleinjung in May 2005 [14]. The cost of implementing the Number Field Sieve, and the time it takes for such an implementation to factor a b-bit RSA modulus, provide an upper bound on the security of b-bit RSA. In order to factor a big integer N such as an RSA modulus, NFS requires the factorization of a large number of moderately sized integers created during run time, perhaps of size 200 bits [15] [16]. Such numbers can be routinely factored in very little time. However, because an estimated 10 10, such factorizations are necessary for NFS to succeed in factoring a 1024 bit RSA modulus, it is of crucial importance to perform these auxiliary factorizations as fast and efficiently as possible. Even tiny improvements, once multiplied by factorizations, would make a significant difference in how big an RSA modulus can be factored.

71 ECM in NFS Let us look at the steps required in NFS in Figure 25. Those steps include Polynomial Selection, Relation Collection, Linear Algebra, and Square Root. As mentioned before, NFS requires the factorization of a large number of moderately sized integers created during run time, perhaps of size 200 bits. In reviewing existing algorithms which can be used to factor medium-size numbers, the only practically useful algorithms are probabilistic (Monte-Carlo) methods. There is no guarantee that a probabilistic algorithm will terminate successfully, but the probability of a successful outcome is large enough that the expected time needed to factor a given number is considerably lower than that of any deterministic algorithm. In particular, all known deterministic factoring methods have exponential asymptotic run time. In practice, they are, at best, used to remove the smallest prime factors from the number to be factored. Trial division by, at most, a few hundred small primes with asymptotic run-time (with covering the cost of integer arithmetic as increases) may be considered as a first step in factoring random numbers. The fastest known deterministic factoring method is due to Pollard and Strassen and has an asymptotic runtime, but is not recommended in practical applications because it is easily surpassed by simple probabilistic methods.

72 59 Polynomial Selection Relation Collection Sieving 200 & 350 bit numbers Norm Factoring ECM p-1 Method Pollard rho Linear Algebra Square Root Figure 25: Required Steps in NFS Three other probabilistic factoring methods are also of exponential run time, but with a much smaller overhead than their sub-exponential colleagues, so that within a certain range they are efficient factoring tools. These are Pollard s method, the similar method due to Williams, and Pollard s -method. Finally, the Elliptic Curve Method (ECM), which is the main subject of this thesis, is a sub-exponential factoring algorithm, with expected run time of, where, is a factor we aim to find, and denotes the cost of multiplication. ECM is the

73 60 best method to perform the kind of factorizations needed by NFS, for integers in the 200-bit range, with prime factors of up to about 40 bits [17] [18].

74 Chapter 5 - Previous Work on Implementing Applications in High Level Languages for Reconfigurable Hardware There are several previous developments related to implementing applications in HLLs for reconfigurable hardware. The first one is the implementation of SRC Libraries of Hardware Macros. Currently available libraries include: Vendor libraries of hardware macros developed and distributed by SRC Inc., including o basic integer and floating-point arithmetic o digital signal processing User libraries of hardware macros developed by GWU/GMU/USC , including o Secret-key cipher encryption & breaking o Binary Galois Field arithmetic (polynomial basis & normal basis representation) o Elliptic Curve Arithmetic o Long integer modular arithmetic (RSA) o Sorting 61

75 62 o Image processing o Bioinformatics These macros were implemented as libraries, meaning that developers can use them to speed up the development process. They are almost entirely implemented in HDL languages (VHDL and Verilog) as hardware cores. Developers have to write their HLL code to call these macros. Some other work included: N. Nguyen, K. Gaj, D. Caliga, T. El-Ghazawi, "Implementation of Elliptic Curve Cryptosystems on a Reconfigurable Computer," Proc. IEEE International Conference on Field-Programmable Technology, FPT 2003, Tokyo, Japan, Dec. 2003, pp [26], and S. Bajracharya, C. Shu, K. Gaj, T. El-Ghazawi, "Implementation of Elliptic Curve Cryptosystems over GF(2^n) in Optimal Normal Basis on a Reconfigurable Computer," 14th International Conference on Field Programmable Logic and Applications, FPL 2004, Antwerp, Belgium, Aug 30 - Sept 1, 2004, pp [25], which both contain analysis of various Carte-C / VHDL partitioning schemes for elliptic curve cryptosystems over binary fields. Vlad Kindratenko (NCSA), Accelerating Scientific Applications with Reconfigurable Computing, in which he implemented three applications (Image distance transform, Nanoscale Molecular Dynamics, and Two-Point Angular

76 63 Correlation Function) in SCR Carte-C, and moved the traditional HDL codes gradually into Carte-C to find the optimal profile. This work is probably the closest match with the work has been done in this Thesis. Viktor K. Prasanna, Gerald R. Morris, Sparse Matrix Computatons on Reconfigurable Computer (Reconfigurable Computer, Mar 2007), in which two well-known double-precision floating-point sparse matrix iterative-linearequation solvers were implemented in VHDL, and ported to SRC Carte-C as hardware cores. Esam El-Araby, Mohamed Taher, Mohamed Abouellail, Tarek El-Ghazawi, and Gregory B. Newby, Comparative Analysis of High Level Programming for Reconfigurable Computers: Methodology and Empirical Study, in which GWU group implemented DES in four different languages: Verilog, Impulse-C, DSPLogic and Mitrion-C. K Gaj, S Kwon, P Baier, P Kohlbrenner, H Le, M Khaleeluddin and R Bachimanchi, Implementing The Elliptic Curve Method of Factoring in Reconfigurable Hardware, in which the entire ECM was implemented using VHDL and ported to SCR Carte for verification. All of the applications, except for the previous work from GMU and the work of Vlad Kindratenko from NCSA, were either entirely implemented in HLL or in HDL, in contrast to the work done in this Thesis, which describe different code partitioning schemes

77 64 involving two HLLs: SRC Carte and Celoxica Handel-C, and one hardware description language, VHDL.

78 Chapter 6 - Implementation of ECM using SRC Carte-C Partitioning the Code between High Level Language (HLL) and Hardware Description Language (HDL) The first step in porting an application to a system utilizing the MAP hardware is to identify some portion of the application such that, when that portion is compiled for the MAP, overall performance will improve. Loops are often good candidates for execution on the MAP. Loop nests and their associated loop bodies, which can be pipelined, have shown execution speed-up. Once a body of code has been identified for MAP execution it must be placed in its own separate function, or split into functions for inlining, and be the first function in the file that contains these functions. SRC Program Partitioning is visualized in Figure 26. Programming in high level languages is always easier than in hardware description languages. However, the efficiency of the code is also reduced. Data partitioning is important as well. The MAP function contains the computational portion of code to be executed on the MAP. This function must also be modified to manage the data movement to and from the MAP's On-Board Memory (OBM). Data movement calls must be inserted to manage data movement between 65

79 66 either System Common Memory (SCM) or Global Common Memory (GCM) and OBM. A general architecture of ECM in SRC is conceptualized below in Figure 27. µp system FPGA system C function for µp C function for MAP VHDL macro HLL HDL Figure 26: SRC Program Partitioning Main Program in C/C++ Data Communication Module Control Unit & MEM M1 M2 A/S Figure 27: General architecture of ECM. Notation: MEM-memory; M1; M2-multipliers 1 and 2; A/Sadder/subtractor

80 67 There are three possible coding partitions. The first one is to implement Control Units, Memory and M1-M2-A/S in VHDL and build them as hardware macro; Data Communication Module is implemented in HLL (Figure 28). The second scheme is to implement M1-M2-A/S in VHDL and build them as hardware macro; Data Communication Module, Control Unit and Memory are moved into HLL (Figure 29). Main Program in C/C++ Data Communication Module Control Unit & MEM M1 M2 A/S C/C++ HLL VHDL Macro Figure 28: Coding Partition Scheme 1. Notation: MEM-memory; M1; M2-multipliers 1 and 2; A/S-adder/subtractor Main Program in C/C++ Data Communication Module Control Unit & MEM M1 M2 A/S C/C++ HLL VHDL Macro Figure 29: Coding Partition Scheme 2. Notation: MEM-memory; M1; M2-multipliers 1 and 2; A/S-adder/subtractor

81 68 The last scheme is to move everything into HLL except for the main program in C/C++. This scheme would be ideal for software engineers, who do not want to program in hardware languages (Figure 30). Main Program in C/C++ Data Communication Module Control Unit & MEM M1 M2 A/S C/C++ HLL Figure 30: Coding Partition Scheme 3. Notation: MEM-memory; M1; M2-multipliers 1 and 2; A/S-adder/subtractor Figure 31 shows four schemes to be implemented in this Thesis Coding Partition 1: Data Communication Module in Carte-C Overview In this scheme, the entire ECM unit was implemented in VHDL and built as a SRC hardware macro. The communication module was written in MAP-C. This module serves as a bridge to transfer data back and forth between the FPGA side and microprocessor side. All pre-computable data has been performed by microprocessor and transferred to

82 69 FPGA through this communication module. Once the main execution is done in FPGA, the result will be transferred back to the microprocessor side for post-computation SRC Carte-C Scheme 1 (Entire ECM module as HDL core) Scheme 2 (Control unit in Carte-C) Celoxica Handel-C Scheme 2 (Control unit in Handel-C) Scheme 3 (Entire ECM module in Handel-C) Figure 31: Four schemes to be implemented in this Thesis Main Program in C/C++ Data Communication Module Control Unit & MEM M1 M2 A/S C/C++ Carte C VHDL Macro Figure 32: SRC Scheme 1 - Data Communication Module in MAP-C. Notation: DCM - Data Communication Module

83 Architecture ECM macro was implemented entirely in VHDL. This is an external macro with variable latency. The required signals include and signal will clear all variables; provides clock signal for the entire circuit; signal will control when the macro is executed; signal will be asserted to inform the DCM upon the completion of execution. and are used to transfer data in and out respectively (Figure 33). As mentioned before, the data communication module (DCM) was implemented in MAP-C and serves as a bridge between the main program on microprocessor side, and the SRC macro in MAP. DCM takes care of moving data in and out SCM using DMA calls. DCM then calls ECM macro to input data and start the main execution. Once the main execution is done, DCM reads result from ECM macro and transfers it back to the main program in microprocessor side for post-computation. Since the current version of MAP-C does not support data streaming between MAP-C and hardware macros, data was transferred into and out of ECM macro one word at a time. This work-around results in a noticeable overhead. Data transfer between microprocessor side and hardware side also takes a long time. Due to this limitation, one should transfer all necessary data in at one time, perform the main computation as much as possible, and finally transfer the result out to reduce the overhead.

84 71 reset 1 clk start Data_in ECM UNIT 32 1 Data_out done Control 16 Figure 33: Top level of ECM unit in SRC Scheme 1 A main program was written in C to perform all pre-computations (curves parameters) and post-computation (greatest common devisor, gcd). This program was optimized using multi-threading techniques. Since the pre-computation and post-computation time are small in comparison to the main execution time of ECM in hardware, the idea is to interleave pre- and post-computations with the main time. By doing that, the precomputation and post-computation times are effectively eliminated, thus overhead is reduced. Figure 35 shows the overall timing results before and after optimization.

85 72 M1 M2 Local MEM Control Unit Instruction MEM A/S Unit 1 M1 M2 Local MEM Global MEM A/S Unit T Figure 34: Block diagram of the top-level unit in SRC Scheme 1. Notation: MEM-memory; M1; M2-multipliers 1 and 2; A/S-adder/subtractor Results Table 4: Execution Time of Phase 1 and Phase 2 Using SRC-6 Reconfigurable Computer Holding 9 ECM Units for 198- Bit Numbers N; B1 = 960 (Which Implies Number of Bits of k; kn = 1375), B2 = 57000, and D = 210 in SRC Scheme 1 One-time pre-computations Pre-computations by the microprocessor (common to all integers to be factored) Generation of 9 integers to be factored Generation of numbers to be factored Phase 1 Phase μs 7902 μs ECM computations for one set of 9 integers to be factored Pre-computations by the microprocessor 1,368 μs 0 μs (specific to a given set of integers to be factored)

86 73 Transfer of data-in (from the microprocessor memory to the on-board-memory of the FPGA-based processor) Calculations performed by the FPGA-based processor 51 μs 0 μs 17,136 μs 19,152 μs Transfer of data out (from the on-board-memory of the FPGA-based processor to the microprocessor memory) 0 μs 19 μs Function call overhead (overhead associated with the transfer of control between 252 μs the microprocessor and the FPGA) Post-computations by the microprocessor (final GCD computation) 0 μs 81 μs Total end-to-end execution time 18,681 μs 19,378 μs Both Phases μs Percentage of the total end-to-end execution time Pre-computations and post-computations by the microprocessor 7.32 % 0.42% Both Phases 3.81 % Function call and data transfer overheads 0.95 % 0.75 % Both Phases 0.85 % FPGA board computations % % Both Phases % Table 5: Place & Route Summary in SRC Scheme 1 Number of Slice Flip Flops 34,071 out of 67,584 50% Number of 4 input LUTs 41,478 out of 67,584 61% Number of occupied Slices 30,996 out of 33,792 91% Number of Block RAMs 12 out of 144 8% Frequency 99 MHz Execution Time (both Phases) 38 ms

87 74 Table 6: Number of lines of codes in SRC Scheme 1 Number of lines of codes VHDL 3975 MAP-C 106 Estimated Time to Complete 3 students x 1 semester Figure 35: Overall results of execution time in SRC scheme 1

An Implementation Comparison of an IDEA Encryption Cryptosystem on Two General-Purpose Reconfigurable Computers

An Implementation Comparison of an IDEA Encryption Cryptosystem on Two General-Purpose Reconfigurable Computers An Implementation Comparison of an IDEA Encryption Cryptosystem on Two General-Purpose Reconfigurable Computers Allen Michalski 1, Kris Gaj 1, Tarek El-Ghazawi 2 1 ECE Department, George Mason University

More information

Cray XD1 Supercomputer Release 1.3 CRAY XD1 DATASHEET

Cray XD1 Supercomputer Release 1.3 CRAY XD1 DATASHEET CRAY XD1 DATASHEET Cray XD1 Supercomputer Release 1.3 Purpose-built for HPC delivers exceptional application performance Affordable power designed for a broad range of HPC workloads and budgets Linux,

More information

Master s Thesis Presentation Hoang Le Director: Dr. Kris Gaj

Master s Thesis Presentation Hoang Le Director: Dr. Kris Gaj Master s Thesis Presentation Hoang Le Director: Dr. Kris Gaj Outline RSA ECM Reconfigurable Computing Platforms, Languages and Programming Environments Partitioning t ECM Code between HDLs and HLLs Implementation

More information

Implementation of Elliptic Curve Cryptosystems over GF(2 n ) in Optimal Normal Basis on a Reconfigurable Computer

Implementation of Elliptic Curve Cryptosystems over GF(2 n ) in Optimal Normal Basis on a Reconfigurable Computer Implementation of Elliptic Curve Cryptosystems over GF(2 n ) in Optimal Normal Basis on a Reconfigurable Computer Sashisu Bajracharya, Chang Shu, Kris Gaj George Mason University Tarek El-Ghazawi The George

More information

ECE 699: Lecture 12. Introduction to High-Level Synthesis

ECE 699: Lecture 12. Introduction to High-Level Synthesis ECE 699: Lecture 12 Introduction to High-Level Synthesis Required Reading The ZYNQ Book Chapter 14: Spotlight on High-Level Synthesis Chapter 15: Vivado HLS: A Closer Look S. Neuendorffer and F. Martinez-Vallina,

More information

Tools for Reconfigurable Supercomputing. Kris Gaj George Mason University

Tools for Reconfigurable Supercomputing. Kris Gaj George Mason University Tools for Reconfigurable Supercomputing Kris Gaj George Mason University 1 Application Development for Reconfigurable Computers Program Entry Platform mapping Debugging & Verification Compilation Execution

More information

Digital Integrated Circuits

Digital Integrated Circuits Digital Integrated Circuits Lecture 9 Jaeyong Chung Robust Systems Laboratory Incheon National University DIGITAL DESIGN FLOW Chung EPC6055 2 FPGA vs. ASIC FPGA (A programmable Logic Device) Faster time-to-market

More information

Reconfigurable Hardware Implementation of Mesh Routing in the Number Field Sieve Factorization

Reconfigurable Hardware Implementation of Mesh Routing in the Number Field Sieve Factorization Reconfigurable Hardware Implementation of Mesh Routing in the Number Field Sieve Factorization Sashisu Bajracharya, Deapesh Misra, Kris Gaj George Mason University Tarek El-Ghazawi The George Washington

More information

EITF35: Introduction to Structured VLSI Design

EITF35: Introduction to Structured VLSI Design EITF35: Introduction to Structured VLSI Design Introduction to FPGA design Rakesh Gangarajaiah Rakesh.gangarajaiah@eit.lth.se Slides from Chenxin Zhang and Steffan Malkowsky WWW.FPGA What is FPGA? Field

More information

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011

FPGA for Complex System Implementation. National Chiao Tung University Chun-Jen Tsai 04/14/2011 FPGA for Complex System Implementation National Chiao Tung University Chun-Jen Tsai 04/14/2011 About FPGA FPGA was invented by Ross Freeman in 1989 SRAM-based FPGA properties Standard parts Allowing multi-level

More information

Performance and Overhead in a Hybrid Reconfigurable Computer

Performance and Overhead in a Hybrid Reconfigurable Computer Performance and Overhead in a Hybrid Reconfigurable Computer Osman Devrim Fidanci 1, Dan Poznanovic 2, Kris Gaj 3, Tarek El-Ghazawi 1, Nikitas Alexandridis 1 1 George Washington University, 2 SRC Computers

More information

Hardware Design Environments. Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University

Hardware Design Environments. Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University Hardware Design Environments Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University Outline Welcome to COE 405 Digital System Design Design Domains and Levels of Abstractions Synthesis

More information

L2: FPGA HARDWARE : ADVANCED DIGITAL DESIGN PROJECT FALL 2015 BRANDON LUCIA

L2: FPGA HARDWARE : ADVANCED DIGITAL DESIGN PROJECT FALL 2015 BRANDON LUCIA L2: FPGA HARDWARE 18-545: ADVANCED DIGITAL DESIGN PROJECT FALL 2015 BRANDON LUCIA 18-545: FALL 2014 2 Admin stuff Project Proposals happen on Monday Be prepared to give an in-class presentation Lab 1 is

More information

Implementation of Elliptic Curve Cryptosystems over GF(2 n ) in Optimal Normal Basis on a Reconfigurable Computer

Implementation of Elliptic Curve Cryptosystems over GF(2 n ) in Optimal Normal Basis on a Reconfigurable Computer Implementation of Elliptic Curve Cryptosystems over GF(2 n ) in Optimal Normal Basis on a Reconfigurable Computer Sashisu Bajracharya 1, Chang Shu 1, Kris Gaj 1, Tarek El-Ghazawi 2 1 ECE Department, George

More information

Introduction to reconfigurable systems

Introduction to reconfigurable systems Introduction to reconfigurable systems Reconfigurable system (RS)= any system whose sub-system configurations can be changed or modified after fabrication Reconfigurable computing (RC) is commonly used

More information

EECS150 - Digital Design Lecture 6 - Field Programmable Gate Arrays (FPGAs)

EECS150 - Digital Design Lecture 6 - Field Programmable Gate Arrays (FPGAs) EECS150 - Digital Design Lecture 6 - Field Programmable Gate Arrays (FPGAs) September 12, 2002 John Wawrzynek Fall 2002 EECS150 - Lec06-FPGA Page 1 Outline What are FPGAs? Why use FPGAs (a short history

More information

Outline. EECS150 - Digital Design Lecture 6 - Field Programmable Gate Arrays (FPGAs) FPGA Overview. Why FPGAs?

Outline. EECS150 - Digital Design Lecture 6 - Field Programmable Gate Arrays (FPGAs) FPGA Overview. Why FPGAs? EECS150 - Digital Design Lecture 6 - Field Programmable Gate Arrays (FPGAs) September 12, 2002 John Wawrzynek Outline What are FPGAs? Why use FPGAs (a short history lesson). FPGA variations Internal logic

More information

INTRODUCTION TO FPGA ARCHITECTURE

INTRODUCTION TO FPGA ARCHITECTURE 3/3/25 INTRODUCTION TO FPGA ARCHITECTURE DIGITAL LOGIC DESIGN (BASIC TECHNIQUES) a b a y 2input Black Box y b Functional Schematic a b y a b y a b y 2 Truth Table (AND) Truth Table (OR) Truth Table (XOR)

More information

Implementation of the rho, p-1 & the Elliptic Curve Methods of Factoring in Reconfigurable Hardware

Implementation of the rho, p-1 & the Elliptic Curve Methods of Factoring in Reconfigurable Hardware Implementation of the rho, p-1 & the Elliptic Curve Methods of Factoring in Reconfigurable Hardware Kris Gaj Patrick Baier Soonhak Kwon Hoang Le Ramakrishna Bachimanchi Khaleeluddin Mohammed Paul Kohlbrenner

More information

Chapter 5: ASICs Vs. PLDs

Chapter 5: ASICs Vs. PLDs Chapter 5: ASICs Vs. PLDs 5.1 Introduction A general definition of the term Application Specific Integrated Circuit (ASIC) is virtually every type of chip that is designed to perform a dedicated task.

More information

The Xilinx XC6200 chip, the software tools and the board development tools

The Xilinx XC6200 chip, the software tools and the board development tools The Xilinx XC6200 chip, the software tools and the board development tools What is an FPGA? Field Programmable Gate Array Fully programmable alternative to a customized chip Used to implement functions

More information

FPGA: What? Why? Marco D. Santambrogio

FPGA: What? Why? Marco D. Santambrogio FPGA: What? Why? Marco D. Santambrogio marco.santambrogio@polimi.it 2 Reconfigurable Hardware Reconfigurable computing is intended to fill the gap between hardware and software, achieving potentially much

More information

FPGA. Logic Block. Plessey FPGA: basic building block here is 2-input NAND gate which is connected to each other to implement desired function.

FPGA. Logic Block. Plessey FPGA: basic building block here is 2-input NAND gate which is connected to each other to implement desired function. FPGA Logic block of an FPGA can be configured in such a way that it can provide functionality as simple as that of transistor or as complex as that of a microprocessor. It can used to implement different

More information

The Nios II Family of Configurable Soft-core Processors

The Nios II Family of Configurable Soft-core Processors The Nios II Family of Configurable Soft-core Processors James Ball August 16, 2005 2005 Altera Corporation Agenda Nios II Introduction Configuring your CPU FPGA vs. ASIC CPU Design Instruction Set Architecture

More information

Support for Programming Reconfigurable Supercomputers

Support for Programming Reconfigurable Supercomputers Support for Programming Reconfigurable Supercomputers Miriam Leeser Nicholas Moore, Albert Conti Dept. of Electrical and Computer Engineering Northeastern University Boston, MA Laurie Smith King Dept.

More information

Overview of ROCCC 2.0

Overview of ROCCC 2.0 Overview of ROCCC 2.0 Walid Najjar and Jason Villarreal SUMMARY FPGAs have been shown to be powerful platforms for hardware code acceleration. However, their poor programmability is the main impediment

More information

Agenda. Introduction FPGA DSP platforms Design challenges New programming models for FPGAs

Agenda. Introduction FPGA DSP platforms Design challenges New programming models for FPGAs New Directions in Programming FPGAs for DSP Dr. Jim Hwang Xilinx, Inc. Agenda Introduction FPGA DSP platforms Design challenges New programming models for FPGAs System Generator Getting your math into

More information

Field Programmable Gate Array (FPGA)

Field Programmable Gate Array (FPGA) Field Programmable Gate Array (FPGA) Lecturer: Krébesz, Tamas 1 FPGA in general Reprogrammable Si chip Invented in 1985 by Ross Freeman (Xilinx inc.) Combines the advantages of ASIC and uc-based systems

More information

Basic FPGA Architectures. Actel FPGAs. PLD Technologies: Antifuse. 3 Digital Systems Implementation Programmable Logic Devices

Basic FPGA Architectures. Actel FPGAs. PLD Technologies: Antifuse. 3 Digital Systems Implementation Programmable Logic Devices 3 Digital Systems Implementation Programmable Logic Devices Basic FPGA Architectures Why Programmable Logic Devices (PLDs)? Low cost, low risk way of implementing digital circuits as application specific

More information

Design Methodologies and Tools. Full-Custom Design

Design Methodologies and Tools. Full-Custom Design Design Methodologies and Tools Design styles Full-custom design Standard-cell design Programmable logic Gate arrays and field-programmable gate arrays (FPGAs) Sea of gates System-on-a-chip (embedded cores)

More information

Programmable Logic Devices FPGA Architectures II CMPE 415. Overview This set of notes introduces many of the features available in the FPGAs of today.

Programmable Logic Devices FPGA Architectures II CMPE 415. Overview This set of notes introduces many of the features available in the FPGAs of today. Overview This set of notes introduces many of the features available in the FPGAs of today. The majority use SRAM based configuration cells, which allows fast reconfiguation. Allows new design ideas to

More information

ECE 636. Reconfigurable Computing. Lecture 2. Field Programmable Gate Arrays I

ECE 636. Reconfigurable Computing. Lecture 2. Field Programmable Gate Arrays I ECE 636 Reconfigurable Computing Lecture 2 Field Programmable Gate Arrays I Overview Anti-fuse and EEPROM-based devices Contemporary SRAM devices - Wiring - Embedded New trends - Single-driver wiring -

More information

COE 561 Digital System Design & Synthesis Introduction

COE 561 Digital System Design & Synthesis Introduction 1 COE 561 Digital System Design & Synthesis Introduction Dr. Aiman H. El-Maleh Computer Engineering Department King Fahd University of Petroleum & Minerals Outline Course Topics Microelectronics Design

More information

The S6000 Family of Processors

The S6000 Family of Processors The S6000 Family of Processors Today s Design Challenges The advent of software configurable processors In recent years, the widespread adoption of digital technologies has revolutionized the way in which

More information

Computer-System Organization (cont.)

Computer-System Organization (cont.) Computer-System Organization (cont.) Interrupt time line for a single process doing output. Interrupts are an important part of a computer architecture. Each computer design has its own interrupt mechanism,

More information

Spiral 2-8. Cell Layout

Spiral 2-8. Cell Layout 2-8.1 Spiral 2-8 Cell Layout 2-8.2 Learning Outcomes I understand how a digital circuit is composed of layers of materials forming transistors and wires I understand how each layer is expressed as geometric

More information

SECURE PARTIAL RECONFIGURATION OF FPGAs. Amir S. Zeineddini Kris Gaj

SECURE PARTIAL RECONFIGURATION OF FPGAs. Amir S. Zeineddini Kris Gaj SECURE PARTIAL RECONFIGURATION OF FPGAs Amir S. Zeineddini Kris Gaj Outline FPGAs Security Our scheme Implementation approach Experimental results Conclusions FPGAs SECURITY SRAM FPGA Security Designer/Vendor

More information

FPGA Implementation and Validation of the Asynchronous Array of simple Processors

FPGA Implementation and Validation of the Asynchronous Array of simple Processors FPGA Implementation and Validation of the Asynchronous Array of simple Processors Jeremy W. Webb VLSI Computation Laboratory Department of ECE University of California, Davis One Shields Avenue Davis,

More information

VHDL-MODELING OF A GAS LASER S GAS DISCHARGE CIRCUIT Nataliya Golian, Vera Golian, Olga Kalynychenko

VHDL-MODELING OF A GAS LASER S GAS DISCHARGE CIRCUIT Nataliya Golian, Vera Golian, Olga Kalynychenko 136 VHDL-MODELING OF A GAS LASER S GAS DISCHARGE CIRCUIT Nataliya Golian, Vera Golian, Olga Kalynychenko Abstract: Usage of modeling for construction of laser installations today is actual in connection

More information

FPGAs: Instant Access

FPGAs: Instant Access FPGAs: Instant Access Clive"Max"Maxfield AMSTERDAM BOSTON HEIDELBERG LONDON NEW YORK OXFORD PARIS SAN DIEGO SAN FRANCISCO SINGAPORE SYDNEY TOKYO % ELSEVIER Newnes is an imprint of Elsevier Newnes Contents

More information

Considerations for Algorithm Selection and C Programming Style for the SRC-6E Reconfigurable Computer

Considerations for Algorithm Selection and C Programming Style for the SRC-6E Reconfigurable Computer Considerations for Algorithm Selection and C Programming Style for the SRC-6E Reconfigurable Computer Russ Duren and Douglas Fouts Naval Postgraduate School Abstract: The architecture and programming environment

More information

Memory Systems IRAM. Principle of IRAM

Memory Systems IRAM. Principle of IRAM Memory Systems 165 other devices of the module will be in the Standby state (which is the primary state of all RDRAM devices) or another state with low-power consumption. The RDRAM devices provide several

More information

ESL design with the Agility Compiler for SystemC

ESL design with the Agility Compiler for SystemC ESL design with the Agility Compiler for SystemC SystemC behavioral design & synthesis Steve Chappell & Chris Sullivan Celoxica ESL design portfolio Complete ESL design environment Streaming Video Processing

More information

With Fixed Point or Floating Point Processors!!

With Fixed Point or Floating Point Processors!! Product Information Sheet High Throughput Digital Signal Processor OVERVIEW With Fixed Point or Floating Point Processors!! Performance Up to 14.4 GIPS or 7.7 GFLOPS Peak Processing Power Continuous Input

More information

Today. Comments about assignment Max 1/T (skew = 0) Max clock skew? Comments about assignment 3 ASICs and Programmable logic Others courses

Today. Comments about assignment Max 1/T (skew = 0) Max clock skew? Comments about assignment 3 ASICs and Programmable logic Others courses Today Comments about assignment 3-43 Comments about assignment 3 ASICs and Programmable logic Others courses octor Per should show up in the end of the lecture Mealy machines can not be coded in a single

More information

machine cycle, the CPU: (a) Fetches an instruction, (b) Decodes the instruction, (c) Executes the instruction, and (d) Stores the result.

machine cycle, the CPU: (a) Fetches an instruction, (b) Decodes the instruction, (c) Executes the instruction, and (d) Stores the result. Central Processing Unit (CPU) A processor is also called the CPU, and it works hand in hand with other circuits known as main memory to carry out processing. The CPU is the "brain" of the computer; it

More information

The Use of Cloud Computing Resources in an HPC Environment

The Use of Cloud Computing Resources in an HPC Environment The Use of Cloud Computing Resources in an HPC Environment Bill, Labate, UCLA Office of Information Technology Prakashan Korambath, UCLA Institute for Digital Research & Education Cloud computing becomes

More information

Design Methodologies. Full-Custom Design

Design Methodologies. Full-Custom Design Design Methodologies Design styles Full-custom design Standard-cell design Programmable logic Gate arrays and field-programmable gate arrays (FPGAs) Sea of gates System-on-a-chip (embedded cores) Design

More information

Reconfigurable Computing - (RC)

Reconfigurable Computing - (RC) Reconfigurable Computing - (RC) Yogindra S Abhyankar Hardware Technology Development Group, C-DAC Outline Motivation Architecture Applications Performance Summary HPC Fastest Growing Sector HPC, the massive

More information

Early Models in Silicon with SystemC synthesis

Early Models in Silicon with SystemC synthesis Early Models in Silicon with SystemC synthesis Agility Compiler summary C-based design & synthesis for SystemC Pure, standard compliant SystemC/ C++ Most widely used C-synthesis technology Structural SystemC

More information

FPGA Based Digital Design Using Verilog HDL

FPGA Based Digital Design Using Verilog HDL FPGA Based Digital Design Using Course Designed by: IRFAN FAISAL MIR ( Verilog / FPGA Designer ) irfanfaisalmir@yahoo.com * Organized by Electronics Division Integrated Circuits Uses for digital IC technology

More information

Introduction to Field Programmable Gate Arrays

Introduction to Field Programmable Gate Arrays Introduction to Field Programmable Gate Arrays Lecture 1/3 CERN Accelerator School on Digital Signal Processing Sigtuna, Sweden, 31 May 9 June 2007 Javier Serrano, CERN AB-CO-HT Outline Historical introduction.

More information

Field Program mable Gate Arrays

Field Program mable Gate Arrays Field Program mable Gate Arrays M andakini Patil E H E P g r o u p D H E P T I F R SERC school NISER, Bhubaneshwar Nov 7-27 2017 Outline Digital electronics Short history of programmable logic devices

More information

FPGAs: FAST TRACK TO DSP

FPGAs: FAST TRACK TO DSP FPGAs: FAST TRACK TO DSP Revised February 2009 ABSRACT: Given the prevalence of digital signal processing in a variety of industry segments, several implementation solutions are available depending on

More information

Fast implementation and fair comparison of the final candidates for Advanced Encryption Standard using Field Programmable Gate Arrays

Fast implementation and fair comparison of the final candidates for Advanced Encryption Standard using Field Programmable Gate Arrays Kris Gaj and Pawel Chodowiec Electrical and Computer Engineering George Mason University Fast implementation and fair comparison of the final candidates for Advanced Encryption Standard using Field Programmable

More information

8. Best Practices for Incremental Compilation Partitions and Floorplan Assignments

8. Best Practices for Incremental Compilation Partitions and Floorplan Assignments 8. Best Practices for Incremental Compilation Partitions and Floorplan Assignments QII51017-9.0.0 Introduction The Quartus II incremental compilation feature allows you to partition a design, compile partitions

More information

S2C K7 Prodigy Logic Module Series

S2C K7 Prodigy Logic Module Series S2C K7 Prodigy Logic Module Series Low-Cost Fifth Generation Rapid FPGA-based Prototyping Hardware The S2C K7 Prodigy Logic Module is equipped with one Xilinx Kintex-7 XC7K410T or XC7K325T FPGA device

More information

Integrating FPGAs in High Performance Computing A System, Architecture, and Implementation Perspective

Integrating FPGAs in High Performance Computing A System, Architecture, and Implementation Perspective Integrating FPGAs in High Performance Computing A System, Architecture, and Implementation Perspective Nathan Woods XtremeData FPGA 2007 Outline Background Problem Statement Possible Solutions Description

More information

The Cray XD1. Technical Overview. Amar Shan, Senior Product Marketing Manager. Cray XD1. Cray Proprietary

The Cray XD1. Technical Overview. Amar Shan, Senior Product Marketing Manager. Cray XD1. Cray Proprietary The Cray XD1 Cray XD1 Technical Overview Amar Shan, Senior Product Marketing Manager Cray Proprietary The Cray XD1 Cray XD1 Built for price performance 30 times interconnect performance 2 times the density

More information

FPGA Provides Speedy Data Compression for Hyperspectral Imagery

FPGA Provides Speedy Data Compression for Hyperspectral Imagery FPGA Provides Speedy Data Compression for Hyperspectral Imagery Engineers implement the Fast Lossless compression algorithm on a Virtex-5 FPGA; this implementation provides the ability to keep up with

More information

Developing a Data Driven System for Computational Neuroscience

Developing a Data Driven System for Computational Neuroscience Developing a Data Driven System for Computational Neuroscience Ross Snider and Yongming Zhu Montana State University, Bozeman MT 59717, USA Abstract. A data driven system implies the need to integrate

More information

Employing Multi-FPGA Debug Techniques

Employing Multi-FPGA Debug Techniques Employing Multi-FPGA Debug Techniques White Paper Traditional FPGA Debugging Methods Debugging in FPGAs has been difficult since day one. Unlike simulation where designers can see any signal at any time,

More information

High-Performance Integer Factoring with Reconfigurable Devices

High-Performance Integer Factoring with Reconfigurable Devices FPL 2010, Milan, August 31st September 2nd, 2010 High-Performance Integer Factoring with Reconfigurable Devices Ralf Zimmermann, Tim Güneysu, Christof Paar Horst Görtz Institute for IT-Security Ruhr-University

More information

RTL Coding General Concepts

RTL Coding General Concepts RTL Coding General Concepts Typical Digital System 2 Components of a Digital System Printed circuit board (PCB) Embedded d software microprocessor microcontroller digital signal processor (DSP) ASIC Programmable

More information

Computer Organization

Computer Organization INF 101 Fundamental Information Technology Computer Organization Assistant Prof. Dr. Turgay ĐBRĐKÇĐ Course slides are adapted from slides provided by Addison-Wesley Computing Fundamentals of Information

More information

DESIGN STRATEGIES & TOOLS UTILIZED

DESIGN STRATEGIES & TOOLS UTILIZED CHAPTER 7 DESIGN STRATEGIES & TOOLS UTILIZED 7-1. Field Programmable Gate Array The internal architecture of an FPGA consist of several uncommitted logic blocks in which the design is to be encoded. The

More information

INTRODUCTION TO FIELD PROGRAMMABLE GATE ARRAYS (FPGAS)

INTRODUCTION TO FIELD PROGRAMMABLE GATE ARRAYS (FPGAS) INTRODUCTION TO FIELD PROGRAMMABLE GATE ARRAYS (FPGAS) Bill Jason P. Tomas Dept. of Electrical and Computer Engineering University of Nevada Las Vegas FIELD PROGRAMMABLE ARRAYS Dominant digital design

More information

FABRICATION TECHNOLOGIES

FABRICATION TECHNOLOGIES FABRICATION TECHNOLOGIES DSP Processor Design Approaches Full custom Standard cell** higher performance lower energy (power) lower per-part cost Gate array* FPGA* Programmable DSP Programmable general

More information

ALTERA FPGAs Architecture & Design

ALTERA FPGAs Architecture & Design ALTERA FPGAs Architecture & Design Course Description This course provides all theoretical and practical know-how to design programmable devices of ALTERA with QUARTUS-II design software. The course combines

More information

Memory and Programmable Logic

Memory and Programmable Logic Memory and Programmable Logic Memory units allow us to store and/or retrieve information Essentially look-up tables Good for storing data, not for function implementation Programmable logic device (PLD),

More information

System-on Solution from Altera and Xilinx

System-on Solution from Altera and Xilinx System-on on-a-programmable-chip Solution from Altera and Xilinx Xun Yang VLSI CAD Lab, Computer Science Department, UCLA FPGAs with Embedded Microprocessors Combination of embedded processors and programmable

More information

FPGA architecture and design technology

FPGA architecture and design technology CE 435 Embedded Systems Spring 2017 FPGA architecture and design technology Nikos Bellas Computer and Communications Engineering Department University of Thessaly 1 FPGA fabric A generic island-style FPGA

More information

FPGA Solutions: Modular Architecture for Peak Performance

FPGA Solutions: Modular Architecture for Peak Performance FPGA Solutions: Modular Architecture for Peak Performance Real Time & Embedded Computing Conference Houston, TX June 17, 2004 Andy Reddig President & CTO andyr@tekmicro.com Agenda Company Overview FPGA

More information

An Introduction to Programmable Logic

An Introduction to Programmable Logic Outline An Introduction to Programmable Logic 3 November 24 Transistors Logic Gates CPLD Architectures FPGA Architectures Device Considerations Soft Core Processors Design Example Quiz Semiconductors Semiconductor

More information

H100 Series FPGA Application Accelerators

H100 Series FPGA Application Accelerators 2 H100 Series FPGA Application Accelerators Products in the H100 Series PCI-X Mainstream IBM EBlade H101-PCIXM» HPC solution for optimal price/performance» PCI-X form factor» Single Xilinx Virtex 4 FPGA

More information

IMPLICIT+EXPLICIT Architecture

IMPLICIT+EXPLICIT Architecture IMPLICIT+EXPLICIT Architecture Fortran Carte Programming Environment C Implicitly Controlled Device Dense logic device Typically fixed logic µp, DSP, ASIC, etc. Implicit Device Explicit Device Explicitly

More information

A Model for Experiment Setups on FPGA Development Boards

A Model for Experiment Setups on FPGA Development Boards Bachelor Informatica Informatica Universiteit van Amsterdam A Model for Experiment Setups on FPGA Development Boards Matthijs Bos 2016-08-17 Supervisors: A. van Inge & T. Walstra, University of Amsterdam

More information

Reconfigurable Computing. Design and Implementation. Chapter 4.1

Reconfigurable Computing. Design and Implementation. Chapter 4.1 Design and Implementation Chapter 4.1 Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software-Co-Design In System Integration System Integration Rapid Prototyping Reconfigurable devices (RD) are usually

More information

Cray events. ! Cray User Group (CUG): ! Cray Technical Workshop Europe:

Cray events. ! Cray User Group (CUG): ! Cray Technical Workshop Europe: Cray events! Cray User Group (CUG):! When: May 16-19, 2005! Where: Albuquerque, New Mexico - USA! Registration: reserved to CUG members! Web site: http://www.cug.org! Cray Technical Workshop Europe:! When:

More information

VHX - Xilinx - FPGA Programming in VHDL

VHX - Xilinx - FPGA Programming in VHDL Training Xilinx - FPGA Programming in VHDL: This course explains how to design with VHDL on Xilinx FPGAs using ISE Design Suite - Programming: Logique Programmable VHX - Xilinx - FPGA Programming in VHDL

More information

FPGA based Design of Low Power Reconfigurable Router for Network on Chip (NoC)

FPGA based Design of Low Power Reconfigurable Router for Network on Chip (NoC) FPGA based Design of Low Power Reconfigurable Router for Network on Chip (NoC) D.Udhayasheela, pg student [Communication system],dept.ofece,,as-salam engineering and technology, N.MageshwariAssistant Professor

More information

Spartan-3E FPGA Design Guide for prototyping and production environment

Spartan-3E FPGA Design Guide for prototyping and production environment 3ème conférence Internationale des énergies renouvelables CIER-2015 Proceedings of Engineering and Technology - PET Spartan-3E FPGA Design Guide for prototyping and production environment Mohammed BOUDJEMA

More information

5. ReAl Systems on Silicon

5. ReAl Systems on Silicon THE REAL COMPUTER ARCHITECTURE PRELIMINARY DESCRIPTION 69 5. ReAl Systems on Silicon Programmable and application-specific integrated circuits This chapter illustrates how resource arrays can be incorporated

More information

Lecture 2 Hardware Description Language (HDL): VHSIC HDL (VHDL)

Lecture 2 Hardware Description Language (HDL): VHSIC HDL (VHDL) Lecture 2 Hardware Description Language (HDL): VHSIC HDL (VHDL) Pinit Kumhom VLSI Laboratory Dept. of Electronic and Telecommunication Engineering (KMUTT) Faculty of Engineering King Mongkut s University

More information

Hardware Implementation of TRaX Architecture

Hardware Implementation of TRaX Architecture Hardware Implementation of TRaX Architecture Thesis Project Proposal Tim George I. Project Summery The hardware ray tracing group at the University of Utah has designed an architecture for rendering graphics

More information

Universal Serial Bus Host Interface on an FPGA

Universal Serial Bus Host Interface on an FPGA Universal Serial Bus Host Interface on an FPGA Application Note For many years, designers have yearned for a general-purpose, high-performance serial communication protocol. The RS-232 and its derivatives

More information

Using FPGAs in Supercomputing Reconfigurable Supercomputing

Using FPGAs in Supercomputing Reconfigurable Supercomputing Using FPGAs in Supercomputing Reconfigurable Supercomputing Why FPGAs? FPGAs are 10 100x faster than a modern Itanium or Opteron Performance gap is likely to grow further in the future Several major vendors

More information

Chapter 2. FPGA and Dynamic Reconfiguration ...

Chapter 2. FPGA and Dynamic Reconfiguration ... Chapter 2 FPGA and Dynamic Reconfiguration... This chapter will introduce a family of silicon devices, FPGAs exploring their architecture. This work is based on these particular devices. The chapter will

More information

Hardware Oriented Security

Hardware Oriented Security 1 / 20 Hardware Oriented Security SRC-7 Programming Basics and Pipelining Miaoqing Huang University of Arkansas Fall 2014 2 / 20 Outline Basics of SRC-7 Programming Pipelining 3 / 20 Framework of Program

More information

Reconfigurable Computing. Introduction

Reconfigurable Computing. Introduction Reconfigurable Computing Tony Givargis and Nikil Dutt Introduction! Reconfigurable computing, a new paradigm for system design Post fabrication software personalization for hardware computation Traditionally

More information

Actel s SX Family of FPGAs: A New Architecture for High-Performance Designs

Actel s SX Family of FPGAs: A New Architecture for High-Performance Designs Actel s SX Family of FPGAs: A New Architecture for High-Performance Designs A Technology Backgrounder Actel Corporation 955 East Arques Avenue Sunnyvale, California 94086 April 20, 1998 Page 2 Actel Corporation

More information

Product Obsolete/Under Obsolescence

Product Obsolete/Under Obsolescence APPLICATION NOTE Adapting ASIC Designs for Use with Spartan FPGAs XAPP119 July 20, 1998 (Version 1.0) Application Note by Kim Goldblatt Summary Spartan FPGAs are an exciting, new alternative for implementing

More information

ECE 485/585 Microprocessor System Design

ECE 485/585 Microprocessor System Design Microprocessor System Design Lecture 4: Memory Hierarchy Memory Taxonomy SRAM Basics Memory Organization DRAM Basics Zeshan Chishti Electrical and Computer Engineering Dept Maseeh College of Engineering

More information

Teaching Computer Architecture with FPGA Soft Processors

Teaching Computer Architecture with FPGA Soft Processors Teaching Computer Architecture with FPGA Soft Processors Dr. Andrew Strelzoff 1 Abstract Computer Architecture has traditionally been taught to Computer Science students using simulation. Students develop

More information

6.9. Communicating to the Outside World: Cluster Networking

6.9. Communicating to the Outside World: Cluster Networking 6.9 Communicating to the Outside World: Cluster Networking This online section describes the networking hardware and software used to connect the nodes of cluster together. As there are whole books and

More information

Chapter 1: Introduction. Operating System Concepts 9 th Edit9on

Chapter 1: Introduction. Operating System Concepts 9 th Edit9on Chapter 1: Introduction Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 Objectives To describe the basic organization of computer systems To provide a grand tour of the major

More information

ECC1 Core. Elliptic Curve Point Multiply and Verify Core. General Description. Key Features. Applications. Symbol

ECC1 Core. Elliptic Curve Point Multiply and Verify Core. General Description. Key Features. Applications. Symbol General Description Key Features Elliptic Curve Cryptography (ECC) is a public-key cryptographic technology that uses the mathematics of so called elliptic curves and it is a part of the Suite B of cryptographic

More information

Motivation for Parallelism. Motivation for Parallelism. ILP Example: Loop Unrolling. Types of Parallelism

Motivation for Parallelism. Motivation for Parallelism. ILP Example: Loop Unrolling. Types of Parallelism Motivation for Parallelism Motivation for Parallelism The speed of an application is determined by more than just processor speed. speed Disk speed Network speed... Multiprocessors typically improve the

More information

Reconfigurable Computing. Design and implementation. Chapter 4.1

Reconfigurable Computing. Design and implementation. Chapter 4.1 Reconfigurable Computing Design and implementation Chapter 4.1 Prof. Dr.-Ing. Jürgen Teich Lehrstuhl für Hardware-Software Software-Co-Design Reconfigurable Computing In System Integration Reconfigurable

More information

Chapter 9: Integration of Full ASIP and its FPGA Implementation

Chapter 9: Integration of Full ASIP and its FPGA Implementation Chapter 9: Integration of Full ASIP and its FPGA Implementation 9.1 Introduction A top-level module has been created for the ASIP in VHDL in which all the blocks have been instantiated at the Register

More information