eFPGA: How They Will Change the Future of Hardware

eFPGA

The idea of having an FPGA integrated into a processor as if it were just another unit is not a novelty, eFPGAs have existed for years, but the purchase of Xilinx by AMD a few weeks ago together with that of Altera a couple of years ago years by Intel open the possibility of one or more FPGAs within SoCs, CPUs and GPUs.

FPGAs are a type of unit that is not very common in CPUs and GPUs, but these are already beginning to be integrated into SoCs, CPUs and GPUs. The reason? The chip area is becoming more and more expensive and space needs to be optimized. That is why architects have to think of ways in which each transistor counts and that there are no unused dead spaces, especially when it comes to I / O interfaces.

This is where eFPGAs come in, a solution that consists of integrating program logic in the form of an FPGA into a SoC, a CPU or a GPU, with the idea of maximizing the area of the chip at all times and being able to adapt it to the needs of each specific configuration.

What is an FPGA?

FPGA arquitectura

An FPGA is a matrix of programmable logic gates, which can be configured in any way so that said matrix works like a specific chip. They are used in environments where dedicated hardware is necessary but are so specialized that mass manufacturing is not profitable, as well as for prototyping new functions of future processors.

FPGAs are made up of several blocks of configurable logic, which are interconnected. These differ from other processors by the fact that the logic of their circuitry cannot be changed in the rest. You cannot transform a CPU into a GPU after its manufacture, but it can be done with an FPGA by loading a configuration file that reprograms its logic gates.

Obviously, this programming capacity has several counterparts, the first one is that it cannot reach the clock speeds of the chips that are FPGAs, the second is that the excess of circuitry due to the level of configuration of these makes a greater need number of transistors and thus area.

How is an eFPGA implemented?

eFPGA

The concept is called eFPGA or embedded FPGA. It consists of integrating an FPGA as part of a SoC and therefore not as a separate chip, which opens the possibility of the adoption of this type of units by the general market.

As in an integrated GPU, the outer ring that communicates the dedicated FPGA with the outside is lost as this is common for the entire SoC. Which reduces the size of the SoC by 25% compared to its dedicated version.

eFPGA vs FPGA

The advantage of the eFPGA is that by using the same communication speed as the rest of the SoC elements, it gains in speed when communicating. An eFPGA, being on the same processor and using the same cabling to communicate, will work much faster than having a standard FPGA separated from the CPU, which represents an increase in performance compared to the eFPGA, not a dedicated FPGA, this It allows us to do things that are not possible with a standard FPGA, but at the same time we are limited in what can be done in an eFPGA as there is not as much space as in an FPGA.

This means that at the moment, in order to implement an FPGA as an integral part of a system, there are two scenarios. The first is the eFPGA, the second is the FPGA as chiplet, which is a separate issue and covers very different markets. For example, you can consider creating a neural network for AI with a non-embedded FPGA, which you cannot do in an eFPGA.

eFPGA for I / O on CPUs and PC GPUs.

eFPGA

The most obvious application is I / O interfaces, for example we can implement a USB interface with an FPGA and a SerDES and reconfigure both to function as a SATA interface. We can also do the same with an FPGA and a radio connected to it to, for example, convert a WiFi Direct interface into a Bluetooth one depending on the need for the configuration. The idea is not that the end user makes these changes, but rather that it is the assembler or manufacturer of the hardware component that makes these changes.

It is also possible to implement it in a GPU, for example it may be that screens with DP 2.0 support appear and your GPU has support only for DP 1.4, but thanks to the fact that the video driver has been implemented in an FPGA this can be reprogrammed and gain support for the new video output. It may also be that you have purchased the GPU for mining and you are not interested in displaying graphics, in that case you can reconfigure the FPGA of the screen output in a cryptographic processor or even a small ASIC to speed up mining.

In general, eFPGAs can be used to replace external interfaces on a processor and often found on the peripheral without having to remake the chip. Not only input and output interfaces, but also RAM, for example going from a DDR4 interface to an LPDDR4 without having to manufacture two different chips.

eFPGA integrated into the core of a CPU

Patente eFPGA AMD

One of the ways in which processors will increase their performance in the future is going to be through focusing this on common and repetitive parts of the code. Another solution would be the acceleration of the heavy parts of the code that would be executed by specialized units.

Just almost simultaneously with the purchase of Xilinx, AMD published a patent in which it spoke of the use of FPGAs for the acceleration of certain instructions, which would go to a further level of integration. That of the FPGA already inside the CPU and not as an additional element of the SoC.

  • A CPU can include one or more programmable execution units, which can be reconfigured to execute all kinds of instructions.
  • Said execution units are eFPGA, the part of the CPU in charge of the data capture and decoding stages are common to all CPUs and are in charge of distributing the instructions to be executed to the eFPGA that act as the execution unit.
  • When the processor loads a thread, it also loads the type of execution units that it requires to execute this, so the eFPGAs are configured as such units thanks to the internal configuration files.
  • The eFPGAs can be reprogrammed on the fly and each one for a different function.

For example, a program may use integer units a lot but not the SIMD unit, because if the execution units are implemented as eFPGA we can reconfigure the one that was as a SIMD unit to act as an additional integer unit.