All of lore.kernel.org
 help / color / mirror / Atom feed
* Custom Hardware Acceleration
@ 2006-01-26  8:52 Jad Naous
  2006-01-26 20:48 ` Jon Mason
       [not found] ` <43D937BD.1000309@BSDLazarus.com>
  0 siblings, 2 replies; 7+ messages in thread
From: Jad Naous @ 2006-01-26  8:52 UTC (permalink / raw)
  To: xen-devel

Hi all,
I am exploring the possibility of designing a custom hardware 
acceleration solution using an ASIC or an FPGA to accelerate some part 
of Xen. Basically, I am looking for some part of the code that could be 
built in hardware to make it faster. Does anybody know where I could get 
some statistics on the code, such as the most called functions, the most 
parallelizable functions, etc... If you could think of something that 
would be useful in HW I would be very interested to know.
Thanks,
Jad.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: Custom Hardware Acceleration
@ 2006-01-26 15:57 Petersson, Mats
  0 siblings, 0 replies; 7+ messages in thread
From: Petersson, Mats @ 2006-01-26 15:57 UTC (permalink / raw)
  To: Jad Naous, xen-devel

> -----Original Message-----
> From: xen-devel-bounces@lists.xensource.com 
> [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Jad Naous
> Sent: 26 January 2006 08:52
> To: xen-devel@lists.xensource.com
> Subject: [Xen-devel] Custom Hardware Acceleration
> 
> Hi all,
> I am exploring the possibility of designing a custom hardware 
> acceleration solution using an ASIC or an FPGA to accelerate 
> some part of Xen. Basically, I am looking for some part of 
> the code that could be built in hardware to make it faster. 
> Does anybody know where I could get some statistics on the 
> code, such as the most called functions, the most 
> parallelizable functions, etc... If you could think of 
> something that would be useful in HW I would be very 
> interested to know.
> Thanks,
> Jad.

Xen's "load" on the system is going to be mainly in performing CPU tasks
for something that in the non-Xen case would be handled by the ordinary
hardware/microprocessor itself, such a s trapping memory mapped IO
acccesses, IOIO accesses or page-table translation (using the "Shadow
page-table" scheme). 

Unfortunately, unless your ASIC becomes part of the CPU itself, I think
it's unlikely that you'd be able to speed things up noticably... 

The speed of, for example, block device accesses, is very much dependant
on the speed of transfer to/from the block-device, and very little on
the speed of the operations added by Xen (although admittedly, adding a
layer of software between the requesting software and the hardware
servicing the request will ALWAYS add some delay, and you can only ADD
delay, never take it away...)

Unless of course, you want to build a very complex device, such as a
multi-guest capable graghics card (one that can draw to multiple display
surfaces at any given time and switch between these based on some
software/hardware switching mechanism). A company called Level5 has a
network card that supports multiple guests... 

I'd be very interested in hearing a differign view, of course. 

[Note that I work for AMD, but I'm a Software engineer, so I don't
necessarily understand all of the Hardware Implications...]

--
Mats

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Custom Hardware Acceleration
  2006-01-26  8:52 Custom Hardware Acceleration Jad Naous
@ 2006-01-26 20:48 ` Jon Mason
  2006-01-30 20:41   ` Jad Naous
       [not found] ` <43D937BD.1000309@BSDLazarus.com>
  1 sibling, 1 reply; 7+ messages in thread
From: Jon Mason @ 2006-01-26 20:48 UTC (permalink / raw)
  To: Jad Naous; +Cc: xen-devel

On Thu, Jan 26, 2006 at 12:52:29AM -0800, Jad Naous wrote:
> Hi all,
> I am exploring the possibility of designing a custom hardware 
> acceleration solution using an ASIC or an FPGA to accelerate some part 
> of Xen. Basically, I am looking for some part of the code that could be 
> built in hardware to make it faster. Does anybody know where I could get 
> some statistics on the code, such as the most called functions, the most 
> parallelizable functions, etc... If you could think of something that 
> would be useful in HW I would be very interested to know.
> Thanks,
> Jad.

You could make a custom NIC FPGA that can handle paravirtulized network
receive.  The NIC can inspect the destination MAC address of the incomming 
packet, and DMA it to a pre-alloced space in the domU (removing the need
for the page flip).  It will require modifing the xen network drivers,
but should be pretty cool.

Thanks,
Jon

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Custom Hardware Acceleration
       [not found] ` <43D937BD.1000309@BSDLazarus.com>
@ 2006-01-26 21:32   ` Jad Naous
  0 siblings, 0 replies; 7+ messages in thread
From: Jad Naous @ 2006-01-26 21:32 UTC (permalink / raw)
  To: BSD Lazarus, xen-devel

Yes, if I do end up doing it on an FPGA, it would be open-source. 
However, I'm also open to suggestions that don't necessarily end up on a 
separate (from the CPU) standalone ASIC/FPGA, but should be integrated 
into the CPU.

For example, are there any processor instructions (extensions) Xen 
developers would like to see in future processors? I'm doing research 
into either including reprogrammable hardware into a CPU (research 
oriented) or on a separate chip that is close to the CPU 
(implementation), which could then be configured according to the 
application running on it.

Returning to the example I mentioned, the instruction could then be 
implemented on the FPGA so that Xen could use it. Any ideas similar to 
this would also be very interesting. Of course, the instruction idea is 
only limited to on-chip reprogrammable logic, but the concept for an 
off-chip FPGA is similar, but limited in communication speed with the CPU.

Btw, sorry if this is not the appropriate place to post this. I'd be 
happy to move it somewhere else if I'm asked to, but I thought that this 
would be of interest to Xen developers.

Thanks,
Jad.

BSD Lazarus wrote:
> Hello Jad,
> 
> Do you plan on an open-source FPGA design?
> 
> -- David
> 
> Jad Naous wrote:
>> Hi all,
>> I am exploring the possibility of designing a custom hardware 
>> acceleration solution using an ASIC or an FPGA to accelerate some part 
>> of Xen. Basically, I am looking for some part of the code that could 
>> be built in hardware to make it faster. Does anybody know where I 
>> could get some statistics on the code, such as the most called 
>> functions, the most parallelizable functions, etc... If you could 
>> think of something that would be useful in HW I would be very 
>> interested to know.
>> Thanks,
>> Jad.
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>>
>>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: Custom Hardware Acceleration
@ 2006-01-26 23:02 Ian Pratt
  0 siblings, 0 replies; 7+ messages in thread
From: Ian Pratt @ 2006-01-26 23:02 UTC (permalink / raw)
  To: Jad Naous, xen-devel

> Hi all,
> I am exploring the possibility of designing a custom hardware 
> acceleration solution using an ASIC or an FPGA to accelerate 
> some part of Xen. Basically, I am looking for some part of 
> the code that could be built in hardware to make it faster. 
> Does anybody know where I could get some statistics on the 
> code, such as the most called functions, the most 
> parallelizable functions, etc... If you could think of 
> something that would be useful in HW I would be very 
> interested to know.

You might like to take a look at the following paper, which Keir and I
wrote in 2000. Although we designed it for a different purpose, it would
work great with Xen and enable direct IO from guests with very low
additional hardware cost.

http://www.cl.cam.ac.uk/users/iap10/gige.ps

Best,
Ian

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Custom Hardware Acceleration
  2006-01-26 20:48 ` Jon Mason
@ 2006-01-30 20:41   ` Jad Naous
  2006-01-30 22:48     ` Jon Mason
  0 siblings, 1 reply; 7+ messages in thread
From: Jad Naous @ 2006-01-30 20:41 UTC (permalink / raw)
  To: Jon Mason, xen-devel



Jon Mason wrote:
> On Thu, Jan 26, 2006 at 12:52:29AM -0800, Jad Naous wrote:
>> Hi all,
>> I am exploring the possibility of designing a custom hardware 
>> acceleration solution using an ASIC or an FPGA to accelerate some part 
>> of Xen. Basically, I am looking for some part of the code that could be 
>> built in hardware to make it faster. Does anybody know where I could get 
>> some statistics on the code, such as the most called functions, the most 
>> parallelizable functions, etc... If you could think of something that 
>> would be useful in HW I would be very interested to know.
>> Thanks,
>> Jad.
> 
> You could make a custom NIC FPGA that can handle paravirtulized network
> receive.  The NIC can inspect the destination MAC address of the incomming 
> packet, and DMA it to a pre-alloced space in the domU (removing the need
> for the page flip).  It will require modifing the xen network drivers,
> but should be pretty cool.
> 
> Thanks,
> Jon

Just wanted to update that we are going to implement the paravirtualized 
NIC on an FPGA, and see if you guys can suggest where to start. We have 
never done any XEN development.
The implementation should be done by the end of March. Are there any 
suggestions on how to make our FPGA implementation as portable as 
possible to other boards? The problem is we might end up using some IP 
cores for our implementation. If we have time, we'd get rid of those.
Thanks,
Jad.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Custom Hardware Acceleration
  2006-01-30 20:41   ` Jad Naous
@ 2006-01-30 22:48     ` Jon Mason
  0 siblings, 0 replies; 7+ messages in thread
From: Jon Mason @ 2006-01-30 22:48 UTC (permalink / raw)
  To: Jad Naous; +Cc: xen-devel

On Mon, Jan 30, 2006 at 12:41:47PM -0800, Jad Naous wrote:
> 
> 
> Jon Mason wrote:
> >On Thu, Jan 26, 2006 at 12:52:29AM -0800, Jad Naous wrote:
> >>Hi all,
> >>I am exploring the possibility of designing a custom hardware 
> >>acceleration solution using an ASIC or an FPGA to accelerate some part 
> >>of Xen. Basically, I am looking for some part of the code that could be 
> >>built in hardware to make it faster. Does anybody know where I could get 
> >>some statistics on the code, such as the most called functions, the most 
> >>parallelizable functions, etc... If you could think of something that 
> >>would be useful in HW I would be very interested to know.
> >>Thanks,
> >>Jad.
> >
> >You could make a custom NIC FPGA that can handle paravirtulized network
> >receive.  The NIC can inspect the destination MAC address of the incoming 
> >packet, and DMA it to a pre-alloced space in the domU (removing the need
> >for the page flip).  It will require modifying the xen network drivers,
> >but should be pretty cool.
> >
> >Thanks,
> >Jon
> 
> Just wanted to update that we are going to implement the paravirtulized 
> NIC on an FPGA, and see if you guys can suggest where to start. We have 
> never done any XEN development.

By "paravirtulized NIC", I assume you mean one that handles the network
receive in hardware (or are there other features you are planning?).

If so, I would think you would need the following things: 
specialized FPGA firmware
custom device driver for FPGA adapter
modified netfront driver (remove page flipping)
modified netback driver

The specialized firmware should have some type of data structure which
contains the MAC address and corresponding DMA address(es) for that
domain.  It should be able to parse the MAC header in the adapter cache
and DMA to the corresponding address (without dropping any packets).

The custom device driver should me able to program the adapter with MAC 
addresses and DMA addresses (as well as perform generic networking device 
driver functionality).

The Xen network drivers (netfront and netback) will have to be modified
to take advantage of this new feature.

I would think you would want to have the basic driver firmware working
as your starting point, then modify it to add the MAC/DMA handling.
Then, modify the xen networking drivers to take advantage.

> The implementation should be done by the end of March. Are there any 

An extremely aggressive schedule.  Let if there is anything I can do to
help.

> suggestions on how to make our FPGA implementation as portable as 
> possible to other boards? The problem is we might end up using some IP 
> cores for our implementation. If we have time, we'd get rid of those.
> Thanks,
> Jad.

Helpfully all of this makes sense.  If not, feel free to ask me to
clarify.

Thanks,
Jon

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-01-30 22:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-26  8:52 Custom Hardware Acceleration Jad Naous
2006-01-26 20:48 ` Jon Mason
2006-01-30 20:41   ` Jad Naous
2006-01-30 22:48     ` Jon Mason
     [not found] ` <43D937BD.1000309@BSDLazarus.com>
2006-01-26 21:32   ` Jad Naous
  -- strict thread matches above, loose matches on Subject: below --
2006-01-26 15:57 Petersson, Mats
2006-01-26 23:02 Ian Pratt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.