<?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; books</title>
	<atom:link href="http://jakob.engbloms.se/archives/tag/books/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>Simon Kågström, PhD</title>
		<link>http://jakob.engbloms.se/archives/119?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/119#comments</comments>
		<pubDate>Sat, 10 May 2008 07:08:19 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[appearances]]></category>
		<category><![CDATA[blog commentary]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[multicore]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[software tools]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=119</guid>
		<description><![CDATA[Yesterday, I had the honor of being the opponent at the PhD defense of Simon Kågström at Blekinge Tekniska Högskola (BTH, Blekinge University of Technology in English). His PhD thesis deals mainly with the multiprocessor port of an industrial in-house operating system, and a secondary theme was the design of the Cibyl C-programs-to-JVM translator. All [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-120" style="float: left;" title="bthsmall" src="http://jakob.engbloms.se/wp-content/uploads/2008/05/bthsmall-150x148.png" alt="BTH logo" width="150" height="148" />Yesterday, I had the honor of being the opponent at the PhD defense of <a href="http://www.ipd.bth.se/ska/">Simon Kågström</a> at <a href="http://www.bth.se">Blekinge Tekniska Högskola</a> (BTH, Blekinge University of Technology in English). His <a href="http://www.ipd.bth.se/ska/phd.html">PhD thesis</a> deals mainly with the multiprocessor port of an industrial in-house operating system, and a secondary theme was the design of the <a href="http://code.google.com/p/cibyl/">Cibyl </a>C-programs-to-JVM translator. All of his papers are very well-written and a joy to read, and the engineering work behind it is very solid.</p>
<p>The most important data in the PhD thesis is really just how much work it is to do an SMP port of an OS kernel. And how hard it is to get performance up to good levels even with several years of work. Really emphasizes the point that hard work and perseverance and just lots of calendar time is what it takes to create a good SMP OS. That&#8217;s why Solaris and AIX are still years ahead of Linux in this respect &#8212; you just need to hit the snags, fix them, retest, and hit the next snag. It takes time to polish, basically.</p>
<p>So, if you have any interest in multiprocessor operating systems, Simon&#8217;s work is well-worth a read. Also check out his blog at <a href="http://simonkagstrom.livejournal.com/">http://simonkagstrom.livejournal.com/</a>.  And by the way, he did pass.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/119"></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/119" 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/119" 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/119/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Simulation is Better than Barr &amp; Massa Says</title>
		<link>http://jakob.engbloms.se/archives/94?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/94#comments</comments>
		<pubDate>Wed, 02 Apr 2008 18:51:00 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[software tools]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/94</guid>
		<description><![CDATA[In the book &#8220;Programming Embedded Systems &#8212; with C and GNU Development Tools&#8220;, authors Michael Barr and Anthony Massa make some statements on simulation that I just have to disagree with on principle. Read on for what. Note that overall this is a good book, I am not claiming that it is not. The Amazon [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jakob.engbloms.se/wp-content/uploads/2008/04/citation-cover.thumbnail.jpeg" alt="Cover of Programming Embedded Systems by Barr and Massa" hspace="10" vspace="10" align="left" />In the book &#8220;<a href="http://www.amazon.com/Programming-Embedded-Systems-Development-Tools/dp/0596009836">Programming Embedded Systems &#8212; with C and GNU Development Tools</a>&#8220;, authors Michael Barr and Anthony Massa make some statements on simulation that I just have to disagree with on principle. Read on for what. Note that overall this is a good book, I am not claiming that it is not. The Amazon reviews are pretty good, and having a foreword by <a href="http://jakob.engbloms.se/wp-admin/www.ganssle.com">Jack Ganssle</a> is always a  sign of quality. But I just have to correct them on one little fact&#8230;</p>
<p><span id="more-94"></span><br />
In a section on &#8220;other development tools&#8221;, there is the following piece on simulation:</p>
<p style="text-align: center"><a title="Cite about simulation not full and useful" href="http://jakob.engbloms.se/wp-content/uploads/2008/04/citation-1.jpeg"><img src="http://jakob.engbloms.se/wp-content/uploads/2008/04/citation-1.jpeg" alt="Cite about simulation not full and useful" /></a></p>
<p>I just had to scan the page to make it look more real, right?</p>
<p>Anyhow, the critical bit is at the end:</p>
<blockquote><p>By far, the biggest disadvantage of a simulator is that it simulates only the processor.</p></blockquote>
<p>That is simply not true. Not today. Note that this is a second edition of a book, and that when the first edition was created the market place looked different. Today, vendors like <a href="http://www.virtutech.com">Virtutech</a>, CoWare,  Synopsys, VaST, and ARM routinely provide <a href="http://en.wikipedia.org/wiki/Full_system_simulator">full-system simulators</a> that simulate much more than just the core processor. These virtual platforms contain memory, peripherals, and often connections to the outside world or simulations of the environment in which an embedded system operates. For more on this, please read <a href="http://www.embedded.com/columns/technicalinsights/199702616">the piece I wrote for embedded.com last year</a>, or come visit my talk at the <a href="http://jakob.engbloms.se/archives/75">ESC SV this year</a> (due in two weeks).</p>
<p>And next we have:</p>
<blockquote><p>So you probably won&#8217;t do too much with the simulator  once the actual embedded hardware is available.</p></blockquote>
<p>This is not generally true either. Very often, a virtual hardware platform is used to develop software for a system even after hardware appears &#8212; simply because it is more convenient, available, and capable. It really is.</p>
<p>But finally, here is a quote that I like, finishing off this short section in their book:</p>
<p align="center"><a title="Second quote from the book" href="http://jakob.engbloms.se/wp-content/uploads/2008/04/citation-2.jpeg"><img src="http://jakob.engbloms.se/wp-content/uploads/2008/04/citation-2.jpeg" alt="Second quote from the book" /></a></p>
<p>That is a very good tip: use the simulator and compare notes with reality. It is a very powerful technique, but it is even better for a full-system simulator: there you can trace the actual virtual hardware-actual software interaction and see if any of the two parties are not following the data book. On hardware, you would have no chance to see that, as you cannot usually attach a trace unit to the device bus of an integrated chip.</p>
<p>I guess that was all I had on this topic. Barr and Massa are a bit wrong, but I guess it is mostly because they have not seen what can be done in virtualization and simulation today. Which means we in the business have more education and marketing to do to raise awareness of what tools can do today.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/94"></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/94" 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/94" 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/94/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book review: &#8220;Fruits of War&#8221;</title>
		<link>http://jakob.engbloms.se/archives/76?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/76#comments</comments>
		<pubDate>Sat, 16 Feb 2008 20:05:13 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[off-topic]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/76</guid>
		<description><![CDATA[A review of the book &#8220;Fruits of War&#8221; by Michael White. The book discusses how war has accelerated technological progress and provided unexpected benefits to society. The author is a bit defensive about not professing that war is good in any way, which is pretty obvious and does not really need to be an issue [...]]]></description>
			<content:encoded><![CDATA[<p>A review of the book &#8220;<a href="http://www.amazon.co.uk/Fruits-War-Military-Accelerates-Technology/dp/0743220242">Fruits of War</a>&#8221; by Michael White. The book discusses how war has accelerated technological progress and provided unexpected benefits to society. The author is a bit defensive about not professing that war is good in any way, which is pretty obvious and does not really need to be an issue in reading the book. It is a fairly straight reporting of facts, rather than any attempt to editorialize or present radical opinions.<br />
<span id="more-76"></span>The book is, overall, a decent read that gives some &#8220;aha&#8221; insights in terms of when, where, and why various technologies developed. However, it is let down by a sequence of minor fact errors, as well as being a bit rapsodic in style. It seems like the author tried to pack almost everything interesting into a fairly thin book, and the net result is that nothing is really treated in depth.</p>
<p>The best researched chapters are those on medical technology, where there is also deep data and clear dates and names. In other chapters, this depth of detail in persons and dates is missing, and the fact checking has been downright sloppy in places. This gives a slightly uneasy feeling to my reading of the book: what can be trusted at detail level and what cannot?</p>
<p>Some example fact errors:</p>
<ul>
<li>The author talks about the <a href="http://en.wikipedia.org/wiki/Heinkel_He_280">Heinkel He 280</a> being the main German jet fighter in World War II, while anyone versed in technology history knows that that honor befalls the legendary <a href="http://en.wikipedia.org/wiki/Messerschmitt_Me_262">Messerchmitt Me 262</a>.</li>
</ul>
<ul>
<li>There is a claim that Vikings forged swords from carbonised iron which were longer and stronger than those of continental Europe. As a Swede, I have never heard of this fact. I believe the Vikings main military strong point was there fast and shallow-running ships, along with good timing that allowed them to exploit a period of weakness of the European continent.</li>
</ul>
<p>And I have a suspicion that there are more such minor details which are not quite right in the later chapters of the book.</p>
<p>So overall, a nice concept that should have focussed on a few fewer technologies with more depth.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/76"></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/76" 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/76" 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/76/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book Review: Intel&#8217;s Multicore Programming Book</title>
		<link>http://jakob.engbloms.se/archives/61?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/61#comments</comments>
		<pubDate>Sun, 09 Dec 2007 19:43:20 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[multicore computer architecture]]></category>
		<category><![CDATA[multicore software]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Itanium]]></category>
		<category><![CDATA[Jason Roberts]]></category>
		<category><![CDATA[Multicore programming]]></category>
		<category><![CDATA[OpenMP]]></category>
		<category><![CDATA[Shamemm Akhter]]></category>
		<category><![CDATA[SMT]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/61</guid>
		<description><![CDATA[The book &#8220;Multicore Programming &#8211; Increasing Performance through Software Multithreading&#8221; by Shameem Akhter and Jason Roberts is part of a series of books put out by Intel in their multicore software push. In case you have not noticed, Intel has a huge market push currently where they give seminars, publish articles and books, and give [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Multicore programming book cover" href="http://jakob.engbloms.se/wp-content/uploads/2007/12/cover_mcp_sm.gif"><img src="http://jakob.engbloms.se/wp-content/uploads/2007/12/cover_mcp_sm.gif" alt="Multicore programming book cover" hspace="10" align="left" /></a>The book &#8220;<a href="http://www.intel.com/intelpress/sum_mcp.htm">Multicore Programming &#8211; Increasing Performance through Software Multithreading</a>&#8221; by Shameem Akhter and Jason Roberts is part of a <a href="http://shop.intel.com/shop/product.aspx?pid=sibk3603">series of books</a> put out by Intel in their multicore software push. In case you have not noticed, Intel has a huge market push currently where they give seminars, publish articles and books, and give curricula to universities in order to get more parallel software in place. I read this book recently, and here is a short review.<br />
<span id="more-61"></span>First a short note about the Intel multicore education push: the end goal is to make sure that the average computer user will perceive value (more features and higher performance) from buying multicore Intel processors for their home or business PC. In the process, they do provide a useful community service, and presumably lots of jobs for PhDs in parallel programming and computing. This focus on the desktop computing arena has implications for the contents of books like this.</p>
<p>The authors are experienced parallel software writers working at Intel, and who wrote this book for Intel as part of the multicore push.</p>
<p>The book covers the obvious topics for any introduction book to parallel programming:</p>
<ul>
<li>Application patterns for parallel programs: various ways to structure computations to extract or expose parallelism.</li>
<li>Programming APIs.</li>
<li>Common problems in parallel code.</li>
<li>Debugging parallel code.</li>
<li>Performance tuning parallel code.</li>
<li>Fundamental computer architecture.</li>
</ul>
<p>In my mind, the best part of the book is the application patterns and programming APIs section. The most interesting aspect of the book was the weight given to the programming APIs and debug tools for Windows. In comparison, most other texts that I have seen focus on the portable and generally available pthreads/Posix threads API or OpenMP. The Windows APIs are actually pretty cool and powerful. Note that the .net managed code (CLR) environment has its own set of APIs similar to but distinct from the general old Win32 API.</p>
<p>The authors clearly have a weak spot for <a href="http://www.openmp.org/blog/about/">OpenMP</a>, and more time is spent on OpenMP than any other API. I remain unconvinced about its generality, but it certainly has some interesting properties. But it is far from automatic parallelization. MPI gets a very strange treatment, being tucked away in a late part of the debugging chapter. Why it was not considered a full programming API is beyond me.</p>
<p>A section on memory consistency is pretty well written and is one of the best expositions on how that actually works on x86 and Itanium architectures.</p>
<p>The worst part of the book is the strangely confused and forced section on hardware architecture. Being an Intel (trademark) book about Intel (trademark) processors and programming them, the chapter on Pentium (r) and Core (r) and Itanium (trademark) processors was probably mandatory. But to someone with prior knowledge of computer architecture it is all very confused, trying to press ILP together with SMT (HyperThreading) and multicore into some joint thread concept that just does not work as a pedagogical concept.  Also, Itanium takes up an inordinate amount of space for what is basically a moribund architecture. But I guess that Intel (trademark) cannot acknowledge that Itanium (trademark) is a titanic disaster. At least not yet.  This chapter is also full of little (r) and &#8482; markers and various Intel product names that really makes it harder to read.</p>
<p>There is a good description of Intel multithreaded programming tools, not surprisingly.</p>
<p>Overall, the book offers a good read, but it suffers from also being Intel PR material. I do not recommend against reading it, especially not if you are programming in an x86 desktop environment. But if you are attacking an embedded Power Architecture problem, I think there are better sources.</p>
<p>Note for publicity thinkers: I bought this book after reading a technical article at Embedded.com &#8220;Technical Insights&#8221;. Submitting book chapters or excerpts as technical articles there could drive readers and buyers to your books. Worked on me at least, at least this one time.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/61"></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/61" 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/61" 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/61/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

