• No results found

Overview of FPGA-based Processors

Verilog 2-state vs. 4-state logic

65. Overview of FPGA-based Processors

time_t seconds;

seconds = time (NULL);

return seconds;

}

For long simulations the time can be measured manually, where the accuracy of measurement start and end is less important.

ModelSim simulator provides a simstat command that reports various statistics about the current simulation, such as total allocated and used memory, cumulative “wall clock time” and processor time, the number of context swaps, and page faults.

65. Overview of FPGA-based Processors

Embedded processing became an important segment of the FPGA application ecosystem. FPGA speed and capacity reached the point where it can accommodate multiple high-performance processor cores running a full-featured embedded operating system such as Linux, a network protocol stack, or a video processing application.

The trend is tighter integration of multi-core embedded processors and peripherals with the FPGA fabric, such as new Xilinx Zynq-7000 system-on-chip (SoC) platform.

Comparing it to the high-end stand alone embedded processors, FPGA-based processors and microcontrollers it falls behind in performance. However, using an FPGA-based processing solution is often advantageous when the highest possible performance is not required by the application or is less important than other factors. Using an FPGA-based processor greatly simplifies board design by requiring less components and a smaller PCB area. Among other advantages are tighter integration with the rest of the FPGA logic, higher level of configurability and customization, wider choice of peripheral devices and IP cores, easier addition of

hardware acceleration co-processors and multiple processor cores. Another important consideration is an integrated build flow.

There are several metrics used to describe processor performance metrics. Most frequently used are Million Instructions per Second (MIPS), Dhrystone, Dhrystone MIPS (DMIPS), and DMIPS/MHz. Dhrystone refers to a synthetic computing benchmark program intended to be representative of a general processor performance. Unlike other processor benchmark software, using Dhrystone benchmark is free. Dhrystone provides a more meaningful representation of the CPU performance results compared to MIPS.

Another popular representation of the Dhrystone benchmark is the DMIPS (Dhrystone MIPS), obtained when the Dhrystone score is divided by 1757. A normalized DMIPS/MHz metrics is frequently used to compare the performance of different processors.

The following figure illustrates the architecture of a chip that combines a high-performance Intel Atom processor and Altera FPGA fabric. The processor has 512Kbyte cache and running at 1.3GHz. The FPGA is connected to the processor using PCI Express x1 link.

Figure 1: Combined Intel Atom processor and Altera FPGA (source: Intel Atom E6x5C datasheet)

Many applications, such as those that need to perform fast processing of the data, require a high level of parallelization. The following figure shows an example of architecture that utilizes multiple 32-bit Xilinx Microblaze processors running in parallel to read and process data sent over a 256-bit bus. Those types of applications take advantage of the fact that reading data from external memory is several times faster than processing it on a single Microblaze.

Figure 2: Using parallel Microblaze processors

Each of the sixteen processors is connected to an embedded RAM, which contains the code and data sections. The logic utilization of such architecture can be relatively small. Microblaze processors can have a basic configuration without caches and peripheral devices, and run a single application optimized for code size. The scheduler reads the data from the external memory over a 256-bit bus, and schedules jobs among sixteen processors in a balanced manner to keep them evenly utilized.

Another application example is a single-core Microblaze processor that implements a USB Host Controller for a custom device. The block diagram of that application is shown in the following figure.

Figure 3: A single Microblaze processor application

This application might be running an embedded operating system and a USB protocol stack, and requires a relatively large amount of FPGA embedded memory. However, having the highest performance is not necessary to utilize the full capacity of the USB.

Processors supported by Xilinx FPGAs Zynq-7000 Extensible Processing Platform www.xilinx.com/zynq

Xilinx Zynq-7000 Extensible Processing Platform is a product family that includes a dual-core ARM Cortex-A9 processor, peripheral devices, and programmable FPGA fabric.

Processor: MicroBlaze

http://www.xilinx.com/support/documentation/sw_manuals/mb_ref_guide.pdf http://www.xilinx.com/products/design_resources/proc_central/microblaze_faq.pdf

MicroBlaze is a soft-core processor IP core that is implemented using FPGA logic resources. It has a 32-bit RISC architecture with an instruction set optimized for embedded applications. MicroBlaze is highly configurable with over 70 configuration options, a wide combination of peripherals, memory and interfaces. It can be configured as a very small footprint microcontroller, up to a high performance processor running Linux. Configuration features include Memory Management Unit (MMU), configurable-size data and instruction caches, and JTAG control for debug. Microblaze logic utilization requirement ranges from between 300 and 2500 Virtex-6 slices.

Microblaze offers several interface choices to connect it to peripheral devices and hardware acceleration co-processors. Starting from version 8.0, MicroBlaze supports a high performance AXI4 interface. AXI4 can be used to connect both caches and peripherals.

There is a dedicated Fast Simplex Link (FSL) for connecting low-latency co-processors. Memory can be connected using Local Memory Bus (LMB). Microblaze also supports legacy PLB bus for connecting non-cache peripherals.

Microblaze can have a single precision Floating Point Unit (FPU), optimized for performance and low latency.

Processor: PowerPC

Some Virtex-4 and Virtex-5 FPGA families include an embedded PowerPC processor. The processor is not available in Virtex-6 and Spartan-6 families, because Xilinx transitions to ARM processors in the next generation FPGAs.

Processor: OpenRISC License: LGPL

http://opencores.org/project,or1k http://opencores.org/openrisc,or1200

OpenRISC project provides an open source implementation of a 32- and 64-bit RISC processor architecture with DSP features, and a complete set of open source software development tools, libraries, operating systems and applications. Reported logic utilization on Virtex-5 FPGAs ranges between 500 and 1500 slices.

There are several other open source processors in different stages of development available on the OpenCores.org website.

The following table summarizes key performance characteristics of different processors.

Table 1: Processor performance comparison

Processor Frequency (MHz) DMIPS DMIPS/MHz Number of cores

Zynq-7000 800 n/a n/a 2

Microblaze 106-235 100-280 0.95-1.30 1-8**

OpenRISC OR1200 60 50 0.83 1

Intel Atom E6xx 600-1600 717-2462 1.2 – 1.55* 1-2

* Not official numbers. The values are reported by third parties.

** Microblaze can have up to eight cores sharing the same bus. The total number of stand-alone cores is limited by the amount of available FPGA logic and memory resources. The Microblaze Debug Module (MDM) can support up to eight processors at a time.

Intel Atom E6xx is provided as an example of a high-end stand alone embedded processor, and shows how it performs against its FPGA-based counterparts.

Resources

[1] Xilinx embedded processing portal

http://www.xilinx.com/technology/embedded.htm [2] Intel Atom processor E6xx series

http://edc.intel.com/Platforms/Atom-E6xx