<?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>Observations from Uppsala &#187; uncategorized</title>
	<atom:link href="http://jakob.engbloms.se/archives/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>http://jakob.engbloms.se</link>
	<description>Computer Technology: Simulation, Virtualization, Virtual Platforms, Embedded, Multicore and Multiprocessing (by Jakob Engblom)</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
    <title>Observations from Uppsala</title>
    <url>http://jakob.engbloms.se/favicon.png</url>
    <link>http://jakob.engbloms.se</link>
    <width>32</width>
    <height>32</height>
    <description>Observations from Uppsala - http://jakob.engbloms.se</description>
    </image>		<item>
		<title>Off-Topic: Lalandia Billund (Vacation)</title>
		<link>http://jakob.engbloms.se/archives/1162?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1162#comments</comments>
		<pubDate>Tue, 06 Jul 2010 19:40:31 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[off-topic]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[Billund]]></category>
		<category><![CDATA[Denmark]]></category>
		<category><![CDATA[lalandia]]></category>
		<category><![CDATA[vacation]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1162</guid>
		<description><![CDATA[Another Summer vacation has come around, and as usual that causes a blog post or two on Summer tips and comments on places where I have been. This year, we went down to Denmark to visit the city of Billund, home to Legoland and Lalandia. Lalandia is an interesting mix of indoors activity center and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/07/lalandialogo.png"><img class="alignleft size-full wp-image-1163" style="margin-left: 5px; margin-right: 5px;" title="lalandialogo" src="http://jakob.engbloms.se/wp-content/uploads/2010/07/lalandialogo.png" alt="" width="136" height="64" /></a>Another Summer vacation has come around, and as usual that causes a blog post or two on Summer tips and comments on places where I have been. This year, we went down to Denmark to visit the city of Billund, home to Legoland and Lalandia. <a href="http://www.lalandia.dk/uk/Pages/forside.aspx">Lalandia </a>is an interesting mix of indoors activity center and camping village. We rented a house there for our vacation, and are overall very pleased with the place.</p>
<p><span id="more-1162"></span>The houses at Lalandia are all very new, the block where we stayed (the one furthest away from the central building) cannot be more than two years old. They have not finished the roads yet, nor are the lawns completely grown up.</p>
<p>Everything feels fresh and new, and you cannot complain about the standard of the houses.You have a fully equipped kitchen, as well as a dishwasher and a washing machine &#8211; families with children is clearly the target audience. You do need to bring some basic household supplies with you from home, there are no spices, washing powder, or dishwasher tables available in the houses. You have to pay for electricity and water in addition to the basic rent, which feels unnecessarily stingy as the basic rent is pretty high and the cost for utilities ends up being about one or two percent of the cost. I guess it is a way to steer people towards not wasting resources, though.</p>
<p>Lalandia is intended mainly for visitors who come by car. Each house has two parking spaces in front of it, and the idea is clearly that several families can share a house. The smallest houses are sufficient for four adults, we rented a six-person house (which worked well with five adults and two children), and there are also eight-person houses available in a few different styles. Since the place is next door to Billund Airport, you could also fly in, distances are short enough that you don&#8217;t really need a car during your stay anyway (you can literally walk from the airport terminal to Lalandia and Legoland). The airport does cause the occasional burst of noise as aircraft take off, but is was not really bothersome while we where there.</p>
<p>Since you are likely to cook most of your food yourself, you also need to go buy it somewhere. There is a somewhat pricey &#8220;supermarket&#8221; in the main building, which is almost impossible to avoid thanks to its convenient location and good opening hours. Shopping in downtown Billund is about ten minutes walk away, but this being a small town, shop hours are pretty poor, 9-18 or 9-19, shorter on Saturdays and closed (!) on Sundays. This was  a surprise for someone used to Swedish shop hours which tend to be 10-22 all days all weeks. Try to arrive on a weekday, or bring lots of supplies for the first day.</p>
<p>It also seems that Denmark is not quite as credit-card-friendly as other countries. If you use a foreign card, they charge you, the customer, the 2.5 to 3% charge that the credit card company charges the store. This is something I have only seen in very small shops living on tight margins in Sweden, and in the Netherlands. In everyday life, this never happens in Sweden or the US, or in most other countries. The fact that Denmark is outside the Eurozone makes some of these charges possible, since the tougher EU rules against card charges currently only applies to transactions in Euros. To be fair, Lalandia actually has lower credit card charges than other places in Billund.</p>
<p>I read a number of online reviews of Lalandia, and they tended to complain that Denmark is expensive. I can agree, it feels about 20-25% more expensive than Sweden, but it is not astronomical or any worse than downtown München or Paris or London.</p>
<p>Lalandia itself is really not about the houses or the food or credit card charges, though. It is a waterpark, and the hangar-like main building contains the Aquadome, biggest waterpark I have ever seen. It also holds a fairly camp indoor fake Mediterranean town square (with a roof painted like a blue sky), an indoors playground, a gym, and several restaurants (which we never tried). It reminds me of the plastic fake milieus in Disneyland Florida.</p>
<p>The Aquadome is just fantastic! It is claimed to be the biggest water park in Scandinavia, and I can certainly believe that. It is all indoors, except a small section on the outside that you can swim out to from the inside. It has the best water slides I have ever tried, all of which require you to use some form of craft to go down. They also all leave the building and come back in, making for a very dramatic ride. See the picture below for how the water slides protrude from the building. The biggest tube is a water slide where you ride four people at once, on a four-person rubber raft!</p>
<p style="text-align: left;"><a href="http://jakob.engbloms.se/wp-content/uploads/2010/07/lalandia.jpg"><img class="aligncenter size-full wp-image-1164" style="margin-top: 10px; margin-bottom: 10px;" title="lalandia" src="http://jakob.engbloms.se/wp-content/uploads/2010/07/lalandia.jpg" alt="" width="536" height="362" /></a>There were pools with activities suitable for children as small as one year, and all the way up to those who rather 40 than 4 years old.  Very impressive. You need several visits to explore all the options, and fortunately unlimited access is part of the package with the holiday homes.</p>
<p style="text-align: left;">It is annoying that they do not allow you to bring your own food inside.  Since we have some allergies in the family, it is not that easy to find  food that is safe, and we would much prefer to bring our own. Overall,  you do get the feeling that they are trying a bit too hard to make you  part with your money; it is a bit too aggressive to feel entirely right.</p>
<p style="text-align: left;">Legoland Denmark is right across the street from Lalandia&#8217;s main building, and I will write a separate blog post about that.</p>
<p style="text-align: left;">A final note is that the ownership structure of Lalandia is interesting. Each house is actually privately owned, and the Lalandia company is just a broker organizing the renting-out of the houses. The are still selling houses, and claim that the yearly cost with mortgages is no higher than the cost of renting for a week. It does look like quite a few Norwegians have taken up on the offer, judging from the large number of expensive cars from Norway we saw parked in front of something like half the houses.</p>
<p style="text-align: left;">
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1162"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1162" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1162" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1162/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Third Swedish Workshop on Multicore: Call for Papers</title>
		<link>http://jakob.engbloms.se/archives/1156?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1156#comments</comments>
		<pubDate>Sat, 26 Jun 2010 18:34:55 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[MCC]]></category>
		<category><![CDATA[Swedish Workshop on Multicore Computing]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1156</guid>
		<description><![CDATA[The call for papers for the third annual Swedish Workshop on Multicore Computing (MCC10) is now out! MCC is a nice venue for multicore research about everything from computer design to software and debug. It is fairly informal, but still attracts some good papers and provides good discussions. It is not restricted to Swedish submissions, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-124 alignleft" style="margin: 0px 10px;" title="coreshrink" src="http://jakob.engbloms.se/wp-content/uploads/2008/05/coreshrink.png" alt="" width="100" height="100" /></p>
<p>The <a href="http://www.chalmers.se/cse/mcc10-en/call-for-papers">call for papers for the third annual Swedish Workshop on Multicore Computing (MCC10) </a>is now out! MCC is a nice venue for multicore research about everything from computer design to software and debug. It is fairly informal, but still attracts some good papers and provides good discussions. It is not restricted to Swedish submissions, in 2009 there were several international participants. I gave a <a href="http://jakob.engbloms.se/archives/1023">keynote talk about multicore and Simics</a> at last year&#8217;s MCC, and for this year, I am on the program committee and looking forward to many great submissions to review!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1156"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1156" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1156" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1156/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joel Spolsky: You cannot program parallel in C, period</title>
		<link>http://jakob.engbloms.se/archives/953?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/953#comments</comments>
		<pubDate>Sun, 11 Oct 2009 17:40:11 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Joel Spolsky]]></category>
		<category><![CDATA[stackoverflow.com]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=953</guid>
		<description><![CDATA[I found this quote in Stackoverflow Podcast #68 quite funny in its extreme dislike of parallel programming in C&#8230; Thanks to the community transcripts wiki: Spolsky: Quite probably. I mean C is a car, it&#8217;s very dangerous – it doesn&#8217;t have seatbelts, but it&#8217;s very powerful because it goes very fast. In fact, I&#8217;d go [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png"><img class="alignleft size-full wp-image-300" style="margin: 5px 10px;" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="stackoverflowlogo250hq2" width="47" height="61" /></a>I found this quote in <a href="http://blog.stackoverflow.com/2009/09/podcast-68/">Stackoverflow Podcast #68 </a>quite funny in its extreme dislike of parallel programming in C&#8230;</p>
<p><span id="more-953"></span>Thanks to the <a href="https://stackoverflow.fogbugz.com/default.asp?W29083">community transcripts wiki</a>:</p>
<blockquote><p><strong>Spolsky: </strong>Quite probably. I mean C is a car, it&#8217;s very dangerous – it doesn&#8217;t have seatbelts, but it&#8217;s very powerful because it goes very fast. In fact, I&#8217;d go so far as to say, unless some people are gonna punch me about this one, but you cannot write multi-threaded code in the C programming language. You just can&#8217;t. Although technically all the capabilities are there, it is <em>beyond</em> the capability of mortal humans – and I know, some of you out there are very smart and you think that you have the capability of writing multi-threaded code in the C programming language, because you&#8217;re hot shit. Well, let me tell you, it is <em>beyond </em>the capability of humans on this planet, for their brains are just not adequate to the task of writing multi-threaded code in <em>most</em> languages, least of all low-level languages like C. It&#8217;s just not gonna work, it&#8217;s just not gonna make you happy. So there.</p></blockquote>
<p>The only problem with this statement is that it means we are all doomed: since all operating systems are written in C, and all low-level libraries, it means that we have no way to build the first level of abstraction needed to provide the higher-level primitives for C# and Python and everything else higher up the stack.</p>
<p>But in general, I think this is a fairly true statement for volume programming.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/953"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/953" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/953" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/953/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Eclipse Linux Kernel Indexing Works</title>
		<link>http://jakob.engbloms.se/archives/338?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/338#comments</comments>
		<pubDate>Sun, 01 Feb 2009 17:10:18 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[ESL]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Linux kernel]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[Simon Kågström]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=338</guid>
		<description><![CDATA[Edited on 2009-Feb-01, to include the link to the illustrated guide that really helps you get there faster. Thanks Simon! Also, promoted to front page, original post was put up on 2008-Nov-09. Thanks to Simon Kågströms post (and the even better second-generation with screenshots) about using Eclipse for the Linux kernel, I have a much [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-339 alignleft" style="margin: 5px 10px;" title="eclipse_wide_logo" src="http://jakob.engbloms.se/wp-content/uploads/2008/11/eclipse_wide_logo.jpg" alt="" width="131" height="68" /> <img class="size-medium wp-image-329 alignright" style="margin-left: 10px; margin-right: 10px;" title="penguin-variant" src="http://jakob.engbloms.se/wp-content/uploads/2008/11/penguin-variant.png" alt="" width="100" height="118" /> <em>Edited on 2009-Feb-01,  to include the link to the illustrated guide that really helps you get there faster. Thanks Simon! Also, promoted to front page, original post was put up on 2008-Nov-09.</em></p>
<p>Thanks to <a href="http://simonkagstrom.livejournal.com/31079.html?view=19559#t19559">Simon Kågströms post </a>(and the even better <a href="http://simonkagstrom.livejournal.com/33093.html">second-generation with screenshots</a>) about using <a href="http://www.eclipse.org">Eclipse </a>for the Linux kernel, I have a much nicer work environment now for my ongoing work in learning Linux device drivers on PowerPC, which has helped me work my way through several hard-to-figure-out system calls.<span id="more-338"></span> Here is a screenshot that I found pretty cool&#8230; the tool has found the definition and comments for the IRQ registration function:</p>
<p style="text-align: center;"><a href="http://jakob.engbloms.se/wp-content/uploads/2008/11/2008-11-09-21-51-08.png"><img class="size-medium wp-image-340 aligncenter" title="2008-11-09-21-51-08" src="http://jakob.engbloms.se/wp-content/uploads/2008/11/2008-11-09-21-51-08-300x187.png" alt="" width="300" height="187" /></a></p>
<p style="text-align: left;">2009-Feb-01:</p>
<p style="text-align: left;">I had to rebuild my indexing from scratch in the past weekend, and as a result, I have a word of warning: you have to create a &#8220;C project&#8221; in Eclipse, if you accidentally create a &#8220;Project&#8221;, the Eclipse workspace file will have the wrong name (.project instead of .cproject), and the autoconf-to-eclipse script will not work.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/338"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/338" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/338" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/338/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Building a Wooden Deck and Computer Simulation</title>
		<link>http://jakob.engbloms.se/archives/144?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/144#comments</comments>
		<pubDate>Sat, 05 Jul 2008 19:16:43 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[simulation]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=144</guid>
		<description><![CDATA[I just spent the first week of Summer vacation practising the Swedish national sport of home renovation. It seems that everyone is doing that all the time nowadays &#8211; it might be that I have reached the age of family raising where that becomes important, or it might be that it is a general trend [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-145" style="float: left; margin-left: 10px; margin-right: 10px;" title="Furuträ" src="http://jakob.engbloms.se/wp-content/uploads/2008/07/fuyu.jpg" alt="" width="170" height="103" />I just spent the first week of Summer vacation practising the Swedish national sport of home renovation. It seems that everyone is doing that all the time nowadays &#8211; it might be that I have reached the age of family raising where that becomes important, or it might be that it is a general trend that more people spend more time and money renovating their homes. I think it is the second case.</p>
<p>Anyhow, what we set out to do this year was to replace (most of) the twenty-year-old wooden decking on the backside of our small row house with a new one. This was quite an adventure, as we discovered all kinds of interesting designs and problems with the old decking structure. Problems, which do reflect on the realities of computer programming and simulation.</p>
<p><span id="more-144"></span></p>
<h2><strong>Preserving legacy structure</strong>s</h2>
<p>For the simple reason that we do not want to spend the entire four weeks of vacation building things, we decided to keep the original shed that is located at one end of the decking. Technically, this meant taking a saw, cutting the decking close to the shed, and rebuilding the rest of it. It also meant that we had to constrain the rest of the construction to preserve the original height of the decking, and the thickness of the boards used to construct it. Had we rebuilt everything, we would have done things differently and reconstructed the entire supporting structure of beams.</p>
<p>Now, we were forced to preserve the existing design, which is not quite optimal or fully modern. Very much like how it is when updating a large piece of software. Most of the time, you have to preserve old APIs, pieces of code, and design decisions that are not really optimal or modern anymore. Fixing it means starting from scratch, and quite often it is not considered worth the investment in time and effort.</p>
<p>You also tend to find amazingly poorly done items in old software, and so it was with our decking. A large part of the old deck had sunk some 10cm below its original level. When digging out to find out why, it became apparent that the beams had just been put on a bed of sand with no concrete or metal supports on the part closest to the house. That bed of sand had then been hollowed out by a misconstructed fix to a drain pipe that let the water spill out around the proper drain. Sigh. Not the first instance of poor workmanship around this house&#8230; and we had to do a workaround involving bricks, more beams, and a very large load of sand (I have shoveled some 800kg of dirt and sand during this project).</p>
<h2>Reflection on simulator construction</h2>
<p>The next observation is based on how the decking turned out in terms of the number and size of boards needed to cover the area. I had done some measurements beforehand indicating the width and length of the area to be covered. It looked like a number of 95mm standard boards with 3mm spacing would do perfectly to cover the area and provide a nice even end.</p>
<p>In the end, we wound up buying a small number of 120mm boards for the final row. For some reason, one side was 10mm wider than the other side. Also, the 95mm boards turned out not to actually cover the area quite as well as expected. Due to minor variations between the boards (in practice, they are 94 to 96mm) as well as imperfect spacing and the general plasticity of wood (it is a living material, not lego bricks laid out peg by peg) made our plans fall just short forcing a last-minute change to 120mm boards for the end.</p>
<p>As a simulation expert, you could say that this shows the shortcoming of the analytical approach. By making a single measurement of the width of the field, and assuming a single number for the width of a board, I set myself up for surprises when confronting a variable reality. If I had built a better model of the deck, measuring it at multiple places and measuring my boards and working out on paper &#8211; simulating &#8211; how they were to be put together, I could have predicted this and bought the 120mm boards in the original load instead of as an afterthought. In principle, this might be true.</p>
<p>But on the other hand, doing that simulation would have been tantamount to actually building the thing. Understanding the spacing between the boards and how their variations interact would have necessitated constructing in my mind, computer, or paper a perfect model of the deck. I doubt that it would have been saving me any time compared to just going out and putting the thing together, especially as the act of putting it together taught my just how variations occurred and how they worked out in aggregate.</p>
<p>I think the same often applies to computer simulation. Yes, you need to have more details and more variation than a simple analytical model. However, you also need to keep the model simpler than reality in order to make it feasible to construct, maintain, and execute at decent speed. Any model will have imperfections where it diverges from reality, and as a simulator constructor the game is not to be perfect but to provide a useful tool to your end users. If it is a bit imperfect, so what, as long as it is imperfect in unimportant ways and mostly provide good guidance. For more on the philosophy of simulation, I would suggest reading<a href="http://jakob.engbloms.se/archives/33"> a blog post from 2007 about golf games and computer simulation</a>.</p>
<p>So what would a useful model have been for my decking? I guess measuring a few more points would have helped, as well as measuring some set of boards and the device we used for spacing. That might have helped us spot the issue with the too-narrow final board ahead of time. But it was more fun this way, and this is vacation time and hobbyist work and not professional carpentry.</p>
<h2>Conclusions</h2>
<p>What conclusions can be drawn from this?</p>
<ol>
<li>I guess I am a hopeless nerd who can never stop thinking about technology.</li>
<li>I have a very nice deck now, looking forward to some decent days in the next few weeks to make use of it.</li>
<li>Building physical things is quite a satisfying experience, even if they do not turn out perfect in all details.</li>
</ol>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/144"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/144" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/144" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/144/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux KVM for IBM Mainframes</title>
		<link>http://jakob.engbloms.se/archives/101?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/101#comments</comments>
		<pubDate>Thu, 10 Apr 2008 12:17:12 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[blog commentary]]></category>
		<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/101</guid>
		<description><![CDATA[There was an interesting little note at the CodeMonkey blog&#8230; basically, the Linux kvm kernel hardware virtualization support system now works on IBM z series mainframes. Using the z architecture virtualization support in hardware.  Nice to see some attention being put on non-x86 architectures. And a nice historical note that current x86 virtualization extensions were [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www-03.ibm.com/systems/z/hardware/i/z10_110x110.jpg" align="left" height="110" hspace="10" vspace="10" width="110" />There was an interesting little note at the <a href="http://blog.codemonkey.ws/2008/04/kvm-for-mainframe.html ">CodeMonkey blog</a>&#8230; basically, the Linux kvm kernel hardware virtualization support system now works on IBM z series mainframes. Using the z architecture virtualization support in hardware.  Nice to see some attention being put on non-x86 architectures. And a nice historical note that current x86 virtualization extensions were indeed inspired by the s/370 architecture from the mid-1970s. Cool.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/101"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/101" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/101" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/101/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ESC Silicon Valley 2008: Class 410</title>
		<link>http://jakob.engbloms.se/archives/75?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/75#comments</comments>
		<pubDate>Fri, 08 Feb 2008 13:47:08 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[appearances]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[trade shows]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/75</guid>
		<description><![CDATA[I am scheduled to talk at the ESC SV 2008 in the technical program. In 2006 and 2007 my topic was Multicore Debugging, but this year I have changed to Using Simulation Tools for Embedded Software Development. The date is April 17, the time 8.30 to 10.00, and the place the San Jose Convention Center. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="https://www.cmpevents.com/ESCw08/images/logo_site_embedded_systems_sv.gif" align="left" height="45" hspace="10" width="182" />I am scheduled to talk at the ESC SV 2008 in the technical program. In 2006 and 2007 my topic was Multicore Debugging, but this year I have changed to <a href="https://www.cmpevents.com/ESCw08/a.asp?option=C&amp;V=11&amp;SessID=6802">Using Simulation Tools for Embedded Software Development</a>. The date is April 17, the time 8.30 to 10.00, and the place the San Jose Convention Center.</p>
<p>See you there!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/75"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/75" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/75" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/75/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCDsource: Reality Check on Virtual Prototypes</title>
		<link>http://jakob.engbloms.se/archives/62?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/62#comments</comments>
		<pubDate>Thu, 20 Dec 2007 08:52:38 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[simulation]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/62</guid>
		<description><![CDATA[Bill Murray of the &#8220;New Media Outlet&#8221; SCDsource has published one of the best articles that I have seen on the use of software simulators and virtual prototypes in industry. The examples in the article run from low-level code run on very accurate simulators all the way to very fast virtual systems that are used [...]]]></description>
			<content:encoded><![CDATA[<p>Bill Murray of the &#8220;New Media Outlet&#8221; <a href="http://www.scdsource.com/article.php?id=59"></a><a href="http://www.scdsource.com">SCDsource </a>has published one of the best articles that I have seen on the use of software simulators and virtual prototypes in industry. The examples in the article run from low-level code run on very accurate simulators all the way to very fast virtual systems that are used instead of actual hardware to train NASA operators. The article covers the end-user perspective and is not particularly oriented towards a particular vendor. It offers some nice insights into the expected and unexpected benefits that various companies have obtained from using simulators of various kinds. As well as some glimpses into the underlying technologies they have chosen, developed, and adapted.</p>
<p>Highly recommended.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/62"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/62" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/62" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/62/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtualization and Linux on a DSP Processor</title>
		<link>http://jakob.engbloms.se/archives/46?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/46#comments</comments>
		<pubDate>Sun, 04 Nov 2007 10:40:43 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/46</guid>
		<description><![CDATA[A small tidbit that I found interesting due to the targeted platform. LinuxDevices reports that the VirtualLogix VLX-NI virtualization layer that used to run only on x86 platforms now also run on TI DSPs in the C64+ series. Basically, you put their virtualization layer on the DSP, and you can then on the same core [...]]]></description>
			<content:encoded><![CDATA[<p>A small tidbit that I found interesting due to the targeted platform. <a href="http://www.linuxdevices.com/news/NS3172173373.html">LinuxDevices reports</a> that the <a href="http://www.linuxdevices.com/news/NS3172173373.html">VirtualLogix </a>VLX-NI virtualization layer that used to run only on x86 platforms now also run on TI DSPs in the C64+ series. Basically, you put their virtualization layer on the DSP, and you can then on the same core run both a Linux kernel and a DSP/BIOS kernel. Thus supporting traditional DSP development and Linux-style development on the same core.</p>
<p><span id="more-46"></span><br />
On x86, the virtualization uses the virtualization extensions in recent editions of Intel and AMD processors. There is no such support on the C64+ DSP series, so they fall back to paravirtualization, modifying the operating systems to play nice with the virtualization layer. Nothing particularly magical about this.</p>
<p>The interesting part is really that people are considering using Linux which is usually very hard to tune for non-standard hardware platforms to run code on a real high-power DSP. In general, that is considered a bad idea since what you want is a thin layer of software to let you do compute programs that make maximum use of the processor. Doing interrupts and other typical OS work on a DSP is a bad idea since it breaks program flow. Some instructions sequences on a C64-type DSP even require you to turn off interrupts in order to work correctly! So I guess the performance of Linux programs are going to be pretty poor&#8230; However, the idea here seems to be to move some control-plane functions onto the DSPs in the system, which is going to be poorly performing code anyway.  I guess it makes sense if you have spare cycles on the DSP to be able to do away with the additional control-plane processor (which is usually a small slow processor anyway on the kind of base station software being targeted here).</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/46"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/46" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/46" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/46/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ARM Cortex-A9, Trango, and Virtualization for Migration</title>
		<link>http://jakob.engbloms.se/archives/37?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/37#comments</comments>
		<pubDate>Sun, 07 Oct 2007 18:46:29 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[software tools]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/37</guid>
		<description><![CDATA[The new version of Trango&#8217;s embedded &#8220;secure virtualizer&#8221; for the ARM Cortex-A9 MPCore is an interesting solution in that it directly applies virtualization technology to the issue of migrating solutions (complete software stacks) from single-core to multicore. The details are a bit sketchy in just how this is done, there is some hardware support in [...]]]></description>
			<content:encoded><![CDATA[<p>The new version of <a href="http://www.eetimes.eu/scandinavia/202200973">Trango&#8217;s embedded &#8220;secure virtualizer&#8221;</a> for the ARM Cortex-A9 MPCore is an interesting solution in that it directly applies virtualization technology to the issue of migrating solutions (complete software stacks) from single-core to multicore. The details are a bit sketchy in just how this is done, there is some hardware support in recent ARM architectures, but a little bit of adaptation of a guest OS using paravirtual techniques are likely not a blocker. It also touches on security, implemented using ARM&#8217;s trustzone technology. All in all, I think this is a typical example of something that we are going to see much more of.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/37"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/37" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/37" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/37/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMP vs Virtualization</title>
		<link>http://jakob.engbloms.se/archives/22?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/22#comments</comments>
		<pubDate>Thu, 13 Sep 2007 20:26:29 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[AMP]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[SMP]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/22</guid>
		<description><![CDATA[It just dawned on me recently (and it sure must have been obvious to those working with configuring AMP &#8212; Assymtric Multiprocessing Systems) that in an AMP setup, the operating systems involved actually know about each other and have to account for the fact that they are sharing a single processor chip with other operating [...]]]></description>
			<content:encoded><![CDATA[<p>It just dawned on me recently (and it sure must have been obvious to those working with configuring AMP &#8212; Assymtric Multiprocessing Systems) that in an AMP setup, the operating systems involved actually know about each other and have to account for the fact that they are sharing a single processor chip with other operating systems. So you cannot just take two single-core operating system images from an existing multiple-processor (local memory) solution and put them on a single chip and things just work. You do need to prepare the boot process and find a way to nicely share the common I/O devices, timers, accelerator engines and other resources on the chip. This is materially different from a virtualized setup.</p>
<p><span id="more-22"></span><br />
In a virtualization-based setup, you use a single hypervisor program that then controls several single-processor operating systems running on the machine. That hypervisor also takes care of allocating shared resources to the operating systems, sometimes by sharing a single physical resources, sometimes by only letting one operating system access a certain resource. So in this case, you can actually reuse existing OS images on a new multicore chip and transparently transform an existing system.</p>
<p>Too bad there is still no embedded processor with strong support for heavy-duty virtualization like this.</p>
<p>On the other hand, it might be a passing need. The transition of old applications to new hardware will always involve some rewrite and retouch, and if that means doing a bit of change in the OS setup to handle an AMP case nicely, it is probably not too expensive (compared to redoing applications on top of the OS to be truly SMP).  And for virtualization, this means that you can use a Xen-style paravirtual approach where the OS is modified to run on top of a simple hypervisor.</p>
<p>Running and booting an unmodified binary install of an OS is likely more of a server/desktop problem than one for embedded applications. We are going to see virtualization support in hardware to help light-weight approaches be even more efficient, and also to tackle the security issues of rogue code getting into some OS image. Hardware support is needed to contain an OS that has been taken over by bad guys, no amount of cooperation between OSes in an AMP setting is going to prevent that.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/22"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/22" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/22" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/22/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SICS Multicore Day August 31</title>
		<link>http://jakob.engbloms.se/archives/17?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/17#comments</comments>
		<pubDate>Sun, 02 Sep 2007 20:13:50 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[appearances]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[multicore computer architecture]]></category>
		<category><![CDATA[multicore debug]]></category>
		<category><![CDATA[multicore software]]></category>
		<category><![CDATA[parallel computing]]></category>
		<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[AMD]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Hardware debug support]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Joe Armstrong]]></category>
		<category><![CDATA[Niagara]]></category>
		<category><![CDATA[QuviQ]]></category>
		<category><![CDATA[SiCS Multicore days]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[transactional memory]]></category>
		<category><![CDATA[UltraSPARC]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/17</guid>
		<description><![CDATA[The SICS Multicore Day August 31 was a really great event! We had some fantastic speakers presenting the latest industry research view on multicores and how to program them. Marc Tremblay did the first presentation in Europe of Sun&#8217;s upcoming Rock processor. Tim Mattson from Intel tried hard to provoke the crowd, and Vijay Saraswat [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.sics.se/node/1854">SICS Multicore Day August 31 </a>was a really great event! We had some fantastic speakers presenting the latest industry research view on multicores and how to program them. Marc Tremblay did the first presentation in Europe of Sun&#8217;s upcoming Rock processor. Tim Mattson from Intel tried hard to provoke the crowd, and Vijay Saraswat of IBM presented their X10 language. Erik Hagersten from Uppsala University provided a short scene-setting talk about how multicore is becoming the norm.</p>
<p><span id="more-17"></span><br />
The Rock is a very interesting piece of work. It tries to be both a throughput-oriented design like the Niagara/Ultrasparc T machines, and a single-thread high-performance design. Even though on balance, it is more skewed towards the throughput computing aspect. What is very cool is how they use additional threads to help boost the performance of a main thread using &#8220;scout threads&#8221; (a concept I saw presented back at ISCA 2004). This makes it possible to use threads to either boost single-thread performance OR do throughput, creating a more flexible design than is usually the case. It is also the first commercial implementation of <a href="http://research.sun.com/spotlight/2007/2007-08-13_transactional_memory.html">transactional memory</a>. And 16-way. And due for next year.</p>
<p>So far, Rock seems like a very successful and very visionary project that is trying in yet another way to gain momentum by pure hardware innovation. Just like the UltraSparc T line, Sun is trying to out-invent IBM and Intel/AMD. Who seem to be mostly progressing by just piling on more of the same old features. I really hope this play goes well, if we were down to just IBM/PPC &amp; System Z and Intel-AMD/x86-64 on the server and desktop side, the world would just be too boring.</p>
<p>The Intel and IBM talks on programming were both grounded in the idea that to make people accept a new programming language/API, it has to be an evolution of what the programmers already know. Which pretty much ties us down to C/C++/Java/C# with extensions and modified semantics.</p>
<p>X10 is basically Java with some nicely considered features to support local and global memories and programs that can scale to BlueGene-style massively clustered machines. Tim basically tells everyone to stop inventing new languages and focus on improving existing frameworks like MPI and OpenMP in collaboration with industry. Presented in a very funny style, Tim is a great presenter, and tries hard to get the audience to react. In this crowd, most people agreed. Except the Erlang people, who feel that they do have a better solution to multithreading and multicore than any patched-up language in the C-Java family. I must agree with them, and I do feel that <a href="http://www.erlang.org/">Erlang </a>today is mature enough to serve that purpose.</p>
<p>The panel session at the end was very entertaining, where some people (including myself and <a href="http://armstrongonsoftware.blogspot.com/">Joe Armstrong</a>) tried to ask tough questions to the keynote speakers (and Ulf Wiger of Ericsson). Quite engaging and a rare chance to directly engage with some industry heavyweights who otherwise tend to sit on the other side of the Atlantic.</p>
<p>I think the prize for coolest tech of the day goes to <a href="http://www.quviq.com/">QuviQ</a>, a spin-off from <a href="http://www.chalmers.se/">Chalmers </a>doing automated testing tools that really work well for parallel and distributed systems.  Their method of minimizing the trace of a failed test case is really interesting, and finds things that no human tester would ever find.</p>
<p>I also presented a talk on &#8220;Debugging Multicore Software using Virtual Hardware&#8221;, in the breakout sessions. I guess our Tools track was the least visited of the three tracks, but the audience asked some good questions. And there were some good discussions afterwards.</p>
<p>However, to summarize the day, I am a bit disappointed that not more is being done on the hardware side to help people debug their multicore and multiprocessor parallel programs.  Transactional memory is all nice and dandy and can help simplify low-level locking primitives for threaded programs. But I would like to see much more in terms of smart tracing, hardware breakpoints and triggers, massive synchronized stops, and similar features. And instructions and features that make parallel expressions simpler. Here, the embedded folks doing things like <a href="http://www.arm.com/products/solutions/CoreSight.html">ARM CoreSight</a> seems to have been much more successful than the server-class designers at Sun, Intel, and IBM. But even ARM do not spend more than 10-15% of the chip area on debug support.</p>
<p>I think it would be interesting to  see what would happen if you could spend 25-30% of the chip on some seriously powerful debug features. Full support for remote control of all cores at the same time, lots of bandwidth for debug data and commands, and fat traces of all traffic on and off the chip. Performance and event counters everywhere. That would make the peak performance of chip likely less than a competing chip not spending as much space on debug support &#8212; but it would make achieving a high utilization much easier, and that might actually make the debug-intense chip more economical. Would be interesting to try. But I guess nobody would dare to buy such a design.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/17"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/17" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/17" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/17/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

