oritemis.frc

FPGA vs ASICS

30 posts in this topic

ASIC = application-specific integrated circuit. In general i would guess that the ASIC will be faster but the fpga more flexible since you can correct design flaws in your design or even add features where as an ASIC is set.

Without specifics about the ASIC I couldn't even begin to guess though.

Share this post


Link to post
Share on other sites

Also, custom silicon (ASICs) aren't cheap to manufacture. Or at least they weren't when I looked ages back. Pretty sure it hasn't changed, though.

Share this post


Link to post
Share on other sites

Would be wise to prototype on FPGA and then go to asic?

 

probably a good idea.

 

no idea on current custom ASIC prices sorry.

its not something for the layman to do.

 

if you can get it running on fpga at an acceptable speed, i say use the fpga.

 

what is your project anyways?

Share this post


Link to post
Share on other sites

The last time I heard a price to produce an asic it was a few million dollars, they only make sense if you are making a very large number of copies of a design. Say you need 1 million logic devices for a production run and a suitable fpga is $100, that might make sense for an asic which would be $3 million up front then $20 a copy in large quantity. Total investment is $23 million for asic versus $100 million for fpga. A middle ground is the hardcopy asic from altera, they take a device (I think stratix family) and once you have a working design with the stratix fpga altera will convert that to a custom built asic for you. I don't know the cost but remember hearing it was much cheaper/ easier than building an asic from scratch.

Share this post


Link to post
Share on other sites

probably a good idea.

no idea on current custom ASIC prices sorry.

its not something for the layman to do.

if you can get it running on fpga at an acceptable speed, i say use the fpga.

what is your project anyways?

It's a trade box to be colocated on an exchange, so it needs to be the fastest possible

Share this post


Link to post
Share on other sites

feel free to post details of what you are trying to do, and i am sure someone more knowledgeable than me will reply.

 

if you are trying to run something linuxy on an fpga, its not that simple.. 

 

if you are trying to design some sort of hardware (like a module) to interface with a COTS PC solution, that is possible

Share this post


Link to post
Share on other sites

feel free to post details of what you are trying to do, and i am sure someone more knowledgeable than me will reply.

if you are trying to run something linuxy on an fpga, its not that simple..

if you are trying to design some sort of hardware (like a module) to interface with a COTS PC solution, that is possible

Thank you Felix, it's a trader machine that will receive quote prices and generate orders through an algorithm

Share this post


Link to post
Share on other sites

what do you know about FPGA's and hardware design in general ? (need to try and judge your experience level so i can tailor my answer accordingly)

Share this post


Link to post
Share on other sites

@FPGA groupies - feel free to correct me on any of this since i am not the expert

when it comes down to FPGAs

i am trying to dumb this down a bit without sounding like an ass, so sorry ahead of time..

in any given system (with the exceptions of "simple" things like pong which were all discrete

components working together to play a game), you have a hardware side and a software side.

the hardware side of a home computer is something like this

PC

--> CPU

--> Memory

--> Graphics Hardware

--> Audio Hardware

--> Chipset + PS/2 port for mouse/keyboard

--> USB Controller + ports

--> Ethernet controller + ports

--> etc

each of these components is a complete circuit in itself with

its inputs/outputs connected to the other components.

the idea behind the FPGA is that you can create all of these components by using the FPGA

programming language as opposed to creating the same components using discrete parts

(transistors, resistors, external logic chips). This saves with prototyping costs because

instead of spending hours wiring up something on a breadboard or perfboard to test how it

would work, you just program the FPGA and connect bits n bobs to the input/output ports.

that is to say, you have the FPGA chip and it's supporting bits n bobs, and you get someone

talented enough and they can virtually configure the FPGA (and most likely multiple FPGA's)

to do the same thing as a whole pc for a fraction of the price and in a fraction of the time.

from a designer point of view, this is a good thing because if i make a mistake laying out

my printed circuit board and need to swap a few pins around, i have to modify the circuit board

and add in jumpers. with the FPGA, i can just change a few lines of text and recompile then send

to my FPGA and done.

how this applies to you

while you could probably design something which would buy/sell for you using a hardware only solution,

it would probably be slow and clunky..

plus, if you go the ASIC route or the FPGA route, you will have the same issue..

you can't really just design an algorithm into an FPGA/ASIC and say 'go'.

you need to design your system from the ground up.

cpu/memory/user interface (keyboard? mouse? vga port? ethernet? etc)

well i guess you can use pre-written modules, but it still isnt as simple as 'go do it'

then you need to design the software that does the algorithm bits. the operating system

if you will.

when you are dealing with money/stocks/etc every millisecond counts (otherwise why pay $300 million

laying down undersea fiber to shave 5ms time between NY and London)

a single FPGA/ASIC based solution won't help at all.

it just wouldnt be fast enough for what you want.

you would be better off with a COTS system running your favorite flavor of linux

(which i am guessing for you is probably Kubuntu?)

HOWEVER, if cost were no object and you could find the right people, you could use a setup similar to

these guys

http://www.copacobana.org/

(this, as is, wont work for you but it illustrates a point)

these guys built custom hardware with 120 FPGA's which they use to do work but use a regular PC

to communicate with the FPGA's.

the end result is that what would take 1 PC about 135 years to do, they can offload the work to the

FPGA's and do the same work in a fraction of the time (about 48 hours)

this particular machine was built to break encryption keys, but in theory, someone could design

something similar where each FPGA has its own OS and purpose but the COTS PC would still be the one

communicating with the outside world. unless you implement ethernet ports onto each FPGA, but no one

in their right mind will give you 120+ ethernet ports on their network :)

i would talk to jack, alvieboy or hamster or someone like that who has more experience with FPGA's and

try to get their input, but i wouldnt be surprised if they told you pretty much the same thing.

you need a combination hardware/software solution, whether the software is the one on the FPGA or on

the system that monitors the FPGAs.

seems a bit like overkill though.. it would be kind of like killing an ant with a sledgehammer.

i mainly use FPGA's to play old arcade games :)

man that took way too long to write... almost 45 mins..

hope it made some sort of sense.

lets see what the others have to say :)

Share this post


Link to post
Share on other sites
@FPGA groupies - feel free to correct me on any of this since i am not the expertwhen it comes down to FPGAsi am trying to dumb this down a bit without sounding like an ass, so sorry ahead of time..in any given system (with the exceptions of "simple" things like pong which were all discrete components working together to play a game), you have a hardware side and a software side.the hardware side of a home computer is something like thisPC  --> CPU --> Memory --> Graphics Hardware --> Audio Hardware --> Chipset + PS/2 port for mouse/keyboard --> USB Controller + ports --> Ethernet controller + ports --> etceach of these components is a complete circuit in itself with its inputs/outputs connected to the other components.the idea behind the FPGA is that you can create all of these components by using the FPGA programming language as opposed to creating the same components using discrete parts (transistors, resistors, external logic chips).  This saves with prototyping costs becauseinstead of spending hours wiring up something on a breadboard or perfboard to test how it would work, you just program the FPGA and connect bits n bobs to the input/output ports.that is to say, you have the FPGA chip and it's supporting bits n bobs, and you get someonetalented enough and they can virtually configure the FPGA (and most likely multiple FPGA's)to do the same thing as a whole pc for a fraction of the price and in a fraction of the time.from a designer point of view, this is a good thing because if i make a mistake laying out my printed circuit board and need to swap a few pins around, i have to modify the circuit boardand add in jumpers.  with the FPGA, i can just change a few lines of text and recompile then sendto my FPGA and done.how this applies to youwhile you could probably design something which would buy/sell for you using a hardware only solution,it would probably be slow and clunky..plus, if you go the ASIC route or the FPGA route, you will have the same issue..you can't really just design an algorithm into an FPGA/ASIC and say 'go'.you need to design your system from the ground up.cpu/memory/user interface (keyboard? mouse? vga port? ethernet? etc)well i guess you can use pre-written modules, but it still isnt as simple as 'go do it'then you need to design the software that does the algorithm bits. the operating systemif you will.when you are dealing with money/stocks/etc every millisecond counts (otherwise why pay $300 millionlaying down undersea fiber to shave 5ms time between NY and London)a single FPGA/ASIC based solution won't help at all.  it just wouldnt be fast enough for what you want.you would be better off with a COTS system running your favorite flavor of linux(which i am guessing for you is probably Kubuntu?)HOWEVER, if cost were no object and you could find the right people, you could use a setup similar tothese guyshttp://www.copacobana.org/(this, as is, wont work for you but it illustrates a point)these guys built custom hardware with 120 FPGA's which they use to do work but use a regular PC to communicate with the FPGA's.the end result is that what would take 1 PC about 135 years to do, they can offload the work to theFPGA's and do the same work in a fraction of the time (about 48 hours)this particular machine was built to break encryption keys, but in theory, someone could design something similar where each FPGA has its own OS and purpose but the COTS PC would still be the onecommunicating with the outside world.  unless you implement ethernet ports onto each FPGA, but no onein their right mind will give you 120+ ethernet ports on their network :)i would talk to jack, alvieboy or hamster or someone like that who has more experience with FPGA's and try to get their input, but i wouldnt be surprised if they told you pretty much the same thing.you need a combination hardware/software solution, whether the software is the one on the FPGA or on the system that monitors the FPGAs.seems a bit like overkill though.. it would be kind of like killing an ant with a sledgehammer.i mainly use FPGA's to play old arcade games :)man that took way too long to write... almost 45 mins..hope it made some sort of sense.lets see what the others have to say 

I kinda understood. I agree that a combo of PC and FPGA is the best solution, and the trading algorithm would be very simple, but would be required to make several FGPA? And yes I want to enter the micros second range

Share this post


Link to post
Share on other sites

best bet is to talk to alvieboy, hamster, james1095 or jack (although jack is usually pretty busy) and see what they suggest.

 

i am sure there are others but those are the most knowledgeable ones i can think of.

 

you still need a plan on how to do what you want to do exactly.

 

i doubt any of us know exactly how the system you want to interface to works.

Share this post


Link to post
Share on other sites

I think its best to start with an FPGA and make a prototype of the system that you want to develop. Once the design is proven then you can move it to an ASIC to get speed increases. 

 

Without knowing the details of what you are trying to do, the general approach is probably going to be to use the FPGA to speed up some part of the trading process that can benefit from parallel hardware performing a task very quickly. Bitcoin is a good example. We have a bitcoin mining example for the FPGA that splits things up like this:

  • There is a bit coin client that runs on a PC and handles the networking and all of the mundane computing tasks such as requesting new work, managing the work, and posting the results.
  • Part of the process of mining for a bitcoin is that a bunch of SHA hashes are calculated. This is something the computer can do, but an FPGA can do it as a parallel task which is orders of magnitude faster.
  • So the SHA mining is offloaded to the FPGA and the computer feeds the SHA hashes to the FPGA which it happily calculates and spits back over the USB port.
  • The computer checks to see if any are valid and all other types of housekeeping.

So if you have some step in the trading process that can be greatly sped up by turning it into a parallel task to be done by dedicated hardware then you can see impressive improvements. The first step is to figure out what that step is and how to move it into the FPGA.

 

Once that is done the entire process can be moved into an FPGA if that is desired. A Soft Processor can be added to the mix to take care of all of the housekeeping tasks etc. But, that eats up the available resources that are available, its probably better to use all of the resources for your single step that speeds things up.

 

Jack.

Share this post


Link to post
Share on other sites

I don't know the performance deltas for the current state of the art for fpgas versus asics but as the fab process gets smaller and faster for fpgas I have to believe it is closing. Like I mentioned earlier, I think asics make sense when you have a very large production run. I could add I think if you need a very small chip asics make sense. You should consider the latest system on chip as a third leg for consideration. Like Jack mentioned one way things are accelerated in a processor/fpga design is by offloading tasks that are faster in an fpga from the processor. If you don't need to go off chip by keeping your transfers internal on a SoC then you will save time there. Look at the zynq solutions from Xilinx as potential candidates. By the way, there are some books on where the industry has been, I saw a couple on Amazon by searching fpga trading, maybe those will help clarify your needs.

Share this post


Link to post
Share on other sites

Thank you very much for the answers, those clarify me very much! As a matter of fact there is a data feed that will give book orders of several assets, the algorithm will read this in real time and when the conditions are correct insert and buy or sell order. The fastest machine wins, so yes I think this can be partially parallel. Do you guys have any guess, or idea of the magnitude of how many work hours would be required to do that? (100, 1000, or 10000), and how much costs the work hour in your area? Thank you very much for the answers again.

Share this post


Link to post
Share on other sites

Hello people, I am sorry if the last question seemed invasive. I just want to have some idea of how much a project like this would cost so I can set a budget for it. Thank you for any inputs!

Share this post


Link to post
Share on other sites

Hi oritemis.frc,

 

I can give you an none-answer. We don't really have enough specs to give you a sensible answer.

 

Say you wanted the top level of performance the entry price is pretty steep. If you wanted to accept multiple 10 Gbps fibers the hardware alone will cost something like $10k per instance. (http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,1328&Prod=NETFPGA-10G-SUME). If you only need multiple Gigabit interfaces the hardware is about $1.5k per board.. Tools to develop the application will cost $3k+ per year per seat.

 

Any IP you license will also cost, like a wounded bull - for example a SATA IP block costs $20k per design. H/W cost is only a small bit.

 

Engineering time will cost about $100k p.a. for an average VHDL engineer (see http://www.payscale.com/research/US/Skill=VHDL/Salary).Maybe $1k a day for a contractor.

 

It would need a small team outside of the developers of main trading algorithm.

 

- Software - embedded Linux will most likely be in there somewhere

- A networking protocol engineer.

- Programmable logic - maybe three engineers, or one really enthusiastic one.

- Testing / Verification (e.g. making dummy feeds, testing benchmarking and so on.

- Ongoing support.

 

If you wanted to build custom boards you will need a high speed design engineer or two, and maybe $100k (if not more) for prototypes

 

Development time frame really depends on system complexity - maybe 4 weeks, maybe 6 months. 

 

So as a rough budget.

- hardware and setup for 5 engineers - maybe $100k.

- Development resource (5 engineers for 6 months) - $8k per week per month per engineer = $240k

- Office space, expenses, travel...

- Contingency

 

Call it $400k, on the back of an envelope, without actually knowning what you want to do.

Share this post


Link to post
Share on other sites

One of my former employers has done a couple of ASICS for various products. In early versions they used Spartan2 FPGAs (this was a while ago) and then once manufacturing volume rose and all the bugs had been ironed out, that design was put into a custom ASIC which at some point became cheaper than the FPGA. I think production volume was a few hundred thousand units eventually.

 

Custom ASICs are *very* expensive initially, quite a few high end commercial products are built around FPGAs. You can achieve very good performance, and the flexibility is far greater than with an ASIC.

Share this post


Link to post
Share on other sites

Thank you very much for the info! That helped a lot! I can say that never a board will be equal of another and we im the max will have one hundred, speed of execution is the most meaningful metric.

I should look for people with background in electronics or straight on FPGA and ASIC? You many people should be able to execute a project like this in the world? Do you think the knowledge is with a few hundred people or its mainstream on electronics?

Share this post


Link to post
Share on other sites

WIth 100 boards you won't be at the point where the engineering costs for your own PCBs start making sense over an off-the-shelf board, unless you have other constraints that make it very important to you.

 

If a off-the-shelf costs $1,500, it might have a build cost of about $500 per board, so you only get $100,000 for board development and tested before it isn't worth it financially, and that doesn't include any allowance for the risks and the development time.

 

Given that you could pay a little more and get some fully-featured dev boards on your desk tomorrow that people can work with straight away, verses a complex PCB development, including the associated risk and expenses it seems a no-brainier. You always have the option of designing a custom board once things are up and running and your requirements have been are completely understood.

 

I would think that it is a very limited skills pool - FPGA/ASIC, low latency designs, high speed comms, most likely gigabit networking , tcp/ip protocols, the understanding of the on-the-wire trading protocols, and then implementing HFT algorithms. The pool of people would be very small - about the same size as a niche medical specialist (e.g. in the same order as Orthopedic surgeons who specialize in jaw reconstructions). Defiantly not main-stream skills. 

Share this post


Link to post
Share on other sites

Building a board for something like this is crazy. It is such a short lived product. You'd be much better off with a xilinx ultrascale or altera stratix V eval board for $5k. All the electonics is done, your value is surely in the algorithms.

Anyway HFT is an immoral crock imho, that's all the help you'll get from me. Sharemarkets were created for companies to gain investment and share risk. hft benefits only a small few at the expense of society.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now