<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dan.benyamin.org &#187; Archives</title>
	<atom:link href="http://dan.benyamin.org/category/archives/feed/" rel="self" type="application/rss+xml" />
	<link>http://dan.benyamin.org</link>
	<description>Dan Benyamins thoughts on technology and society</description>
	<lastBuildDate>Sun, 22 Feb 2009 23:59:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Function Unit Specialization through Code Analysis</title>
		<link>http://dan.benyamin.org/2008/09/25/function-unit-specialization-through-code-analysis/</link>
		<comments>http://dan.benyamin.org/2008/09/25/function-unit-specialization-through-code-analysis/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 04:25:47 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Archives]]></category>

		<guid isPermaLink="false">http://dan.benyamin.org/?p=61</guid>
		<description><![CDATA[This post is another entry in my life-archive series, and also from my academic career.  This paper was actually accidental:  I was enrolled in a graduate class and had to come up with a project for the quarter.  I had a very out-there idea of taking what we had learned about VLIW [...]]]></description>
			<content:encoded><![CDATA[<p>This post is another entry in my <a href="http://dan.benyamin.org/2008/07/28/life-archiving/">life-archive series</a>, and also from my academic career.  This paper was actually accidental:  I was enrolled in a graduate class and had to come up with a project for the quarter.  I had a very out-there idea of taking what we had learned about <a href="http://en.wikipedia.org/wiki/Very_long_instruction_word">VLIW machines</a> and applying it to <a href="http://en.wikipedia.org/wiki/Reconfigurable_computing">configurable computing </a>architectures.</p>
<p>A basic tenant of configurable computing, and the one that got me hooked as a senior in undergraduate engineering, as the idea that the lines between hardware and software could be blurred.  Software had always been tailored for the hardware that it ran on, whether it was done that way by hand or if left up to the compiler.  Well, what if you could design hardware that better fit the needs of a particular application, automatically?  My idea was to use the well-known tricks of scheduling for VLIW machines and use those as a set of &#8220;hints&#8221; for the what the ideal hardware could look like.</p>
<p>The class professor wasn&#8217;t too hot on this idea, but let me do it anyway &#8216;cuz I&#8217;m tenacious.  So for the next few weeks I poked around an open-source compiler and messed with making a mythical hardware design out of the compiler&#8217;s scheduler and ended up with some interesting results.</p>
<p>For example, most DSP&#8217;s have a single instruction multiply-and-add.  This is because the most common thing they do is add and multiply (you can find a bunch of these in the my <a href="http://en.wikipedia.org/wiki/Reconfigurable_computing">previous paper</a>).  Well it turns out that you get only modest savings from doing that.  My research showed that for most implementations, making faster individual multiply and add units performed better than making a monolithic one.</p>
<p>The results were interesting enought that the prof convinced me to submit my work to a handful of conferences.  Ha!  This was literally a stretched out homework assignment and he expected it to be accepted at a research conference?  Well, it did, and to one of the most prestigious ones &#8212; <a href="http://www.iccad.com/2008/index.html">ICCAD</a>.  <a href="http://content.benyamin.org/iccad99.pdf">Here&#8217;s a link</a> to my paper, the abstract and embedded copy can be found below.</p>
<p><strong>Abstract</strong></p>
<p><em>Many previous attempts at ASIP synthesis have employed template matching techniques to target function units to application code, or directly design new units to extract maximum performance.  This paper presents an entirely new approach to specializing hardware for application specific needs. In our framework of a parametrized VLIW processor, we use a post-modulo scheduling analysis to reduce the allocated hardware resources while increasing the code’s performance. Initial results indicate significant savings in area, as well as optimizations to increase FIR filter code performance 200% to 300%.</em></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="500" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="doc_642531721561043" /><param name="name" value="doc_642531721561043" /><param name="align" value="middle" /><param name="quality" value="high" /><param name="play" value="true" /><param name="loop" value="true" /><param name="scale" value="showall" /><param name="wmode" value="opaque" /><param name="devicefont" value="false" /><param name="bgcolor" value="#ffffff" /><param name="menu" value="true" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="salign" /><param name="src" value="http://documents.scribd.com/ScribdViewer.swf?document_id=6231097&amp;access_key=key-r37bzbxywxj3t2rrdt4&amp;page=&amp;version=1&amp;auto_size=true&amp;viewMode=" /><embed id="doc_642531721561043" type="application/x-shockwave-flash" width="100%" height="500" src="http://documents.scribd.com/ScribdViewer.swf?document_id=6231097&amp;access_key=key-r37bzbxywxj3t2rrdt4&amp;page=&amp;version=1&amp;auto_size=true&amp;viewMode=" allowscriptaccess="always" allowfullscreen="true" menu="true" bgcolor="#ffffff" devicefont="false" wmode="opaque" scale="showall" loop="true" play="true" quality="high" align="middle" name="doc_642531721561043"></embed></object></p>
<div style="font-size: 10px; text-align: center; width: 100%;"><a href="http://www.scribd.com/doc/6231097/iccad99">iccad99</a> &#8211; <a href="http://www.scribd.com/upload">Upload a Document to Scribd</a></div>
]]></content:encoded>
			<wfw:commentRss>http://dan.benyamin.org/2008/09/25/function-unit-specialization-through-code-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhatNoise: From concept to launch</title>
		<link>http://dan.benyamin.org/2008/09/02/phatnoise-from-concept-to-launch/</link>
		<comments>http://dan.benyamin.org/2008/09/02/phatnoise-from-concept-to-launch/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 06:19:28 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Archives]]></category>

		<guid isPermaLink="false">http://dan.benyamin.org/?p=32</guid>
		<description><![CDATA[I have been meaning to write several posts about my first company, PhatNoise, but haven’t had the chance to finish one off.  Well, after seeing an update on the Techcrunch tablet project over the weekend &#8212; especially the sentiment expressed in the comments – I decided to put something together.
There is a lot I want [...]]]></description>
			<content:encoded><![CDATA[<p>I have been meaning to write several posts about my first company, <a href="http://www.phatnoise.com/">PhatNoise</a>, but haven’t had the chance to finish one off.  Well, after seeing <a href="http://www.techcrunch.com/2008/08/30/update-on-the-techcrunch-tablet-prototype-a/">an update on the Techcrunch tablet project</a> over the weekend &#8212; especially the sentiment expressed in the comments – I decided to put something together.</p>
<p>There is a lot I want to write about PhatNoise, since there is a lot that happened.  Literally a garage startup, PhatNoise ended up running for over six years, with half a dozen automotive deals, and finally a successful sale to <a href="http://www.harman.com/">Harman International</a>.  Whatever I write, however, I would like these notes to be considered both a post mortem and a straight historical accounting of what went down.</p>
<p>PhatNoise began as a question I asked myself: could I put a little computer full of mp3s in my car by replacing (and mimicking) a regular old CD-Changer?  Only one way to find out – reverse engineer the communication path in the car, build the hardware to interface it to a PC, and off we go!<br />
Our home base was a crappy apartment in west LA, which happened to be just up the street from the infamous <a href="http://www.forbes.com/2000/05/18/mu11.html">DEN</a>.  Here’s Dan Lau, my roommate at the time, where it all started:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/image006.jpg"><img class="size-medium wp-image-43 aligncenter" title="image006" src="http://dan.benyamin.org/wp-content/uploads/2008/09/image006-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>What we had hobbled together wasn’t much, and it would frequently break down in a plume of smoke, but it was enough to convince us that having thousands of songs in your car was damn cool.</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/mvc-003f.jpg"><img class="size-medium wp-image-46 aligncenter" title="mvc-003f" src="http://dan.benyamin.org/wp-content/uploads/2008/09/mvc-003f-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>Keep in mind this is late 1998.  It was about six months before the original Napster was released, and about three years before the first iPod.  I would often joke that the first half of any meeting we would have with an investor or hardware vendor was devoted to explaining what mp3s were and why anyone would care.  But this demo was enough for us to realize the potential, and we thus set out to build a dedicated solution to replace the jungle of wires pictured above.  My buddy Dan and I finished up our Master’s degrees at UCLA, and founded the company in July of 1999.</p>
<h1>Pizza and Ikea</h1>
<p>The company was largely conducted out of our living room.  Most of our hires were friends of ours at school, many of whom had not graduated yet.  The operation was run on Ikea furniture (the first job of any new hire was to build the desk they would call their home), and lots of pizza dinners.  Folks would head over to our pad (the “PhatPad”, the first in a long line of Phat* names), and bang out various aspects of the concept.  There wasn’t much of a plan, nor did anyone have any relevant experience beyond being smart engineers.</p>
<p>Creating a small Linux computer to interface with cars was the main idea, but a bunch of other problems needed to be solved along the way.  The biggest was moving music from the PC to the car.  Our original concept was for computer to house a hard disk drive full of music, and you would shuttle the whole computer to and from the car.  At the time, though, USB-bulk storage devices were *just* coming out on the market.  Using painfully slow first generation USB, these were designed to accommodate external hard drive enclosures.  Our idea as a bit more ambitious – house just the drive in a small cartridge that could easily slide into bays or docks.  Here’s what very early sketches looked like:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/dock-sketch-12-07.jpg"><img class="size-medium wp-image-39 aligncenter" title="dock-sketch-12-07" src="http://dan.benyamin.org/wp-content/uploads/2008/09/dock-sketch-12-07.jpg" alt="" width="421" height="337" /></a></p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/cart-sketch-12-7.jpg"><img class="size-medium wp-image-36 aligncenter" title="cart-sketch-12-7" src="http://dan.benyamin.org/wp-content/uploads/2008/09/cart-sketch-12-7.jpg" alt="" width="500" height="360" /></a></p>
<p>The computer itself (the “<a href="http://en.wikipedia.org/wiki/Phatbox">PhatBox</a>”) was originally thought to look not much different from CD-changers, such as this sketch below:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/b-06.jpg"><img class="size-medium wp-image-35 aligncenter" title="b-06" src="http://dan.benyamin.org/wp-content/uploads/2008/09/b-06.jpg" alt="" width="541" height="442" /></a></p>
<p>This idea was ditched when our contract manufacturer convinced us that using a single piece of extruded aluminum was cheap to tool, and looked way cooler.  With our concept firmly in hand, we were able to raise enough venture money to actually pay people and to move the operation out of our apartment.</p>
<h1>Prototypes</h1>
<p>Speaking of which, this is probably the biggest lesson in building a new hardware product: get really comfy with the contract manufacturer.  You gotta choose them as if you were going on a long, dangerous, and ill-planned camping trip together.  This partner will need to take on a lot of risk if you are going to do this on the cheap, and yet they will need to be capable enough of really running the show.  Fortunately, we did have a great partner that believed in our vision, and part of what this partner did was create manufacturable 3D models of our sketches and quick-turn SLA prototypes.  Here they are:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/cart-dock-box-in-conf-room.jpg"><img class="size-medium wp-image-37 aligncenter" title="cart-dock-box-in-conf-room" src="http://dan.benyamin.org/wp-content/uploads/2008/09/cart-dock-box-in-conf-room-400x299.jpg" alt="" width="400" height="299" /></a></p>
<p>Pretty damn close, wouldn’t you say?  Here’s how the cartridge fit in the cradle, with a giant CRT monitor for scale:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/cartanddock.jpg"><img class="size-medium wp-image-38 aligncenter" title="cartanddock" src="http://dan.benyamin.org/wp-content/uploads/2008/09/cartanddock-400x299.jpg" alt="" width="400" height="299" /></a></p>
<p>The cartridge never did quite perfectly fit in the dock, considering there was a 40-pin connector there and all.  Rigorous mechanical engineering is one of those things that you just gotta pay a lot for.  If this looks familiar, well let’s just say we inspired a few folks:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/55994-1909p066a-1b.jpg"><img class="size-medium wp-image-34 aligncenter" title="55994-1909p066a-1b" src="http://dan.benyamin.org/wp-content/uploads/2008/09/55994-1909p066a-1b-372x400.jpg" alt="" width="372" height="400" /></a></p>
<p>Iomega, really, we’re flattered!</p>
<p>Enough about plastic, though, onto electronics!  Our idea was always a small computer, capable of playing back thousands of mp3s, interfacing to a variety of automotive networks, and easily software upgradable.  In order to fit our cost and mechanical constraints though (more on that later), it meant finding a processor “just good enough”.  It also meant pretty much designing and building it from scratch.</p>
<p>The just good enough processor turned out to be an ARM7 running at a whopping 74MHz from Cirrus Logic.  And just as important as being cozy with your manufacturer is to be really chummy with your major chip vendors.  Processors are complicated beasts &#8212; even little ones like this &#8212; and you’ll need all the help you can get.  Cirrus was always a great vendor for us.</p>
<p>Software was done all in house: a stripped down Linux kernel, software audio decoders, and daemons to manage everything.  A smart decision we made was to include a second, smaller microcontroller on the board to handle interfacing with the vehicle, power management, and in-system updates.  It acted like a bridge between the PCB and the Linux OS.</p>
<p>I want to make the point that this was all very fancy stuff for a music player.  Every other device on the market used a dedicated IC for decoding MP3s and doing everything else on the device.  We were the first to employ a full OS and software decoders in such a product, and we <a href="http://www.linuxdevices.com/articles/AT6469667521.html">got</a> <a href="http://www.lynuxworks.com/corporate/news/success/phatnoise.php3">press</a> simply for that fact.</p>
<p>The boards took quite a long time to get working properly, but this basic design would last us for years.  Here’s a shot of an early PCB:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/image013.jpg"><img class="size-medium wp-image-48 aligncenter" title="image013" src="http://dan.benyamin.org/wp-content/uploads/2008/09/image013-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>Along the way, the company crammed as much as possible into the space and time we had.  That’s me on the right – hey at least we had a view!</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/image002.jpg"><img class="size-medium wp-image-41 aligncenter" title="image002" src="http://dan.benyamin.org/wp-content/uploads/2008/09/image002-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>Although one downside is that at 4am it gets quite cold in an office building with no heat on, even in Los Angeles:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/image001.jpg"><img class="size-medium wp-image-40 aligncenter" title="image001" src="http://dan.benyamin.org/wp-content/uploads/2008/09/image001-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>Notice all the crap in the back – oy!</p>
<p>We wouldn’t have had much of a music system if there wasn’t a tool to effectively rip CDs and manage all that stuff.  As if there wasn’t enough to do, we made that as well.</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/main.jpg"><img class="size-medium wp-image-45 aligncenter" title="main" src="http://dan.benyamin.org/wp-content/uploads/2008/09/main-400x270.jpg" alt="" width="400" height="270" /></a></p>
<p>It was not the first music management tool, but one of the only built around a database to manage thousands of tracks, and with a dedicated interface to sync it to the portable drive.  And since all the cool apps had funky skins, ours did too.  One of our early users called it “garish”, and the name stuck!</p>
<h1>The Big Show</h1>
<p>After about 15 months from inception, we were ready for our first big show: the MP3 Summit, sponsored by the then huge mp3.com.  Most of the companies were either software services (luminaries such as <a href="http://en.wikipedia.org/wiki/Scour">Scour </a>and <a href="http://en.wikipedia.org/wiki/MoodLogic">moodlogic</a>), or large hardware companies such as Philips and Thomson.  And then us.  We had a barely working system, held together with tape and with a soldering iron always nearby.  One of us was permanently on duty to reset crashed demos.  But none of it mattered, since the crowd was in awe:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/image005.jpg"><img class="size-medium wp-image-42 aligncenter" title="image005" src="http://dan.benyamin.org/wp-content/uploads/2008/09/image005-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>We were easily the most popular booth at the show, because people saw something for the first time in the flesh: thousands of songs, accessible by the stereo they may already have in their car; a portable harddrive with USB connectivity, and a database driven music management software for the PC.</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/summit2.jpg"><img class="size-medium wp-image-47 aligncenter" title="summit2" src="http://dan.benyamin.org/wp-content/uploads/2008/09/summit2-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>Was it worth it?  Well, we won best of show.  The company went on to strike deals with most major automotive suppliers, and to develop several variants of the system, including a home version and a multimedia version for General Motors.  We have PhatNoise alums at both Apple and Google.  Our main competitor (and major source of inspiration) went on to become the hardware chief of the Apple iPhone.  Here’s Hugo and myself at that summit:</p>
<p style="text-align: center;"><a href="http://dan.benyamin.org/wp-content/uploads/2008/09/image014.jpg"><img class="size-medium wp-image-44 aligncenter" title="image014" src="http://dan.benyamin.org/wp-content/uploads/2008/09/image014-400x300.jpg" alt="" width="400" height="300" /></a></p>
<p>About six months later, when rumors were swirling around a totally new product line from Apple (a week before the iPod was announced), a Wired reporter <a href="http://www.wired.com/gadgets/portablemusic/news/2001/10/47740">asked me for a quote</a>.  I didn’t think Apple was doing anything directed at cars, and to this day most interfaces for iPods are pretty lame.  But Apple did take what they knew was a game-changing technology (MP3s), and spent the money to cross the chasm to the masses (more on that another day!).  I’d like to say that our company did some trailblazing as well, and was an experience I wouldn’t have gained any other way.</p>
<h1>So you wanna get into the electronics business?</h1>
<p>As I mentioned earlier, there is a lot more to write about PhatNoise, but since you don’t run into too many consumer electronics startups, I thought I would spend some time on some humble advice.</p>
<p><span style="text-decoration: underline;"><strong>Try to avoid hardware.</strong></span> Really, it is awfully expensive and time consuming.  But if you got this far you are probably hell bent on making hardware an integral part of something new, so…</p>
<p><span style="text-decoration: underline;"><strong>Use the biggest building blocks possible.</strong></span> It’s like <a href="http://en.wikipedia.org/wiki/Duplo">Duplo </a>versus <a href="http://en.wikipedia.org/wiki/Lego">Lego</a>: you maybe able to make something more intricate with Legos, but that’s reserved for the bigger kids with bigger wallets.  For the Techcrunch tablet project, for example, they should really just book a weeklong trip to south China, look at lots of existing models that come close to their vision, and weigh the pros/cons of modifying it.</p>
<p><span style="text-decoration: underline;"><strong>Weigh the opposing forces. </strong></span> There is a saying: fast, good, or cheap – pick two.  Well, I can make this a bit more precise for consumer electronics.  The NRE cost, final price, performance, flexibility, and mechanical constraints are five dimensions that generally oppose each other.  For example, tight mechanical constraints will make the product NRE cost more.  But lowering the NRE cost will likely raise the final price.  Increasing performance (faster processor, longer life battery) stresses the mechanical design (faster processors need better heat dissipation, longer life batteries are usually just larger ones).</p>
<p><span style="text-decoration: underline;"><strong>Find an original design manufacturer (ODM) that can do it all, and let them do it all.</strong></span> Let’s say you violate this rule and hire an amazing mechanical engineer outside of the ODM to design an awesome dock for your web tablet.  The tablet is largely the ODM’s design, and the dock is from this super fellow.  And when you have the first prototype and it doesn’t dock correctly one out of a hundred times, who is going to find out what’s wrong and make the appropriate change?  Both the mechanical engineer and the ODM will point fingers as at you.  Let the ODM do all the work and manage their own subcontractors.</p>
<p><span style="text-decoration: underline;"><strong>Make sure the hardware-software connection is clear.</strong></span> Lots of folks feel they have a stronger handle on the software than on the hardware, and thus make that the dividing line.  However, the hardware and software need to work in concert.  If your web tablet is supposed to have a “sleep/resume” feature, what is the mechanism of waking it up again?  Do all the peripherals get reinitialized correctly?  Are the things that are supposed to be non-volatile really safe?  How about updating the software?  Can you update the operating system?  If so, what happens if that update fails (and it will)?  If you are not careful you will be left with a cool paperweight.</p>
<p><span style="text-decoration: underline;"><strong>Where is the product going to be sold, and how is it going to be used?</strong></span> This is painfully tricky – FCC is required in the US, CE in Europe, and it kinda varies everywhere else.  Do you know what the packaging requirements are like?  Do you have French <em>everywhere</em> in order to be sold in Canada?  Who is writing the user’s manual?  What are the environments this is to be used in?  What are the requirements for temperature, humidity, mechanical shock, EM radiation, EM immunity – and who’s going to test all this?  If you think this should all be “ok” the next time you try out that LCD panel that’s really cheap, think again &#8212; these are the exactly the areas the vendor is likely cutting corners without you noticing.  Lastly, if the product doesn’t pass FCC/CE testing, who knows how to resolve it?  If you have any “custom” electronics made, the ODM will just hand the problem right back to you.</p>
<p>I’ll have much more to write about both PhatNoise, building startups, and other aspects of the consumer electronics business.  This list above is really just the tip of the iceberg, but this post is already waay too long.  In the meantime, please don’t hesitate to contact me through the comments below or via the methods on my <a href="http://dan.benyamin.org/about/">about page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://dan.benyamin.org/2008/09/02/phatnoise-from-concept-to-launch/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Optimizing FPGA-based vector product designs</title>
		<link>http://dan.benyamin.org/2008/07/28/optimizing-fpga-based-vector-product-designs/</link>
		<comments>http://dan.benyamin.org/2008/07/28/optimizing-fpga-based-vector-product-designs/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 23:24:50 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Archives]]></category>

		<guid isPermaLink="false">http://dan.benyamin.org/?p=28</guid>
		<description><![CDATA[This post will be my first archival experiment, so I decided to start off with one of my favorite academic projects.  This work was largely done while I was a visiting researcher at the wonderful Imperial College of London.
I remember literally staring at the math behind my lab&#8217;s latest research work.  I was a student [...]]]></description>
			<content:encoded><![CDATA[<p>This post will be my first <a href="http://dan.benyamin.org/2008/07/28/life-archiving/">archival experiment</a>, so I decided to start off with one of my favorite academic projects.  This work was largely done while I was a visiting researcher at the wonderful Imperial College of London.</p>
<p>I remember literally staring at the math behind my lab&#8217;s latest research work.  I was a student at UCLA, and our lab just was on a high from having made the cover story on <a href="http://xputers.informatik.uni-kl.de/reconfigurable_computing/villasenor/0697villasenor.html">Scientific American</a>.  The lab worked on the (then hot hot hot) topic of <a href="http://en.wikipedia.org/wiki/Reconfigurable_computing">reconfigurable computing</a>.  Specifically, we worked on machines that would perform image correlation very quickly; my specific project performed at 12FPS running at just a 16MHz clock!</p>
<p>What struck me was that what the machine was doing could represent a more generic way of how machines performed mathematics &#8212; vector math, to be precise.  So over the course of about a summer, I wrote the following paper (I also wrote the actual C++ code that did the work, but can&#8217;t track it down!).  Here&#8217;s what that code could do:</p>
<p>Re-write the following equation, using simple arithmetic, so that all multiplies are done using powers of two, and with the fewest number of adds or subtracts:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.codecogs.com/eq.latex?Y=X_0+2X_1+3X_2+4X_3+5X_4+6X_5+7X_6+8X_7" alt="" /></p>
<p>There are 7 plus signs already &#8212; how many more will you need so that there are only powers of two? (Answer at the end of this post!)</p>
<p>This is exactly the sort of optimization that is needed to minimize hardware design complexity (a multiply by a power of two is just a shift, after all).  I loved this project because it transformed this algebraic problem into a <a href="http://en.wikipedia.org/wiki/Graph_coloring">graph coloring</a> problem, and by doing so, allows computers to do all the dirty work.  For example, if you gave the code a fixed point representation of the DCT, it would optimize and transform the 8&#215;8 matrix multiply to something that approximates the widely used version by Feig &amp; Winograd.  Except it took the computer just about a day to do it.</p>
<h1>Abstract</h1>
<p><em>This  paper  presents  a method,  called  multiple  constant  multiplier trees  (MCMTs),   for  producing   optimized   reconfigurable   hardware implementations  of vector products.  An algorithm for generating  MCMTs has been developed and implemented, which is based on a novel representation  of common subexpressions  in constant  data patterns.  Our optimization  framework covers a wider solution space than previous approaches; it also supports exploitation  of full and partial  run-time  reconfiguration  as well as technology-specific constraints,  such as fanout limits and routing.  We demonstrate that while distributed arithmetic techniques require storage size exponential  in the number  of coefficients,  the resource utilization of MCMTs usually grows linearly with problem size.  MCMTs have been implemented in Xilinx 4000 and Virtex  FPGAs,  and their  size and speed  efficiency  are confirmed in comparisons  with  Xilinx  LogiCore  and ASIC implementations  of FIR filter designs.  Preliminary results show that the size of MCMT circuits is less than half of that of comparable distributed arithmetic cores.</em></p>
<p><a href="http://content.benyamin.org/benyamin_fccm99.pdf">Download the full paper (PDF)</a>, or browse through the paper below (it looks blurry cuz the font wasn&#8217;t properly embedded, crap.)</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="500" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="doc_758800433737071" /><param name="name" value="doc_758800433737071" /><param name="align" value="middle" /><param name="quality" value="high" /><param name="play" value="true" /><param name="loop" value="true" /><param name="scale" value="showall" /><param name="wmode" value="opaque" /><param name="devicefont" value="false" /><param name="bgcolor" value="#ffffff" /><param name="menu" value="true" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="salign" /><param name="src" value="http://documents.scribd.com/ScribdViewer.swf?document_id=4212907&amp;access_key=key-e94c87t39ep1v0dq2p7&amp;page=&amp;version=1&amp;auto_size=true" /><embed id="doc_758800433737071" type="application/x-shockwave-flash" width="100%" height="500" src="http://documents.scribd.com/ScribdViewer.swf?document_id=4212907&amp;access_key=key-e94c87t39ep1v0dq2p7&amp;page=&amp;version=1&amp;auto_size=true" allowscriptaccess="always" allowfullscreen="true" menu="true" bgcolor="#ffffff" devicefont="false" wmode="opaque" scale="showall" loop="true" play="true" quality="high" align="middle" name="doc_758800433737071"></embed></object></p>
<div style="font-size: 10px; text-align: center; width: 100%;"><a href="http://www.scribd.com/doc/4212907/Optimizing-FPGAbased-vector-product-designs">Optimizing FPGA-based vector product designs</a> &#8211; <a href="http://www.scribd.com/upload">Upload a Document to Scribd</a></div>
<div style="display:none">Read this document on Scribd: <a href="http://www.scribd.com/doc/4212907/Optimizing-FPGAbased-vector-product-designs">Optimizing FPGA-based vector product designs</a></div>
<p>If you are still reading you must be dying to know the answer &#8212; well, in the paper I describe how to use only 10 additions and only powers of 2 multiplies.  See if you can do it by hand!</p>
]]></content:encoded>
			<wfw:commentRss>http://dan.benyamin.org/2008/07/28/optimizing-fpga-based-vector-product-designs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
