<?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>Digital Diary of Ben Schwartz &#187; Xiph</title>
	<atom:link href="http://bemasc.net/wordpress/category/general/projects/xiph/feed/" rel="self" type="application/rss+xml" />
	<link>http://bemasc.net/wordpress</link>
	<description>Like information, but less informative</description>
	<lastBuildDate>Thu, 02 Sep 2010 03:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Oh, Microsoft</title>
		<link>http://bemasc.net/wordpress/2010/05/19/oh-microsoft/</link>
		<comments>http://bemasc.net/wordpress/2010/05/19/oh-microsoft/#comments</comments>
		<pubDate>Wed, 19 May 2010 20:22:53 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1681</guid>
		<description><![CDATA[You are always good for a laugh. Before: In its HTML5 support, IE9 will support playback of H.264 video only. After: In its HTML5 support, IE9 will support playback of H.264 video as well as VP8 video when the user &#8230; <a href="http://bemasc.net/wordpress/2010/05/19/oh-microsoft/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You are always good for a laugh.</p>
<p><a href="http://blogs.msdn.com/ie/archive/2010/04/29/html5-video.aspx"><br />
Before</a>:</p>
<blockquote><p>In its HTML5 support, IE9 will support playback of H.264 video only.</p></blockquote>
<p><a href="http://windowsteamblog.com/windows/b/bloggingwindows/archive/2010/05/19/another-follow-up-on-html5-video-in-ie9.aspx">After</a>:</p>
<blockquote><p>In its HTML5 support, IE9 will support playback of H.264 video as well as VP8 video when the user has installed a VP8 codec on Windows. </p></blockquote>
<p>Time between quotes: three weeks.  I feel sorry for the engineers.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/05/19/oh-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laptop!</title>
		<link>http://bemasc.net/wordpress/2010/05/10/laptop-2/</link>
		<comments>http://bemasc.net/wordpress/2010/05/10/laptop-2/#comments</comments>
		<pubDate>Mon, 10 May 2010 16:35:49 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1660</guid>
		<description><![CDATA[I have a laptop! My new Latitude 13n arrived at the office while I was away, and I picked it up today. It&#8217;s nicely designed, with a solid-feeling all-metal shell. I&#8217;m willing to pay the small weight penalty for rigidity. &#8230; <a href="http://bemasc.net/wordpress/2010/05/10/laptop-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have a laptop! My new Latitude 13n arrived at the office while I was away, and I picked it up today.</p>
<p>It&#8217;s nicely designed, with a solid-feeling all-metal shell.  I&#8217;m willing to pay the small weight penalty for rigidity.  The keyboard seems great so far, and the screen is crisp and bright.  The default subpixel fonts look beautiful.  It&#8217;s a true 16:9 widescreen like most laptops these days, and it feels cinematic to look at.  Dell has not tried very hard to minimize the bezel, which is 2-3 cm all around.  I certainly don&#8217;t have an aesthetic problem with this, though, and it makes room for a nice full-size keyboard and wrist-rest.</p>
<p>The system came with Dell&#8217;s Ubuntu 9.10.  There&#8217;s no Windows sticker or certificate of authenticity, but there is still an unfortunate Windows key.  The software configuration, after using it for 10 minutes, has its ups and downs.</p>
<p>On the plus side, it&#8217;s a decent basic fresh install of Ubuntu.  The only visible Dell-specific customization, and the only item on the desktop, is &#8220;Create Dell Recovery Media&#8221;, a program to create a USB stick (or CD if I had a CD drive) to restore the system software.  There&#8217;s also an Ubuntu Install CD in the box, but this isn&#8217;t hugely helpful for a machine with no optical drives.</p>
<p>The Fn keys, like brightness and volume controls, seem to be well-integrated with the software.  The wireless enable/disable seems to work as well, although the first time I tried it I got a kernel oops.  I was notified of the oops by an oops-reporter tray icon, which offered to report the oops to kerneloops.org, then failed because the kernel image was &#8220;not a valid Ubuntu package&#8221;, or something to that effect.</p>
<p>The default application choices seem a little odd, but they&#8217;re probably Ubuntu&#8217;s, not Dell&#8217;s.  The major list is pretty short: OO.o, GIMP, XSane, Empathy, Firefox, Evolution, Brasero, Rhythmbox, Tomboy, F-Spot, Bittorrent client, RDP client.</p>
<p>Intriguingly, the system seems to ship with no proprietary audio or video codecs, with the exception of the Adobe Flash 10 browser plugin, which is so far the only piece of non-free software I&#8217;ve identified on the system.  Theora and Vorbis are of course installed, both in gstreamer and Firefox.</p>
<p>The system has compositing enabled, but the graphics don&#8217;t seem to be running fast enough to produce smooth whizzing animations.  I&#8217;m surprised by this, given the Intel X4500 series GPU.  I suspect a driver upgrade would make this much better.  I can think of a few other minor issues too.  For example, the default spell checking language in this Firefox window is set to Austrian German (de_AT), despite my specifically selecting en_US during the first-boot configuration wizard.</p>
<p>I ordered the machine with a webcam, but the default install doesn&#8217;t contain any software with which to check that the camera is working.  &#8220;Ubuntu Software Center&#8221; shows Cheese but provides no option to install it until after first going to Synaptic and hitting &#8220;reload&#8221;.  It seems that the system ships with only the info for packages that are already installed, and Ubuntu Software Center has no way to retrieve updates.  This seems like a problematic design.  After installing Cheese, though, the camera does seem to work well.</p>
<p>The touchpad defaults to edge-scrolling mode, with an option in System -> Mouse Preferences for two-finger scrolling.  Unfortunately this option doesn&#8217;t actually work, even when configured via gpointing-device-settings.</p>
<p>Of course all of these niggles pale in comparison to the alternative, Windows.  Booting into a working Linux distro out of the box is a welcome improvement over the usual rigmarole.</p>
<p><strong>UPDATE:</strong> I clicked a big button that said something like &#8220;Upgrade to Ubuntu 10.04&#8243;, and when I woke up this morning these problems were improved.  No more kernel oops.  Windows swish smoothly.  Mouse controls no longer offer multi-touch, which is at least better than offering an option with no effect.  There&#8217;s also a video editor in the default install.  In short, it seems like a nice upgrade.  The inverse color theme, like the one I loved in Windows 3.1 at age 8, makes the laptop seems like a real infoweapon.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/05/10/laptop-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Now I&#8217;m on CNET</title>
		<link>http://bemasc.net/wordpress/2010/03/05/now-im-on-cnet/</link>
		<comments>http://bemasc.net/wordpress/2010/03/05/now-im-on-cnet/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 20:11:25 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1554</guid>
		<description><![CDATA[The web is super weird. Now I&#8217;m on CNET. The article, by Stephen Shankland, is fairly even-handed, and a good introduction to the licensing problems, with solid quotes from the MPEGLA. Of course, it comes from a philosophy of who&#8217;s &#8230; <a href="http://bemasc.net/wordpress/2010/03/05/now-im-on-cnet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The web is super weird.  Now <a href="http://news.cnet.com/8301-30685_3-20000101-264.html">I&#8217;m on CNET</a>.  The article, by Stephen Shankland, is fairly even-handed, and a good introduction to the licensing problems, with solid quotes from the MPEGLA.  Of course, it comes from a philosophy of <em>who&#8217;s likely to be sued</em>, which is not quite the same as <em>what&#8217;s legal</em>.  It also notes that this means a wedding videographer would definitely need to buy an encoder license from MPEG-LA, even if they&#8217;ve purchased Final Cut for editing, which is a great example of the point I was trying to make.</p>
<p>Last night on the bus home I saw a woman listening to music on some fancyphone.  To find a song, she would open YouTube&#8217;s webpage on the inconveniently small screen, search for an artist + track, play the music video, and turn over the phone in her lap.  To her, it&#8217;s basically an audio site.</p>
<p>The inefficiency of this approach is mind-boggling.  At YouTube&#8217;s lowest quality setting, the video still costs about quadruple the audio bitrate.  This costs YouTube and the cell carrier a lot of money, for nothing.  Well, not quite nothing.  The accompanying video is supposed to somehow make this experience &#8220;promotional&#8221; and distinct from buying the track on iTunes (or CD, if you can find somewhere that still sells CDs).</p>
<p>The record companies are underestimating how fast norms shift.  As smartphones become more prevalent and we run up against the aggregate wireless bandwidth limit, I suspect we may yet <del>see</del> hear advertising-supported audio-only YouTube.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/03/05/now-im-on-cnet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lessig</title>
		<link>http://bemasc.net/wordpress/2010/02/27/lessig/</link>
		<comments>http://bemasc.net/wordpress/2010/02/27/lessig/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 15:40:40 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1551</guid>
		<description><![CDATA[On Thursday night I attended a great lecture by Lawrence Lessig, founder of the Free Culture movement. His lectures edge into the realm of spoken-word performance. The recording, if you&#8217;d like to see it, is here. Flumotion did a great &#8230; <a href="http://bemasc.net/wordpress/2010/02/27/lessig/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On Thursday night I attended a great lecture by Lawrence Lessig, founder of the Free Culture movement.  His lectures edge into the realm of spoken-word performance.  The recording, if you&#8217;d like to see it, is <a href="http://www.flumotion.com/blog/2010/02/26/flumotion-com/copyright-in-the-digital-age-video-lecture-by-lawrence-lessig/">here</a>.  Flumotion did a great job with the live stream, although they didn&#8217;t quite seem to have enough bandwidth for the number of viewers they got, and they used a Theora encoder from four years ago.</p>
<p>The talk&#8217;s central theme, I think, is easy enough to describe: video (and multimedia) is moving into a position in our culture comparable to writing, and so we need to treat movies the way we treat text.  Of course, that&#8217;s only the smallest fraction of the wide range of topics covered, from the dangers of a hazy Fair Use exemption (&#8220;Fair Use is the right to hire a lawyer&#8221;) to a plug for Lessig&#8217;s anticorruption work at <a href="http://www.fixcongressfirst.org/">Fix Congress First!</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/02/27/lessig/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>No, you can&#8217;t do that with H.264</title>
		<link>http://bemasc.net/wordpress/2010/02/02/no-you-cant-do-that-with-h264/</link>
		<comments>http://bemasc.net/wordpress/2010/02/02/no-you-cant-do-that-with-h264/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 02:40:53 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1521</guid>
		<description><![CDATA[A lot of commercial software comes with H.264 encoders and decoders, and some computers arrive with this software preinstalled. This leads a lot of people to believe that they can legally view and create H.264 videos for whatever purpose they &#8230; <a href="http://bemasc.net/wordpress/2010/02/02/no-you-cant-do-that-with-h264/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A lot of commercial software comes with <a href="http://en.wikipedia.org/wiki/H.264">H.264</a> encoders and decoders, and some computers arrive with this software preinstalled.  This leads a lot of people to believe that they can legally view and create H.264 videos for whatever purpose they like.  Unfortunately for them, it ain&#8217;t so.</p>
<p>Maybe the best example comes from the <a href="http://images.apple.com/legal/sla/docs/finalcutstudio2.pdf">Final Cut Pro license</a>:</p>
<blockquote><p>
To the extent that the Apple Software contains AVC encoding and/or decoding functionality, commercial use of H.264/AVC requires additional licensing and the following provision applies: THE AVC FUNCTIONALITY IN THIS PRODUCT IS LICENSED HEREIN ONLY FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD (&#8220;AVC VIDEO&#8221;) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR AVC VIDEO THAT WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC VIDEO. INFORMATION REGARDING OTHER USES AND LICENSES MAY BE OBTAINED FROM MPEG LA L.L.C. SEE HTTP://WWW.MPEGLA.COM.
</p></blockquote>
<p>The text could hardly be clearer: you do not have a license for commercial use of H.264.  Call it &#8220;Final Cut <del>Pro</del> Hobbyist&#8221;.  Do you post videos on your website that has Google Adwords? Do you edit video on a consulting basis? Do you want to include a video in a package sent to your customers? Do your clients send you video clips as part of your business? Then you&#8217;re using the encoder or decoder for commercial purposes, in violation of the license.</p>
<p>Now, you might think &#8220;but I&#8217;m sticking with MPEG-4, or MPEG-2, so it&#8217;s not a problem for me&#8221;.  No.  It&#8217;s just as bad.  Here&#8217;s the relevant section of the license:</p>
<blockquote><p>
<strong>13. MPEG-2 Notice.</strong> To the extent that the Apple Software contains MPEG-2 functionality, the following provision applies: ANY USE OF THIS PRODUCT OTHER THAN CONSUMER PERSONAL USE IN ANY MANNER THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSE IS AVAILABLE FROM MPEG LA, L.L.C., 250 STEELE STREET, SUITE 300, DENVER, COLORADO 80206.<br />
<strong>14. MPEG-4 Notice.</strong> This product is licensed under the MPEG-4 Systems Patent Portfolio License for encoding in compliance with the MPEG-4 Systems Standard, except that an additional license and payment of royalties are necessary for encoding in connection with (i) data stored or replicated in physical media which is paid for on a title by title basis and/or (ii) data which is paid for on a title by title basis and is transmitted to an end user for permanent storage and/or use. Such additional license may be obtained from MPEG LA, LLC. See http://www.mpegla.com for additional details. This product is licensed under the MPEG-4 Visual Patent Portfolio License for the personal and non-commercial use of a consumer for (i) encoding video in compliance with the MPEG-4 Visual Standard (“MPEG-4 Video”) and/or (ii) decoding MPEG-4 video that was encoded by a consumer engaged in a personal and non-commercial activity and/or was obtained from a video provider licensed by MPEG LA to provide MPEG-4 video. No license is granted or shall be implied for any other use. Additional information including that relating to promotional, internal and commercial uses and licensing may be obtained from MPEG LA, LLC.
</p></blockquote>
<p>Noticing a pattern?  You have a license to use their software, provided you don&#8217;t make any money, your friends are <em>also</em> all correctly licensed, and you only produce content that complies with the MPEG standard.  Using video for a commercial purpose?  Producing video that isn&#8217;t within MPEG&#8217;s parameters? Have friends who use unlicensed encoders like x264, ffmpeg, or xvid? Too bad.</p>
<p>This last thing is actually a particularly interesting point.  If you encode a video using one of these (open-source) unlicensed encoders, you&#8217;re practicing patents without a license, and you can be sued.  But hey, maybe you&#8217;re just a scofflaw.  After all, it&#8217;s not like you&#8217;re making trouble for anyone else, right?  Wrong.  If you send a video to a friend who uses a licensed decoder, and they watch it, you&#8217;ve caused them to violate their own software license, so they can be sued too.</p>
<p>Oh, and in case you thought this was specific to Apple, here&#8217;s the matching piece from the <a href="http://download.microsoft.com/Documents/UseTerms/Windows%207_Ultimate_English_c44ca3df-8338-4a2f-a176-39d2e68986c4.pdf">Windows 7 Ultimate License</a>:</p>
<blockquote><p>
<strong>18. NOTICE ABOUT THE H.264/AVC VISUAL STANDARD, THE VC-1 VIDEO STANDARD, THE  MPEG-4 VISUAL STANDARD AND THE MPEG-2 VIDEO STANDARD.</strong> This software includes H.264/AVC, VC-1, MPEG-4 Part 2, and MPEG-2 visual compression technology. MPEG LA, L.L.C. requires this notice:<br />
THIS PRODUCT IS LICENSED UNDER THE AVC, THE VC-1, THE MPEG-4 PART 2 VISUAL, AND THE MPEG-2 VIDEO PATENT PORTFOLIO LICENSES FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE ABOVE STANDARDS (“VIDEO STANDARDS”) AND/OR (ii) DECODE AVC, VC-1, MPEG-4 PART 2 AND MPEG-2 VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE SUCH VIDEO. NONE OF THE LICENSES EXTEND TO ANY OTHER PRODUCT REGARDLESS OF WHETHER SUCH PRODUCT IS INCLUDED WITH THIS PRODUCT IN A SINGLE ARTICLE. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE WWW.MPEGLA.COM.
</p></blockquote>
<p>Doesn&#8217;t seem so Ultimate to me.</p>
<p>My advice: use a <a href="http://theora.org">codec</a> that doesn&#8217;t need a license:</p>
<blockquote><p>
<strong>Q. What is the license for Theora?</strong><br />
Theora (and all associated technologies released by the Xiph.org Foundation) is released to the public via a BSD-style license. It is completely free for commercial or noncommercial use. That means that commercial developers may independently write Theora software which is compatible with the specification for no charge and <strong>without restrictions of any kind</strong>.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2010/02/02/no-you-cant-do-that-with-h264/feed/</wfw:commentRss>
		<slash:comments>81</slash:comments>
		</item>
		<item>
		<title>Semiconductor prediction: long term</title>
		<link>http://bemasc.net/wordpress/2009/12/30/semiconductor-prediction-long-term/</link>
		<comments>http://bemasc.net/wordpress/2009/12/30/semiconductor-prediction-long-term/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 05:29:33 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1495</guid>
		<description><![CDATA[Disclaimer: I don&#8217;t know anything about this stuff. I mostly code Python. Setup Computer chips (that includes CPUs, GPUs, RAM, and solid-state storage) are expensive. They&#8217;re expensive because they&#8217;re made in ultra-high-tech lithographic fabs that cost over a billion dollars &#8230; <a href="http://bemasc.net/wordpress/2009/12/30/semiconductor-prediction-long-term/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Disclaimer: I don&#8217;t know anything about this stuff.  I mostly code Python.</p>
<p><strong>Setup</strong></p>
<p>Computer chips (that includes CPUs, GPUs, RAM, and solid-state storage) are expensive.  They&#8217;re expensive because they&#8217;re made in ultra-high-tech lithographic fabs that cost over a billion dollars to build.  The chips have to be expensive because the fab&#8217;s cost must be amortized in the limited amount of time before the next process shrink, at which point the old fabs are obsolete (or at least behind the times).</p>
<p>As many have noted, there&#8217;s a fundamental limit to how many more process shrinks we can have.  The latest chips are being produced at a 32 nm process.  If you&#8217;re willing to extrapolate out Moore&#8217;s law for transistor density, then in about 20 years we&#8217;ll be at 1 nm process, and further shrinkage is impossible because that&#8217;s about the size of a single atom.  If you&#8217;re a pessimist you think progress will stop sooner, and if you&#8217;re an optimist you think we&#8217;ll reach that limit sooner, so either way, we&#8217;re likely to be mostly done within a decade or two.</p>
<p>As process improvement becomes incremental, the commercial lifetime of fabs will increase dramatically, and the same is true of semiconductor designs.  An Intel Core i7 is mostly faster than a Pentium II because of process shrinks.  Without changes in process, a single chip design could be sold until the dominant cost consideration is the raw materials themselves&#8230; and with high volumes, I suspect that even ultra high purity silicon isn&#8217;t all that expensive.</p>
<p><strong>Prediction</strong></p>
<p>The question then is: if silicon is cheap, what do you put on it?  From my perspective, the answer is &#8220;everything&#8221;.  Different kinds of tasks require very different kinds of functions, and the most efficient implementation of any task, measured in time or power, is always a special-purpose circuit.  A general-purpose computer might be used for word processing, massively multithreaded relational databases, sound manipulation, 3D graphics, physics simulation, videoconferencing, or some obscure low-latency stream processing.  These tasks are respectively most efficiently accomplished by a few general-purpose CPUs, a massive number of logic-focused processors, DSP with hardware FFT, a GPU pipeline, an enormously wide floating-point vector machine, codec-specific encode/decode/muxing, and an FPGA.  A future main chip might contain all these functions on a single die.  If you&#8217;re not using them, they don&#8217;t draw power, and so are &#8220;free&#8221;.</p>
<p>This trend has very much already started, to the point that the most dubious thing about this prediction may be calling it &#8220;long term&#8221;.  Today, AMD/ATi, Intel, and VIA each sell a complete package of: a general-purpose CPU, a vector unit attached to the CPU, a GPU with a 3D pipeline, a huge vector unit accessible on the GPU, and codec-specific demux and decode for roughly 5 different codecs.  Texas Instruments OMAP3 includes all that (though smaller), plus a DSP.  Both AMD and Intel have vowed to combine their functions onto a single die in the near future.  Sun has demonstrated the effectiveness of Niagara in certain workloads, and Tilera and Intel&#8217;s Larrabee have moved even further down the polycore path.</p>
<p><strong>Software Architecture Implications</strong></p>
<p>One remarkable issue apparent with the growth of GPUs is how hard it is to allocate resources in heterogeneous environments.  I&#8217;m not aware of any operating system that actually attempts to schedule processes on graphics cards or DSPs.  This lack of scheduling hasn&#8217;t been a terrible issue in practice &#8230; because software that makes use of these special-purpose processors is so hard to write that most of a user&#8217;s software doesn&#8217;t require it!</p>
<p>The best approach I&#8217;ve seen to making use of special-purpose hardware is the one beginning to bubble up in the Gstreamer project.  Gstreamer is a semi-special-purpose dataflow framework that knows something about the nature of the data that is flowing.  Specifically, it knows the type of the data, the series of high-level operations that are needed, and the available implementation of these operations.  Soon, it will know something about the underlying hardware, and the costs of performing operations in various places.  The goal, then, is to be able to say &#8220;overlay the text from this file, rendered in this font, over this video, and display to this screen&#8221;, and let gstreamer work how which system components should be responsible for which steps.  For multimedia, this is exactly the right way.</p>
<p>I think this is the way forward: a framework in which one composes high-level operations on typed inputs.  If this becomes popular enough, then we really will have a scheduling problem, which leads me to a prediction: gstreamer or its successor will be integrated with the kernel, and especially the scheduler.  The only way a scheduler will be able to allocate these heterogeneous resources effectively is if it can see the detailed structure of the tasks themselves.  It needs to see things like the relationship between different pieces&#8217; realtime deadlines, and the different possible processor allocations for all running pipelines.  This is especially important given the bizarre topologies that seem to be inevitable in designs like Tilera&#8217;s.</p>
<p><strong>Software Politics Implications</strong></p>
<p>Right now, integrated chips like TI&#8217;s OMAP are also among the worst offenders in the area of proprietary drivers and undocumented functionality.  To a businessman focused on differential gains, this makes perfect sense, because there&#8217;s nothing a corporation hates more than commoditization.  By keeping the public abstraction barrier high, the manufacturer raises the costs for others to reproduce its work, limiting the ability of competition to squeeze prices against manufacturing costs.  As semiconductor production becomes increasingly commoditized, the incentive to hide the functioning of the chip becomes higher and higher.</p>
<p>The other problem is that even if the designs aren&#8217;t secret, the choice of which functions to implement has a huge impact on the choice of software.  The example of the moment is the ubiquitous MPEG-4 accelerator chips.  They implement the patented algorithms required to decode MPEG-4, requiring licensing fees both to produce and to use.  They are largely undocumented, perhaps due to fear by their manufacturers that releasing documentation would be seen as encouraging patent infringement.  As long as patents on software are enforced, some component of a complex chip will likely require a patent license to use.  It&#8217;s not just video codecs, either: an obvious example of the moment might be a .NET/CLI bytecode acceleration unit.</p>
<p>At a higher level, there&#8217;s a political question about compatibility.  Currently, CPUs (even of different architectures) are all essentially C processing units, and so most code written in C (or higher) will run across any of them with nothing more than a recompile (and often less than a recompile).  As chips acquire more special-purpose functional units, making use of them is going to require something more than ISO C.  If chipmakers don&#8217;t agree ahead of time to standard abstraction barriers (like OpenGL or VHDL), it could quickly become quite difficult to build an operating system that runs the same applications on multiple architectures.  DSPs are already in this position, requiring hand-tuned assembler that&#8217;s different for every DSP.  Moreover, manufacturers who fear commoditization will shun standards, rendering it almost impossible to use the whole chip without tying yourself to it.  We can work around this, by providing high-level operators (e.g. a Theora decoder) with many different backends, but an enormous amount of labor will be required.</p>
<p><strong>Open Issues</strong></p>
<p>My number one unanswered question is: what will the memory topology look like?  I&#8217;m fairly certain it&#8217;s going to look complicated, and severely nonuniform, but beyond that I&#8217;m stumped.  My best guess is that the components of a chip will be wired together by an on-chip bus, with independent caches and maybe a few different main RAM banks.</p>
<p>As silicon gets faster though, I wonder if the latency to main memory will become unbearable.  The only solution is to move the memory closer to the chips, onto the same die.  IBM&#8217;s POWER designs seem to be headed this way already, with DRAM on the CPU.  If you already have NUMA, then naturally you want the memory to be nearest to its functional unit&#8230; or perhaps the reverse!  Maybe the future is widely separated functional units, each surrounded by its own RAM bank.</p>
<p>The really interesting question here, though, is what happens if nonvolatile RAM picks up.  Will we have memory, storage, and processing, all mixed up in a single bank of identical chips?  Maybe cache, RAM, and disk will be replaced by a continuum, from the bits that are closest, and therefore fastest, to the ones that are furthest away.</p>
<p>That would be cool.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2009/12/30/semiconductor-prediction-long-term/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Old bugs fixed</title>
		<link>http://bemasc.net/wordpress/2009/11/06/old-bugs-fixed/</link>
		<comments>http://bemasc.net/wordpress/2009/11/06/old-bugs-fixed/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 05:38:11 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1445</guid>
		<description><![CDATA[In the process of testing Cortado on old operating systems, we discovered that using a recent compiler produced bytecode that wouldn&#8217;t run on Sun JDK 1.1. Instead, we got IllegalMonitorState exceptions in an infinite loop. A little bit of searching &#8230; <a href="http://bemasc.net/wordpress/2009/11/06/old-bugs-fixed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In the process of testing Cortado on old operating systems, we discovered that using a recent compiler produced bytecode that wouldn&#8217;t run on Sun JDK 1.1.  Instead, we got IllegalMonitorState exceptions in an infinite loop.</p>
<p>A little bit of searching made it clear that we weren&#8217;t the only ones who&#8217;d experienced this problem.  There were <a href="http://forums.sun.com/thread.jspa?threadID=196703&#038;forumID=37">reports</a> going back to 2001 that Sun had introduced some sort of bug in their compiler in version 1.4.  We verified that going back to an old compiler produced code that worked for us, again.</p>
<p>Today Greg Maxwell constructed a minimal test case and printed out the disassembled bytecode produced with old and new compilers.  One difference stood out: the new compiler introduced a circular exception handler at the end of a synchronized block.  I looked around, and sure enough, this behavior <a href="http://bugs.sun.com/view_bug.do?bug_id=4414101">drew complaints</a> when it first appeared over eight years ago.</p>
<p>Rather than attempt to convince the compiler authors that their code has a logical fallacy, or somehow fix ten-year-old versions of closed-source software, we instead decided to add <a href="http://sourceforge.net/tracker/?func=detail&#038;aid=2893068&#038;group_id=54750&#038;atid=474704">a workaround</a> into <a href="http://proguard.sourceforge.net/">ProGuard</a>, a bytecode post-processor that we are already using to shrink Cortado by 30% for faster downloads.</p>
<p>There&#8217;s an interesting question here as to what, exactly, the bug is.  Is it a code generation bug, in which the compiler produces bytecode that will not run correctly on the Java 1.1 target?  Or is it a JVM bug, exposed by newer compilers that make use of previously untested edge cases?  This is a case of Software Development Relativity: the number of bugs is conserved, but their precise location depends on your reference frame.</p>
<p>Anyway, I think this is a nice short story about the power of an open development model.  We found a bug somewhere in a complex system, and wound up putting a fix in the component whose maintainers, we hope, will be most receptive to it.  When one avenue is cut off, open source finds another route.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2009/11/06/old-bugs-fixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cortado</title>
		<link>http://bemasc.net/wordpress/2009/11/02/cortado/</link>
		<comments>http://bemasc.net/wordpress/2009/11/02/cortado/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 03:57:32 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Xiph]]></category>

		<guid isPermaLink="false">http://bemasc.net/wordpress/?p=1435</guid>
		<description><![CDATA[A project I&#8217;ve been playing with recently is Ogg Theora&#8217;s Cortado, a free video player designed to be able to run on an extremely wide variety of computers, including old, obsolete systems. How old, you ask? Really old: This is &#8230; <a href="http://bemasc.net/wordpress/2009/11/02/cortado/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A project I&#8217;ve been playing with recently is Ogg Theora&#8217;s <a href="http://theora.org/cortado/">Cortado</a>, a free video player designed to be able to run on an extremely wide variety of computers, including old, obsolete systems.  How old, you ask?</p>
<p>Really old:<br />
<div id="attachment_1436" class="wp-caption alignnone" style="width: 310px"><a href="http://bemasc.net/wordpress/wp-content/uploads/2009/11/Screenshot-sheep.png"><img src="http://bemasc.net/wordpress/wp-content/uploads/2009/11/Screenshot-sheep-300x235.png" alt="Screenshot of Cortado playing a video in SheepShaver" title="Screenshot-sheep" width="300" height="235" class="size-medium wp-image-1436" /></a><p class="wp-caption-text">Screenshot of Cortado playing a video in SheepShaver</p></div></p>
<p>This is a picture of Cortado running on Mac OS 7.5.5, in the Macintosh Runtime for Java 2.0, playing the video from the FSF&#8217;s <a href="http://www.fsf.org/news/video_testimonials_campaign/">freedom testimonials campaign</a>.  This operating system was released in 1996.  The system is emulated in <a href="http://gwenole.beauchesne.info//en/projects/sheepshaver">SheepShaver</a>, which makes playback far too slow to be usable.  Someone will have to test on real hardware to see what happens.</p>
<p>Nonetheless, I think this is strong evidence regarding how serious we are about backwards compatibility and inclusive software.  Serious, or at least, enthusiastic.</p>
]]></content:encoded>
			<wfw:commentRss>http://bemasc.net/wordpress/2009/11/02/cortado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
