<?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; wcet</title>
	<atom:link href="http://jakob.engbloms.se/archives/tag/wcet/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>Execution Time is Random, How Useful</title>
		<link>http://jakob.engbloms.se/archives/1370?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1370#comments</comments>
		<pubDate>Sun, 13 Feb 2011 21:49:18 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Andre Szenec]]></category>
		<category><![CDATA[HAVEG]]></category>
		<category><![CDATA[HAVEGE]]></category>
		<category><![CDATA[random number generation]]></category>
		<category><![CDATA[wcet]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1370</guid>
		<description><![CDATA[When I was working on my PhD in WCET &#8211; Worst-Case Execution Time analysis - our goal was to utterly precisely predict the precise number of cycles that a processor would take to execute a certain piece of code.  We and other groups designed analyses for caches, pipelines, even branch predictors, and ways to take [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2011/02/dice.png"><img class="alignleft size-full wp-image-1371" title="dice" src="http://jakob.engbloms.se/wp-content/uploads/2011/02/dice.png" alt="" width="86" height="88" /></a>When I was working on my <a href="http://urn.kb.se/resolve?urn=urn:nbn:se:uu:diva-1832">PhD in WCET &#8211; Worst-Case Execution Time analysis </a>- our goal was to utterly precisely predict the precise number of cycles that a processor would take to execute a certain piece of code.  We and other groups designed analyses for caches, pipelines, even branch predictors, and ways to take into account information about program flow and variable values.</p>
<p>The complexity of modern processors &#8211; even a decade ago &#8211; was such that predictability was very difficult to achieve in practice. We used to joke that a complex enough processor would be like a random number generator.</p>
<p>Funnily enough, it turns out that someone has been using processors just like that.  Guess that proves the point, in some way.</p>
<p><span id="more-1370"></span>I was recently introduced to the concept of the <a href="http://www.irisa.fr/caps/projects/hipsor/">HAVEGE project &#8211; HArdware Volatile Entropy Gathering and Expansion</a>, run at IRISA in Rennes in France from what seems to be around 2002 to 2006.  The main author, Andre Seznec, has also published in the WCET field. Today, the same idea is found nicely packaged in the HAVEGED code base for Linux, found at <a href="http://www.issihosts.com/haveged">http://www.issihosts.com/haveged</a>.</p>
<p>The idea behind HAVEGE is to run a piece of code that is designed to incur cache misses, confuse branch predictors, and generally strain the prediction mechanisms of a processor. In this way, the timing of the code will fluctuate even though it is basically straight-line code with no decision-making. These timing variations can be captured by reading a high-resolution timer such as the x86 processor&#8217;s <a href="http://en.wikipedia.org/wiki/Rdtsc">TSC (Time Stamp Counter), </a>or some other source that can report the execution time of a piece of code.</p>
<p>The key advantage of such a source of randomness is that it is easy to quickly acquire lots of randomness (or <a href="http://en.wikipedia.org/wiki/Entropy_%28computing%29">entropy in crypto language</a>), and it is also impossible to predict the results. For cryptographic applications, this unpredictability from the perspective of an outside observer is very important, as it makes random numbers generated based on this much stronger in the face of an attack.</p>
<p>I think HAVEGE offers a good example of how to make lemonade from lemons.  If we conclude that processor timing cannot be predicted, consider that fact as a feature for cryptography rather than as a problem for WCET.</p>
<p>The first paper on HAVEGE is called &#8220;<a href="http://www.irisa.fr/caps/projects/hipsor/publications/havege-rr.pdf ">Hardware Volatile Entropy Gathering and Expansion: Generating unpredictable random numbers at user level</a>&#8220;, IRISA internal report 1492, October 2002. It presents the core idea a little differently from later papers.  In it, they measure the cache and TLB effects on randomness, assuming the key to randomness being the effects of interrupts where OS code affect the cache and TLB entries used by the program.  An underlying assumption is that if you just run a program in isolation, the caching and speculation mechanism will converge to a good state for the program, with no or little timing variation as a result.</p>
<p>I wonder if that is still true on a modern machine. Their measurements were performed on a mid-1990s UltraSPARC II, which is in-order and much simpler than current Intel Core processors. Even an ARM Cortex-class processor is much more complex.  I would really like to see measurements about the inherent randomness in today&#8217;s processors, without any recourse to interrupts and hardware actions to disturb the picture.  I wonder if you would still see variations in the execution time of a body of code due to the different periods of various hardware mechanisms, or if it all converges to maximum throughput and minimal hardware latencies for all parts of the pipeline. For some reason, I have my doubts that the hardware would be that ideal in practice.</p>
<p>What makes the randomness of the actual hardware hard to evalutate  is that the available codebase is the HAVEGE code, which is an &#8220;expansion&#8221; of the basic HAVEG idea. The expansion being to couple a PRNG to the collection of entropy from the hardware, in order to produce much more random noise (in terms of random bits per second) than just the hardware would provide. While very practical, this also serves to obscure the fundamental randomness of the hardware from direct measurement.</p>
<p>Essentially, HAVEGE generates a ton of random data that appears to be of high quality in the tests provided.  But that data mixes three factors into a single measurement:</p>
<ul>
<li>Hardware low-level random fluctuations (cache, pipeline, branch predictor)</li>
<li>Hardware coarse-grained variation (interrupt timing, the time taken<br />
to perform OS actions in response to interrupts)</li>
<li>The effectiveness of the PRNG code</li>
</ul>
<p>Picking these three apart would be interesting, and it is a shame that there seems to be no recent evaluation of HAVEGE.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1370"></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/1370" 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/1370" 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/1370/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Wind River Blog: &#8220;IMA on Simics&#8221;</title>
		<link>http://jakob.engbloms.se/archives/1304?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1304#comments</comments>
		<pubDate>Tue, 26 Oct 2010 13:00:25 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[multicore software]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Wind River Blog]]></category>
		<category><![CDATA[Integrated Modular Avionics]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[Simics]]></category>
		<category><![CDATA[Tennessee Carmel-Veilleux]]></category>
		<category><![CDATA[wcet]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1304</guid>
		<description><![CDATA[I have a fairly lengthy new blog post at my Wind River blog. This time, I interview Tennessee Carmel-Veilleux, a Canadian MSc student who have done some very smart things with Simics. His research is in IMA, Integrated Modular Avionics, and how to make that work on multicore. I made some cocky comments about just [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/04/button-quicklink-blogs.png"><img class="alignleft size-full wp-image-1122" style="margin: 10px 5px;" title="Wind River Logo" src="http://jakob.engbloms.se/wp-content/uploads/2010/04/button-quicklink-blogs.png" alt="" width="46" height="46" /></a>I have a <a href="http://blogs.windriver.com/engblom/2010/10/interview-with-tennessee-carmel-veilleux.html">fairly lengthy new blog post </a>at my Wind River blog. This time, I interview <a href="http://www.tentech.ca/">Tennessee Carmel-Veilleux</a>, a Canadian MSc student who have done some very smart things with Simics. His research is in IMA, Integrated Modular Avionics, and how to make that work on multicore.</p>
<p><span id="more-1304"></span>I made some <a href="http://jakob.engbloms.se/archives/58">cocky comments about just how stupid the current implementations </a>of this idea are a few years ago, but in my discussions with Tennessee I have realized that things are not that simple. Essentially, you are caught between the structures and strictures of the certification agencies, and the complexity of the hardware with its many shared resources making predictability and programming very difficult.</p>
<p>It is a field which touches to my old work on WCET, but with a target system that is much less amenable to analysis. I still <a href="http://jakob.engbloms.se/archives/123">think it is a good idea to try to use seas of simple cores and separate work physically </a>rather than virtually, but that might be a battle that will never be won. If nothing else, even on a massive spatially-divided multicore device, there will be some shared resources that make life difficult when very low levels of jitter are tolerated.</p>
<p>Read the interview, and read Tennessee&#8217;s own blog &#8211; he has done some pretty cool things both in hardware, software, and virtual hardware.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1304"></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/1304" 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/1304" 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/1304/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real-time control when cores become free</title>
		<link>http://jakob.engbloms.se/archives/123?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/123#comments</comments>
		<pubDate>Sun, 18 May 2008 20:00:20 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[multicore computer architecture]]></category>
		<category><![CDATA[multicore software]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[Integrated Modular Avionics]]></category>
		<category><![CDATA[manycore]]></category>
		<category><![CDATA[MERASA]]></category>
		<category><![CDATA[propeller chip]]></category>
		<category><![CDATA[Tensilica]]></category>
		<category><![CDATA[TimeSys]]></category>
		<category><![CDATA[wcet]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=123</guid>
		<description><![CDATA[A very interesting idea that has been bandied around for a while in manycore land is the notion that in the future, we will see a total inversion in today&#8217;s cost intuition for computers. Today, we are all versed in the idea that processor cores and processing times are quite precious, while memory is free. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left; margin-left: 10px; margin-right: 10px;" title="shrinking core" src="http://jakob.engbloms.se/wp-content/uploads/2008/05/coreshrink.png" alt="Image" />A very interesting idea that has been bandied around for a while in manycore land is the notion that in the future, we will see a total inversion in today&#8217;s cost intuition for computers. Today, we are all versed in the idea that processor cores and processing times are quite precious, while memory is free. For best performance, you need to care about the cache system, but in the end, the goal is to keep those processor pipelines as busy as possible. Processors have traditionally been the most expensive part of a system, and ideas such as <a href="http://jakob.engbloms.se/archives/58">Integrated Modular Avionics</a> are invented to make the best use of a resource perceived as rare and expensive&#8230;</p>
<p>But is that really always going to be true? Is it reasonably to think of CPU cores are being free but other resources as expensive? And what happens to program and system design then?</p>
<p><span id="more-123"></span></p>
<p>This idea was brought up again in an interview in edition 33 of <a href="http://www.timesys.com/resources/podcast">TimeSys LinuxLink Radio podcast </a>with the creators of the <a href="http://www.parallax.com/Default.aspx?tabid=407">Propeller chip</a>, <a href="http://www.parallax.com/">Parallax</a>. In this chip, they abandon interrupts and instead dedicate entire processors to various IO tasks. The cores stay in very low power mode until something interesting happen on IO pins, and then wake up and process. No interrupts, no interrupt handler, almost zero latency. Very good for real-time systems. The intuition you have just screams &#8220;why not share the IO load on a single processor&#8221;? Which is old wisdom, processors are expensive. And having a bunch of them just waiting in deep sleep for something to happen seems absolutely nonsensical. Especially as the current propeller chip only has eight cores, it seems a bit limiting and just screaming for timesharing and/or virtualization to handle a few more tasks than eight&#8230;</p>
<p>But is it really?</p>
<p>Consider the alternative design. A much more powerful processor running an operating system with all its associated overhead. For hard real-time control, what you do there is either use a static time-driven scheduler or use event-driven programs with an analysis that makes sure that you can always meet all deadlines. And these solutions have a hard time reaching 100 percent CPU usage and usually involve a fairly high interrupt latency.  For really short real-time latencies, you end up vastly overprovisioning the processor in order to make sure that the cycles that an interrupt takes to process in overhead pass as quickly as possible. With caches, you either have to lock them or once again vastly overprovision the processor to make sure to meet guaranteed latencies.</p>
<p>The interesting question that I do not have really good numbers for is for a given problem of say ten critical real-time tasks, using ten simple cores doing one thing each or sharing ten critical tasks on a single core is the least expensive solution hardware-wise. Since it seems that in general, to make a processor ten times faster you need either ten times the clock frequency or a significantly larger die, it is not clear-cut. Especially not with a tough latency constraint.</p>
<p>If you factor in the cost of software development and validation of system functionality, I am pretty sure that the multiple simple cores approach is very competitive. Instead of analyzing a complex concurrent software system full of potential nasty shared resources and unknown software paths, you can handle ten small programs running on simple cores with simple timing, and with shared resources that are at least obvious from the hardware design.</p>
<p>There will be shared resources, be sure of that. If nothing else, <a href="http://jakob.engbloms.se/archives/83">the memory controller will be an issue</a>. The propeller chip solves this by strictly temporally sharing memory access between the cores in a fixed static schedule. Predictability before all!</p>
<p><img class="alignright" style="float: right; margin-left: 10px; margin-right: 10px;" src="http://www.merasa.org/img/logo-small.png" alt="" width="191" height="191" />Note that the EU STREP project called <a href="http://www.merasa.org/overview.html">MERASA </a>is looking into something that could be related to this idea, with 2 to 16 cores per chip with lots of predictability piled on.</p>
<p><strong>Marketing it</strong></p>
<p>Selling such a chip as a standard part would seem to make sense as well, as most control systems are fairly low-volume. The propeller chip is very small, eight cores only, but if you look at what Ambric and Picochip are doing, it is easy to envision a controller part with twenty or a hundred little cores on. That could be really cool <img src='http://jakob.engbloms.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you have a high-volume part, I guess you could build that control ASIC yourself today, around something like a <a href="http://www.tensilica.com">Tensilica </a>pile of cores, which have been proven to scale to hundreds of cores even today in custom ASICs.</p>
<p>A half-way design in this style is the Freescale 5514-15-16 parts which combine a compute core with a smaller core to handle all the interrupts. If nothing else, this validates the fundamental idea of interrupts being an issue. Putting all interrupts on a secondary core could be seen as a bandaid on a bandaid&#8230; but it sure makes sense if the cores are not considered free.</p>
<p>Will be interesting to see what the future brings.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/123"></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/123" 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/123" 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/123/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Worst-Case Execution Time Survey Article in TECS</title>
		<link>http://jakob.engbloms.se/archives/117?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/117#comments</comments>
		<pubDate>Sat, 10 May 2008 06:25:43 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[ACM Transactions on Embedded Computing Systems]]></category>
		<category><![CDATA[wcet]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=117</guid>
		<description><![CDATA[I just got another article published! In the April 2008 issue of the ACM Transactions on Embedded Computing Systems (TECS), we have an article called &#8220;The worst-case execution-time problem &#8211; overview of methods and survey of tools&#8221;. &#8220;We&#8221; is kind of understatement, the article has fifteen authors from three continents, and presents an overview of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-118" style="float: left; margin-left: 10px; margin-right: 10px; margin-top: 0px; margin-bottom: 0px;" title="tces_cover_full" src="http://jakob.engbloms.se/wp-content/uploads/2008/05/tces_cover_full.jpg" alt="ACM Transactions on Embedded Computing Systems cover April 2008" width="132" height="198" />I just got another article published! In the April 2008 issue of the ACM Transactions on Embedded Computing Systems (TECS), we have an article called &#8220;The worst-case execution-time problem &#8211; overview of methods and   survey of tools&#8221;. &#8220;We&#8221; is kind of understatement, the article has fifteen authors from three continents, and presents an overview of the state of the field of WCET (Worst-Case Execution Time) analysis. The article was started back in 2005, with submission in 2006, accepted in January of 2007, and then finally it appeared in 2008. It is probably my last shot in the WCET area where I did my PhD thesis (please see my <a href="http://www.engbloms.se/jakob_publications.html">list of publications</a> for an idea of what all of that is about).</p>
<p>You can find the article at the <a href="http://portal.acm.org/citation.cfm?id=1347389&amp;jmp=cit&amp;coll=ACM&amp;dl=ACM&amp;CFID=26974901&amp;CFTOKEN=78943468#CIT">ACM portal</a>, or at the <a href="http://www.mrtc.mdh.se/index.php?choice=publications&amp;id=1485">MRTC publications data base</a> in Västerås.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/117"></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/117" 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/117" 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/117/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handbook of Real-Time and Embedded Systems</title>
		<link>http://jakob.engbloms.se/archives/30?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/30#comments</comments>
		<pubDate>Wed, 19 Sep 2007 19:57:50 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[Andreas Ermedahl]]></category>
		<category><![CDATA[Handbook of Real-Time and Embedded Systems]]></category>
		<category><![CDATA[real-time]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[wcet]]></category>
		<category><![CDATA[worst-case execution time analysis]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/30</guid>
		<description><![CDATA[The &#8220;Handbook of Real-Time and Embedded Systems&#8221; (ToC, Amazon, CRC Press) is now out. I and my university research colleague and friend Andreas Ermedahl have written a chapter on worst-case execution time analysis. We talk some about the theories and techniques, but we try to discuss practical experience in actual industrial use. Both static, dynamic, [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Cover of Handbook of Embedded and Real-Time Systems" href="http://jakob.engbloms.se/wp-content/uploads/2007/09/handbook-rtes-2007-cover.png"><img title="Cover of Handbook of Embedded and Real-Time Systems" src="http://jakob.engbloms.se/wp-content/uploads/2007/09/handbook-rtes-2007-cover.thumbnail.png" alt="Cover of Handbook of Embedded and Real-Time Systems" hspace="10" align="left" /> </a>The &#8220;Handbook of Real-Time and Embedded Systems&#8221; (<a href="http://web.njit.edu/~leung/handbook07/index.htm">ToC</a>, <a href="http://www.amazon.com/Handbook-Real-Time-Embedded-Computer-Information/dp/1584886781">Amazon</a>, <a href="http://www.crcpress.com/shopping_cart/products/product_detail.asp?sku=C6781&amp;isbn=9781584886785&amp;parent_id=&amp;pc=">CRC Press</a>) is now out. I and my university research colleague and friend <a href="http://www.idt.mdh.se/~ael01/">Andreas Ermedahl</a> have written a chapter on worst-case execution time analysis. We talk some about the theories and techniques, but we try to discuss practical experience in actual industrial use. Both static, dynamic, and hybrid techniques are covered.</p>
<p>I just got my personal copy, but my first impression of the book overall is very positive. The contents seems quite practical to a large extent, not as academic as one might have feared. Do check it out if you are into the field. It is not a collection of research paper, rather instructive chapters informed by solid research but with applications in mind.<a title="Cover of Handbook of Embedded and Real-Time Systems" href="http://jakob.engbloms.se/wp-content/uploads/2007/09/handbook-rtes-2007-cover.png"><br />
</a></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/30"></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/30" 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/30" 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/30/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

