21C3 Schedule Release 1.1.7

21st Chaos Communication Congress
Lectures and workshops

Speakers
Picture of Ludwig Jaffé Ludwig Jaffé
Schedule
Day 3
Location Saal 3
Start Time 12:00 h
Duration 01:00
INFO
ID 111
Type Lecture
Track Hacking
Language english
FEEDBACK

The Kernel Accelerator Device

Reconfigurable computing for the kernel

KAD is an interdisciplinary development project which consists of kernel driver programming, fpga programming (VHDL/Verilog) and hardware development. There is no working KAD at the moment, but our aim is to develop such a device under the GPL with much support from everyone who likes to do so. The development will be carried out from bottom up by integrating existing components into the kad.

KAD is a Kernel Accelerator Device which brings reconfigurable computing to the Linux Kernel. (And hopefully for other kernels if we find people who code support for other Platforms like *BSD)

The KAD is a hardware based accelerator card which accelerates computers by executing recurring time consuming tasks in hardware. The KAD-hardware is a pci-slot card with at least one reconfigurable FPGA (field programmable gate array) on it. An additional fpga is used as pci-bridge which is needed to handle the communication and the fpga reconfiguration tasks. Depending on the task which is to be accelerated, the kernel-module to be used will load the appropriate open-source fpga-firmware into the device (configuration). For example if one wants to accelerate aes drive encryption she simply loads the kad_aes kernel module which does the computation intensive parts in the KAD. So the CPU has more time for other things.

KAD is an interdisciplinary development project which consists of kernel driver programming, fpga programming (VHDL/Verilog) and hardware development. There is no working KAD at the moment, but our aim is to develop such a device under the GPL with much support from everyone who likes to do so. The development will be carried out from bottom up by integrating existing components into the kad.

The first part of the Lecture will present the Architecture and the Techlologies behind the KAD. The second part will discuss the concept and possible alternatives and variants.

What is the KAD?

The KAD is a FPGA-based Kernel Accelerator Device. It consists of 3 Elements:

  1. The PCI-Card-Hardware.
  2. IP from www.opencores.org
  3. Kernel modules which are to be written.

Many things we like are too slow. For example Loop-AES. Wanting a performant server one buys High-Speed(TM) SCSI-Drives with 15000rpm and U360-SCSI interface. Beeing paranoid, we encrypt everything on our server using loop-aes. The result: Although having a dual processor machine running at 2GHz each, file access becomes deadly slow. This is because of the software implementation of the AES-Alogrithm. It is slow - even beeing coded in assembler. And the worst thing is: we need to execute the algorithm for every little file transaction. Imagine this on the / partition of a system running some applications. Having a KAD, the situation would be as follows: Our init script says insmod /(or modprobe) kadaes and the kadaes module will be loaded into the linux kernel. The kernel module will programm the reconfigrurable FPGA on the KAD to do the computing intensive job in hardware. So after programming the fpga the kernel module does only need to control the communication between the specially programmed fpga and the computers' main memory. Doing memory mapped I/O we simply write the data we want to process into the fpga on the KAD an read the processed Data from the KAD. So we gain much performance as the computing effort is comparable to the effort talking to a scsi-controller. In Result, the paranoid server regains nearly all of its performance he had before he became paranoid. He now has both needs satisfied: Performance and Paranoia...

But the KAD is not only limited to encryption. We can code modules to do all the fancy stuff we dream of, when we ask for more computing power...

The only limitation is that it is some effort to programm a KAD-module as uses the combined arts of kernel programming and vhdl-coding. So we first want to accelerate things that run all the time we run our computer - like file system crypto.

About the Lecture

The lecture is split into two parts and will cover the following topics

The KAD and its technologies

  • What is the KAD?
  • Why do we want the KAD?
  • How does it work?
    • What is so special about FPGAs?
    • What does reconfigurable computing?

Discussion about the KAD - get involved

  • Discussion about
    • Open-Source Hardware
    • opencores.org
    • gnu eda vs. free closed source eda
  • The Architecture
    • wishbone SoC-Bus
    • pci2wishbone bridge
    • reconfiguration of SRAM based FPGA
  • How can I participate?
  • Free Questions and Answers