Intel Buys Altera for $16.7B
bloomberg.com
bloomberg.com
I arrived at Intel just after the folks who started Lattice had left and the position of Intel was that programmable logic was a neutral idea at best, and generally bad or unsuitable for any sort of volume idea which is where Intel wanted to play.
But the interesting thing about the 22nm node is that you can put a whole lot of programmability into a pretty cost effective FPGA, and so now the pendulum hit ASICs and now is starting to find FPGAs in "general purpose" production products. And here we are with Intel buying an FPGA company.
[1] My memory is fuzzy on the exact details, whether it was just a bunch of engineers who decided to quit and moved over to Lattice when it was founded or if Intel helped with the founding by trading some fab capacity and engineers in exchange for some equity in the new company.
http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.109...
http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.109...
results which were only really possible when those labs started switching to FPGAs from the DACs they'd been using previously.
They need high-quality voltage waveforms on those electrodes to make sure they don't lose the ion or disturb its quantum state, and the DACs they had in '10 didn't have the update rates of the FPGA apparatus they built in '12 and they improved transport times by something like a factor of 100 by making the switch.
http://www.nist.gov/pml/div688/grp10/upload/Bowler15_thesis-...
Edit: It looks like they've already been pursuing this, I wasn't aware of Xeon+FPGA pairings yet: http://www.extremetech.com/extreme/184828-intel-unveils-new-...
Source: http://en.m.wikipedia.org/wiki/Financial_Information_eXchang...
When it comes to performance, you should look at FPGA in terms of performance per Watt. Generally speaking they outperform GPUs by an order of magnitude in FLOP/W*s [2], which in turn already have ~ 3x-5x advantage over Xeons [3]. This measure is the most important one when it comes to the question, how many chips you can put in a given rack. FPGAs are still held back in terms of cost per dollar invested, since they have been quite pricey - with Intel this could change.
[1] http://stackoverflow.com/questions/17256040/how-fast-is-stat...
[2] http://synergy.cs.vt.edu/pubs/papers/adhinarayanan-channeliz...
[3] http://streamcomputing.eu/blog/2012-08-27/processors-that-ca...
Why would it? The price of an FPGA is not really determined by its production cost – for medium-size Xilinx FPGAs for example, the ratio of price/chip production cost is on the order of 50.
The paper you link to is measuring MSPS/W (mega samples per second) and the algorithm they are studying relies on fixed point. It uses built in DSP blocks in the FPGA that are integer only. There is no floating point so it is incorrect to say this shows FPGAs give better FLOPS/W. It isn't all that surprising the FPGAs are doing better, the GPUs are all about floating point which isn't being used here.
Their GPU implementations use floating point as well as int and short. The efficiency barely differs between them showing that this particular GPU wasn't optimising with integer power efficiency in mind (which an FPGA implementation relying on DSP48s very much is).
Any example of a GPU with "hundreds or thousands of microprocessors"? Nvidia Titan X has 12 [1] microprocessors by your definition.
[1]: SM, Streaming Multiprocessor in Nvidia's terminology. Smallest unit that can branch, decode instructions, etc.
An AMD Radeon R9 290X has 2816 stream processors (44 compute units of 64 stream processors) per their terminology. There is only 1 instruction decoder per compute unit, so a stream processor cannot completely branch off independently, but it can still follow a unique code path via branch predication. This is kind of comparable to an Nvidia GPU having "44 streaming multiprocessors".
But whether you call this 44 or 2816 processors is irrelevant to my main point: a processor that has to decode/execute 44 or 2816 instructions in a single cycle while supporting complex features like caching, branching, etc, is going to be less efficient than a FPGA with hard-wired logic (edit: "hard-wired" from the view point of "once the logic has been configured").
gchadwick also said integer workloads were "not power efficient" on GPUs, but that's also false. Most SP floating point and integer instructions on GPUs are optimized to execute in 1 clock cycle, so they are equally optimized. And of course integer logic needs fewer transistors than floating point logic, so an integer operation is going to consume less power than the corresponding floating point operation.
https://www.altera.com/content/dam/altera-www/global/en_US/p...
FPGAs have high speed links and can perform thousands of operations in parallel. When you have a huge amount of data to process in real time, an FPGA (or ASIC) is often your only choice.
Video works really well because its discrete (60fps) and an FPGA just can't hit the clock speeds an asic will. If you already have a semantic clock requirement that is low, streaming works great.
Here's the thing. FPGA performance has nothing to do with it. They do what CPUs can't.
You don't choose to plug an FPGA in place of a CPU, you plug it where you can't.
Tying peripherals together, glue logic, bus connection. Some FPGAs have a builtin CPU (or you can plug a soft one together with your circuit)
Maybe they will go for in-the-fly reconfiguration for specific computations (as: load your specialized circuit in an FPGA and fire away)
I read an interesting quip somewhere on software/hardware development: 'civil engineering would look very different if the properties of concrete changed every 4 years.'
If at some point we stop scaling chip performance. And many-core-integration in/on a single chip/die stops making sense. Then glue logic starts to look like a key differentiator. And control over glue logic starts to look like control over profits.
Intel ate the chipset for performance reasons and so they could shape their own destiny.
If there aren't fundamental breakthroughs to preserve performance scaling as we know it, then I see this as more of the same.
Of course, it depends entirely on what you're doing with them. Keywords: horse, course, different.
And that's where FPGAs shine; that small to medium volume market where small companies are doing innovative things but don't have the millions required to risk building an ASIC.
I don't disagree with you on that count. Especially in this case (since for most cases a processor does a job with a better cost/benefit), FPGAs shine on very specialized/heavy computation tasks.
I always wondered, given that Intel's processors already have a pretty large gap between their instruction set and their real microcode, whether it would make sense to have a nominal "CPU" that, when fed an instruction stream, executes it normally on general-purpose cores, but also runs a tracing+profiling JIT over it to eventually generate a VHDL gate-equivalent program to jam into an on-core FPGA. "Hardware JIT", basically, with no explicit programming step needed.
But yeah pretty much any repetitive computation. 3DES enc/decryption is another example (although I think people normally use ASICs for that when they want to do loads of it).
Low-latency interaction with hardware. In this case, it was possible to start outputting a TCP reply before the end of the packet it was replying to.
In general, FPGAs win for integer and boolean functions which are amenable to deep pipelining, or are capable of very high parallelism. One of my colleagues produced a neat chart of what level of parallelism was best suited to which of CPU/GPU/FPGA.
FPGAs don't have an advantage if you're memory or IO bound, and they have terrible power consumption.
First, of course, are very efficient Ethernet ports and many other efficient hard blocks.
Second, you can fuse many operations into one. For example, you cannot fuse 3 FP adds into one operation nor on GPU neither on CPU. It is often 2 or 4, rarely something inbetween or outside of those. GPU and CPU operations on vectors can be wasteful as vectors can be underutilized and on FPGA you can create circuitry that fits problem rather well.
I also think that you are not quite right about I/O or memory boundness. In FPGA you can add another I/O controller and use extra device for I/O, loading spare resource in FPGA. Same for memory - DDR controller synthesized into cells won't be very optimal, but you can have many of them nevertheless.
Having two DDR controllers helps the overall memory bandwidth number if your reads are not localised. If you're doing a lot of data-dependent loads this doesn't help at all (e.g. scrypt).
In all cases it's much harder for software developers to develop for FPGA, so this cost needs to be factored in. They're very good in their niche, not a general purpose silver bullet.
Your example with scrypt also does not access much of RAM, especially with Salsa20/8 standard function. As far as I can see, it also has parallelization parameter, and computation within top loop can be done in parallel.
Yes, it is hard to program for FPGA. But not that much - I myself programmed a system that performed translation from (pretty much high level) imperative description of algoithm to synthesable Verilog/VHDL code. In a one and half of month.
In my opinion, programming for FPGA is very entertaining, especially if you do not write V* code by hand.
http://www.linusakesson.net/scene/parallelogram/
"For this demo, I made my own CPU, ... cache, ... blitter with pixel shader support, a VGA generator, and an FM synthesizer."
In his explanation for why he wrote his own CPU in the FPGA, Linus explained "...I was able to take advantage of the added flexibility. For instance, at one point the demo was slightly larger than 16 KB, but I could fix this by adding some new instructions and a new addressing mode in order to make the code compress better."
Also, dude has a Symbolics Space Cadet keyboard. Respect.
I heard counter-arguments to the tune of 'hardly anyone wants to program their FPGA' which sounf strange to me: after all, hardly anyone wants to program their pixel shaders, either.
FPGAs are like GPUs with no floating-point, no caches, and limited local memory. But if you can implement a kernel in FPGA with comparable memory bandwidth, you'll usually outperform GPGPU while using as little as 1/50 the power.
FPGAs have several orders of magnitude lower latency than GPGPU. GPUs have memory access latency of 1 microsecond, getting something useful out of them >1 ms. FPGAs can have state machines running at 200 MHz, or 5 ns cycle time.
> FPGAs are like GPUs with no floating-point, no caches, and limited local memory. But if you can implement a kernel in FPGA with comparable memory bandwidth, you'll usually outperform GPGPU while using as little as 1/50 the power.
Some FPGAs do have floating point hard blocks. Integrated SRAMs (syncram) can be used as caches and usually are. FPGAs usually have DRAM controllers as hard blocks, so local memory is not that limited. Unless you consider up to 8 GB (newer models up to 32 GB) limited.
FPGAs are essentially re-programmable hardware, so they tend to outperform CPUs/GPUs when you program them for a specific task. They don't have to deal with most of the overhead that the more generalized platforms deal with which is why they dominate in the small input sizes. However, with FPGAs you're trading space (silicon) for that re-programmability so you can't have as much hardware in the same area as say a GPU. Thus, when the data sizes have saturated the available hardware of the FPGA for computation, the GPU begins to outperform. Due to the decreasing node sizes (28nm, 22nm, etc), we can fit more programmable logic into the same area, which causes the chart I mentioned above to shift more into the FPGA's favor.
[1]: http://www.researchgate.net/profile/Sam_Skalicky/publication...
You tell a CPU what to do. You tell an FPGA what to be.
* Intel/AMD CPUs merged with GPUs;
* ARM mobile cores merged with GPUs, GPS, Gyro sensors, voice processors, finger print processors, etc.;
* ARM CPU with FPGA (Xilinx Zync, Altera SoC FPGA).
Their architectures are usually CPU-central, such that the CPU speed and memory bandwidth are the main bottlenecks.
For the Intel+Altera merage, I'd like to see them come up with architecture innovations from another perspective:
* Programmable logics and signal fabrics (bus) connecting general purpose CPUs and hardware acceleration units;
* Bandwidth and connections central, like the Internet, massive processing power comes from massive intelligent connected simple individual nodes (CPU/modules);
* Programming such architecture is more resemble how human brain works (reconfigurable inter-connects of neurons).
For the longest time, the FPGA market has been dominated by Xilinx and Altera. With one joining Intel, it seems logical to expect a response?
- Altera will now likely lose early access to all the non-Intel fabs. And sometimes one of the non-Intel fabs come up with a process advantage before Intel does. Fabs love to work with FPGA vendors: the regular structure makes them good targets for new processes; and FPGA vendors are the only people that can sell a single chip for $50,000.
- Big guys are only interested in big markets: Altera may abandon some of the smaller niches they currently play in.
I'm sure there are other advantages Xilinx gains by staying independent.
I heard that this has changed and mobile chips are being used for "pipe cleaning" in fabs, from a credible source, but i haven't dug into the details of how.
edit: even if they just opened up the bitfile format. I believe it's a similar situation as GPU instructions sets though: managers saying "no because patents".
[0] https://github.com/cseed/arachne-pnr
Does it support user constraints on relative placement (and routing)? Self-timed logic, such as NULL Convention Logic [1], doesn't fit well with the synchronous FPGA paradigm, but can be implement on those if the feedback loops are tightly controlled [2]. I'd like to play with that :)
[1] http://en.wikipedia.org/wiki/Asynchronous_circuit
http://www.amazon.com/Designing-Asynchronous-Circuits-Convention-Synthesis/dp/1598299816
[2] http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=543867...For their lower end chips (All the Spartan series, the larger of the 6 series are still quite useful) they straight up announced an end of development on the main toolchain (ISE) with no plans for support on their newer one.
For example, if intel wanted, it could have built a decent FPGA, probably in a reasonable time(there were startups that built decent fpga's).
But building good fpga software ? that it couldn't do, first because it's really hard and second because you need tens of thousands of designs from your customers to run on this in ordered to make good software. That's not something acquirable.
OSS development has proven to be a useful tool as part of greater business models.
Here is a link that explains the process: http://curtis.io/others-work/open-tooling-for-fpgas
As for android - Again it was a strategic necessity for Google, since it needed that distribution point for it's huge ad business. Operating systems are a winner takes all business and the most effective, lowest risk strategy to get there was open sourcing, even though it's kind of a loss leader. And even with only partially open-sourcing android , Google is at constant risk of losing control of android.
The situation in FPGA is different - if altera opens the tool, xilinx and other companies will probably use it , and we'll probably see multiple companies compete on the business.
Altera will have a process advantage over Xilinx and there is nothing that can be done about it. While everyone is talking 14nm, Intel is shipping it and talking 10nm.
This deal makes more sense than any I've seen. Altera gets to use the best fabs in the world to gain an advantage over their competitors. Intel gets to deploy to a new (to them) market where the volumes are lower but the ASPs are higher - this is good given the ever increasing costs of making chips and the lower yields likely at 10nm and 7nm. It looks like a purely strategic move for both companies.
Edit: ha! Apparently, "One reason why Altera is attractive to Intel is that Altera is already using Intel's fab to create its latest generation FPGAs and SoCs; Arria 10 FPGAs and SoCs are being implemented using TSMC's 20nm process, while Stratix 10 FPGAs and SoCs are leveraging Intel’s 14 nm Tri-Gate process (see Altera & Intel to Collaborate on Multi-Die 14nm FPGAs). Furthermore, Altera is also using Intel's state-of-the-art packaging technologies."
http://www.eetimes.com/document.asp?doc_id=1326736&_mc=sm_ee...
They'll get acquired by someone, probably in a year or two. If they lose their market leadership in the meantime, the acquisition will be for less than 17B.
They really need to invest in their software and tool flow right now. That's where they have a strong lead.
Altera and Intel already have a fab agreement and Intel is desperate to get customers into their mothballed fabs.
All this talk of technology collaboration could be accomplished with strategic partnerships/licensing that would certainly be less than $16.7B.
This looks like a case of a foundry player buying their customer to prevent it from defecting to TSMC in the future. To me this is a sign of weakness.
If they can't get customers into them, they can get their own products made in them.
I'm not sure they are ready to devote production capacity (and process development resources) towards very lower power products which are also less profitable.
That was one of the reasons they failed when trying to enter the cellular market.
Isn't that what they're already doing? What about things like the Quarks used in the Galileo and the Edison?
Apparently Altera has something called JVXtreme[1], which claim x55 peak and x15 sustained performance increase.
From the pdf: "JVXtreme accelerates the actual execution of Java by executing 87 of the most commonly used Java byte codes in hardware."
[1] https://www.altera.com/en_US/pdfs/products/ip/ampp/documents...
http://en.wikipedia.org/wiki/Java_processor
http://en.wikipedia.org/wiki/Jazelle
I've not heard so much about those projects lately.
Altera's software is miles ahead of Xilinx's. And their hardware is pretty close, with Xilinx getting the edge.
Can you please expand on that ?
Also what about partial reconfiguration , isn't xilinx the leader ? isn't that important for general compute ?
Place and route in digital circuits is an NP-hard problem. Xilinx solves this problem using analytical place and route (solving a giant system of equations), explained here a bit more: http://www.xilinx.com/products/design-tools/vivado/implement...
Altera's tool uses Simulated Annealing. Historically, Altera's tool has been faster and easier to use, allowing user's to implement larger designs and synthesize them quicker. However, I don't know the state of things RIGHT NOW, but I'm pretty sure this was the case 2 years ago.
Altera's chip design/layout is lacklustre compared to Xilinx's though.
Also, partial reconfig is a very important feature, but it's not used by all customers. Most people just want large FPGAs so they can fit large designs on them, have really fast I/O (Transceivers) and meet timing on their circuits.
[1]http://www.eejournal.com/archives/articles/20120501-bigdeal
Here's a good thought exercise to help visualize the situation: imagine if Intel had insisted on keeping the x86 instruction set closed and undocumented, and, furthermore, that they had succeeded in doing so. For 30 years we've had nothing but proprietary Intel compilers. How much would life suck? How far behind would we be?
I wonder what broadly available FPGA's would mean for systems development, though...could be pretty interesting.
http://en.wikipedia.org/wiki/Complex_programmable_logic_devi...
Somebody at Bloomberg is obviously a little confused about FPGAs.