<?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; history</title>
	<atom:link href="http://jakob.engbloms.se/archives/category/history/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>Tue, 27 Jul 2010 19:57:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</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>Pipeline Performance Simulator Anno 1960</title>
		<link>http://jakob.engbloms.se/archives/1126?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1126#comments</comments>
		<pubDate>Mon, 03 May 2010 19:56:50 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[clock-cycle models]]></category>
		<category><![CDATA[cycle accuracy]]></category>
		<category><![CDATA[Frederick Brooks]]></category>
		<category><![CDATA[Harwood Kolsky]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[IBM 7030]]></category>
		<category><![CDATA[ISCA]]></category>
		<category><![CDATA[pipeline]]></category>
		<category><![CDATA[Tensilica]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1126</guid>
		<description><![CDATA[I have just found what almost has to be the first cycle-accurate computer simulator in history. According to the article &#8220;Stretch-ing is Great Exercise &#8212; It Gets You in Shape to Win&#8221; by Frederick Brooks (the man behind the Mythical Man-Month) in the January-March 2010 issue of IEEE Annals of the History of Computing, IBM [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/05/4506VV3073.jpg"><img class="alignleft size-full wp-image-1128" style="margin: 5px 10px;" title="IBM Stretch panel" src="http://jakob.engbloms.se/wp-content/uploads/2010/05/4506VV3073.jpg" alt="" width="83" height="79" /></a>I have just found what almost has to be the first cycle-accurate computer simulator in history. According to the article &#8220;<a href="http://dx.doi.org/10.1109/MAHC.2010.26">Stretch-ing is Great Exercise &#8212; It Gets You in Shape to Win</a>&#8221; by Frederick Brooks (the man behind <a href="http://en.wikipedia.org/wiki/Mythical_man_month">the Mythical Man-Month</a>) in the January-March 2010 issue of IEEE Annals of the History of Computing, IBM created a simulator of the pipeline for the <a href="http://en.wikipedia.org/wiki/IBM_Stretch">IBM 7030 &#8220;Stretch&#8221; computer </a>developed from 1956 to 1961 (<a href="http://www-03.ibm.com/ibm/history/exhibits/vintage/vintage_4506VV3073.html">photo from IBM.com</a>).</p>
<p><span id="more-1126"></span></p>
<p>For those unfamiliar with the Stretch machine, it was a supercomputer developed by IBM which introduced many of the performance techniques and basic computer technologies that we all use today (most of them handed down to us via the IBM System/360). For example, it was the first to use 8-bit bytes and 64-bit floating point. It also introduced memory protection, memory interleaving, and instruction prefetching.</p>
<p>More relevant for my blog is the fact that the Stretch used the world&#8217;s first pipelined main processor, complete with interlocks to maintain program-order semantics. When developing this pipeline, Frederick Brooks claims that IBM developed a program to simulate the pipeline. This simulator was used to test the performance of the pipeline design on various test programs (this was before they were called benchmarks), and tune the design accordingly. The simulator was created by <a href="http://archive.computerhistory.org/resources/text/FindingAids/102658131.Kolsky.pdf">Harwood Kolsky</a>. There is no firm date for the pipeline simulator, but based on the development time of the Stretch, it can be dated somewhere around 1960.</p>
<p>Thus, the simulation-driven approach to computer architecture is about 50 years old by now. Should have gone to ISCA and used this as an excuse for a party I guess&#8230;</p>
<p>It is also interesting to note that the Stretch computer acquired a co-processor in 1962, to do cryptology work. This machine was the one-off <a href="http://en.wikipedia.org/wiki/IBM_7950">IBM 7950 &#8220;Harvest&#8221; </a>and was tailored for the needs of the NSA in the US. It was a seriously special-purpose hardware unit adding a few instructions to the Stretch machine, and beating any other machine at the time by about 50 to 200 on the particular NSA workloads.  Sounds like the kind of performance claims that Tensilica and other application-customized processors claim. 50 years ago.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1126/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eyjafjallajökull is Showing us Something</title>
		<link>http://jakob.engbloms.se/archives/1116?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1116#comments</comments>
		<pubDate>Sun, 18 Apr 2010 19:06:49 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[business issues]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[off-topic]]></category>
		<category><![CDATA[transportation]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[ashcloud]]></category>
		<category><![CDATA[Eyjafjallajökull]]></category>
		<category><![CDATA[Iceland]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1116</guid>
		<description><![CDATA[Wow. The eruption of Eyjafjallajökull in Iceland and the resulting ashcloud has had an effect that I would never ever have expected. A near-total closing down of the European airspace is such a drastic thing to happen to nobody seems to have expected. It has certainly not been included in the list of worst-case scenarios [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/04/cloud.png"><img class="alignleft size-full wp-image-1118" style="margin: 5px 10px;" title="cloud" src="http://jakob.engbloms.se/wp-content/uploads/2010/04/cloud.png" alt="" width="99" height="88" /></a>Wow. The eruption of Eyjafjallajökull in Iceland and the resulting ashcloud has had an effect that I would never ever have expected. A near-total closing down of the European airspace is such a drastic thing to happen to nobody seems to have expected. It has certainly not been included in the list of worst-case scenarios to plan for in company and government contingency plans. Where does this leave us? In a very interesting situation indeed. Worst-case, we will have to do without air travel for months.</p>
<p><span id="more-1116"></span>This volcanic eruption certainly is providing a test for how the world would work if air travel became much less affordavble. I really do think it is absurd that we expect to be able to physically move anything and anyone to anywhere on globe in short time and at low cost. This party cannot go on forever, as oil starts to run out and the airline industry starts to have to pay for their carbon emissions. The energy usage needed to move people like that is just a bit too high to be sustainable, even if we make planes run on biofuels. I sometimes feel like I am living in a golden age that will soon end, and that my grandchildren will not have the same easy reach across the world. Maybe we should take the soonest chance available to go on vacation in Asia&#8230; it might not be feasible in a few decades.</p>
<p>Anyhow, suddenly, we are thrown into a world of no flights by a natural disaster. And sure enough, things get chaotic. In particular for those stuck far away from home with few easy ways to get back. Buses and trains become very attractive, all of a sudden. But their limitations also become clear, in that getting from southern Europe back up to Scandinavia now takes 40 hours instead of 4&#8230;</p>
<p>The impact on business is really interesting. The normal mode of operation of having people flying around to do sales and have important meetings is suddenly made impossible. Instead, we have to turn to the phone and videoconferencing. Incredibly good for the environment, and hopefully something of that will stick. It also shows how dependent we are on fragile supply chains, that our modern economy is often efficient at the cost of robustness.</p>
<p>This is a rich subject for reflection &#8212; how would you live your life if airtravel did not exist? How would business be run? One clear conclusion is that it would make sense to have lots of small offices to keep sales and support staff close to customers, and that local organizations would have to be more independent of the center as the center could not come visiting as often.</p>
<p>If you combine this experience with the past Winter&#8217;s train chaos,  you cannot but reach the conclusion that the way to plan your life is to  keep it physically very local. If you can get everywhere you need to in  everyday life on foot, you have a very robust personal solution.  Obviously, in a modern economy, you are still dependent on goods  deliveries to work over long distances &#8212; but those are less timing  sensitive  than getting to and from work and pick-up at daycare (the  main concern for modern parents).</p>
<p>Guess this years vacation will be planned based on trains and cars,  not on flying <img src='http://jakob.engbloms.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1116/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Matt&#8217;s Today in History: System/360</title>
		<link>http://jakob.engbloms.se/archives/1109?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1109#comments</comments>
		<pubDate>Thu, 08 Apr 2010 09:58:49 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[appearances]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Matt's Today in History]]></category>
		<category><![CDATA[System/360]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1109</guid>
		<description><![CDATA[I am a regular listener to the Matt&#8217;s Today in History podcast. When Matt asked for contributions for this spring (in order to meet a goal of 500 podcasts before Summer) I did give some thought to what I could contribute. Looking over some books, I found one suitable Spring date: the launch of the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/04/mattstodayinhistorylogo.png"><img class="alignleft size-full wp-image-1110" style="margin: 5px 10px;" title="mattstodayinhistorylogo" src="http://jakob.engbloms.se/wp-content/uploads/2010/04/mattstodayinhistorylogo.png" alt="" width="90" height="90" /></a>I am a regular listener to the <a href="http://mattstodayinhistory.blogspot.com/">Matt&#8217;s Today in History </a>podcast. When Matt asked for contributions for this spring (in order to meet a goal of 500 podcasts before Summer) I did give some thought to what I could contribute. Looking over some books, I found one suitable Spring date: the launch of the <a href="http://www-03.ibm.com/ibm/history/exhibits/attic/attic_054.html">IBM System/360 </a><a href="http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PR360.html">back in 1964. </a>The resulting podcast is now live at <a href="http://mattstodayinhistory.blogspot.com/2010/04/ibm-system-360-introduced-april-7-1964.html">Matt&#8217;s Today in History</a>.</p>
<p>Please be kind to any mistakes&#8230; I am trying to paint a broad picture for a computer-history-ignorant audience here.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1109/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Old and New Lego</title>
		<link>http://jakob.engbloms.se/archives/1048?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1048#comments</comments>
		<pubDate>Fri, 08 Jan 2010 18:09:08 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[gadgets]]></category>
		<category><![CDATA[general history]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[off-topic]]></category>
		<category><![CDATA[lego]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1048</guid>
		<description><![CDATA[During the Christmas holidays, I got the chance to compare my oldest child&#8217;s brand new Lego set with some from the mid-1980s. It is quite striking how much larger the things in the sets have become, and how much more affordable (in relative terms) Lego has become since then. In the picture below, we have [...]]]></description>
			<content:encoded><![CDATA[<p>During the Christmas holidays, I got the chance to compare my oldest child&#8217;s brand new Lego set with some from the mid-1980s. It is quite striking how much larger the things in the sets have become, and how much more affordable (in relative terms) Lego has become since then.</p>
<p><span id="more-1048"></span>In the picture below, we have the <a href="http://www.brickset.com/detail/?Set=6073-1">&#8220;Knight&#8217;s Castle&#8221; kit from 1984 (set #6073)</a>. I remember this as being a major kit at the time, one of the dream things to buy, and one of the biggest ones around. Compare it to the new <a href="http://www.brickset.com/detail/?Set=7743-1">Police Command Center (set #7743)</a> from 2008. The small police station accompanying the large trailer is as high as the old castle, and the trailer as long as the castle is wide. It has about 25% more pieces that the old castle.</p>
<p><img class="aligncenter size-full wp-image-1050" title="20091225_Gammalt och nytt lego_01_1" src="http://jakob.engbloms.se/wp-content/uploads/2010/01/20091225_Gammalt-och-nytt-lego_01_1.jpg" alt="20091225_Gammalt och nytt lego_01_1" width="600" height="413" /></p>
<p>Also, note the old small vehicles in the front. Four Lego notches wide, unlike the six-wide police trailer. I remember the <a href="http://www.brickset.com/detail/?Set=6653-1">highway truck </a>as being one of the magical models of my childhood.</p>
<p>To me, the most interesting aspect of comparing Lego sets is that it is a very good illustration of the economic growth that we have seen over the past 30 years. In relative terms, Lego sets have become far more affordable. Average income has certainly increased faster than the price of Lego, and my kids have quite a few more pieces to play with than I did at the same age. The nice thing with comparing Lego buying power with my childhood is that it is a product that is mostly &#8220;the same&#8221;, unlike comparisons involving electronics&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1048/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It was Twenty Years Ago Today</title>
		<link>http://jakob.engbloms.se/archives/995?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/995#comments</comments>
		<pubDate>Sun, 08 Nov 2009 21:36:36 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[general history]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[off-topic]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=995</guid>
		<description><![CDATA[Unless you have been living under a rock I guess the media deluge has made it clear that it was twenty years ago on November ninth that the Berlin Wall fell. Wow. Without a doubt the most momentous and important event that I have lived through. Not at all on the topic of this blog, [...]]]></description>
			<content:encoded><![CDATA[<p>Unless you have been living under a rock I guess the media deluge has made it clear that it was twenty years ago on November ninth that the Berlin Wall fell. Wow. Without a doubt the most momentous and important event that I have lived through. Not at all on the topic of this blog, but important enough to write some personal recollections about.</p>
<p><span id="more-995"></span>The silly thing is that I don&#8217;t have a strong recollection of it. My most vibrant memory from that tumultuous Fall is from December, as we saw tanks roll through the streets of Bucharest on TV. I saw it on the American Armed Forces Network, to be precise, a night on the base with my friends from Keflavík Naval Air Station, also known to the Icelanders as &#8220;the base&#8221;. This was during the year I lived in Iceland, and went to school on the AT Mahan High School on NAS Keflavik. Sometimes I would sleep over on the base with some friends, despite being a &#8220;neutral&#8221; (non-NATO). But I digress&#8230;</p>
<p>The impact of the wall coming down was felt much more clearly the next year, when me and some friends drove down to Berlin. The wall was gone, but the space it had left was still there. The trade in East Bloc memorabilia was rampant, and we had several East German military caps and some cool medals with us as we drove home. Indeed, for the next few years, East Bloc and Soviet stuff was all the rage.  I actually found the cap when we cleaned out some boxes of old memorabilia the other week, guess it was fate. Or just coincidence.</p>
<p>It feels strange to know that the freshmen in university this year were not even born then. They have no memory of the cold war, and newspaper articles carry sidebars about &#8220;this was the DDR&#8221;&#8230; to the youngsters of today, DDR means dual-data-rate RAM, not the Deutsche Demokratische Republik.</p>
<p>1989 was also the year that I got my first Macintosh. An SE, with a 8 MHz 68000 processor and 2 MB of RAM, and 20 MB of HDD. It is dizzying to compare it with the machine I have at home today, a cheap Core i7 Dell. The processor is probably around 2000 times faster (300x clock, and at least 6x more efficient per clock), the memory is 4000 times bigger, the HDD 30000 times larger. Still, it does not feel as magic as that first Macintosh did&#8230; The next year, I got myself an SE/30, with a 16 MHz 68030 and an 68882 math co-processor. Screaming machine at the time, total clunker by today&#8217;s standards.</p>
<p>Finally, what other big events have I seen, events that you can peg a date and a memory on? The second biggest one is the killing of Olof Palme on Feb 28, 1986. Then we have &#8220;September 11&#8243; which was quite a shock. Chernobyl. <a href="http://en.wikipedia.org/wiki/Soviet_submarine_S-363">U137</a>. I have no personal relationship to the other two big recent disasters of Sweden, the Estonia disaster and the Thailand Tsunami, but they could have counted otherwise.</p>
<p>Still, the end of the cold war is a big deal, and the way in which it opened up Europe to what it is today.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/995/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>25 Microchips that &#8220;Shook the World&#8221;</title>
		<link>http://jakob.engbloms.se/archives/778?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/778#comments</comments>
		<pubDate>Mon, 18 May 2009 20:01:05 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[history of computing]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[chips]]></category>
		<category><![CDATA[IEEE Spectrum]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=778</guid>
		<description><![CDATA[IEEE Spectrum has an article in its May 2009 issue called &#8220;25 Microchips that shook the world&#8220;. Not long or deep, but an interesting mix of chips from the 1970s, 80s, 90s, and the 2000s. Recommended as light reading.]]></description>
			<content:encoded><![CDATA[<p>IEEE Spectrum has an article in its May 2009 issue called &#8220;<a href="http://spectrum.ieee.org/may09/8747">25 Microchips that shook the world</a>&#8220;. Not long or deep, but an interesting mix of chips from the 1970s, 80s, 90s, and the 2000s. Recommended as light reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/778/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When does Hardware Acceleration make Sense in Networking?</title>
		<link>http://jakob.engbloms.se/archives/770?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/770#comments</comments>
		<pubDate>Sat, 16 May 2009 06:45:47 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[multicore computer architecture]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[accelerators]]></category>
		<category><![CDATA[ethernet]]></category>
		<category><![CDATA[hardware-software interface]]></category>
		<category><![CDATA[Mike Odell]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=770</guid>
		<description><![CDATA[Yes, when does hardware acceleration make sense in networking? Hardware acceleration in the common sense of &#8220;TCP offload&#8221;. This question was answered by a very nicely reasoned &#8220;no&#8221; in an article by Mike Odell in ACM Queue called &#8220;Network Front-End Processors, Yet Again&#8220;. The article is highly recommended for its long historical look at network [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-771" style="margin: 0px 15px;" title="q_stamp" src="http://jakob.engbloms.se/wp-content/uploads/2009/05/q_stamp.gif" alt="q_stamp" width="38" height="65" />Yes, when does hardware acceleration make sense in networking? Hardware acceleration in the common sense of &#8220;TCP offload&#8221;. This question was answered by a very nicely reasoned &#8220;no&#8221; in an article by Mike Odell in <a href="http://queue.acm.org/">ACM Queue </a>called &#8220;<a href="http://queue.acm.org/detail.cfm?id=1530828">Network Front-End Processors, Yet Again</a>&#8220;.</p>
<p><span id="more-770"></span></p>
<p>The article is highly recommended for its long historical look at network processing and network processing offload. As the balance  between speeds of networks, processors, memory, and interconnects between network cards and the rest of the system has changed over the years, it is an idea that occasionally (four or five times since the 1970s) has made sense. However, in the end, Mike thinks that it usually does not, and for a machine with multiple cores and a modern fast interconnect, it is hard to see how a hardware accelerator can actually help speed things up much when the coordination between the hardware and the software is accounted for. Even if there would appear to be a big bottleneck somewhere today, we can be sure that it wil be removed in the next generation of hardware, rendering the market window for an accelerator quite short.</p>
<p>I read this article as another great motivation for the need to carefully consider the functional design of the hardware-software interface for acceleration devices. For simple data-pumping or media-processing units, this looks easy. For something as complex as TCP/IP processing, it is not. I think the key is that for TCP, we have something that is much more like control-plane processing than data-plane processing, and that is harder to efficiently integrate between hardware and software. Also, there is not really that much work left to offload once data copies have been architected in the right way (and I read Mike&#8217;s article to say that we now know how to do this in a sufficently few-copies way that software is close to optimal in architecture).</p>
<p>From a market perspective, it would also indicate that the acceleration circuits that are in common use today are by definition those that make sense. Having hardware-accelerated graphics and video decoders does seem to help build more efficient and attractive computer systems, as do cryptography accelerators. With this view, it will be interesting to see which of all the accelerators found in modern networking SoCs like those from Freescale and Cavium will survive the test of time. I am willing to put a small bet that pattern-matching engines for traffic inspection is one of them. Apart from that, hard to say.</p>
<p>So go read that article before you start designing your next brilliant accelerator for a common expensive operation.</p>
<p>It also reminds me of a <a href="http://www.virtutech.com/whitepapers/wp-system_arch_spec.html">whitepaper I wrote early this year </a>on how to evaluate performance of a hardware accelerator in the context of a full system with a full software stack, considering the details of the hardware-software interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/770/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Book review: ZX Spectrum BASIC</title>
		<link>http://jakob.engbloms.se/archives/758?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/758#comments</comments>
		<pubDate>Tue, 05 May 2009 20:10:33 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[history of computing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[BASIC]]></category>
		<category><![CDATA[ZX Spectrum]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=758</guid>
		<description><![CDATA[I just rediscovered my first computer, a Sinclair ZX Spectrum (good picture) which I bought back in 1983 or 1984 (I have no trace of the exact date, unfortunately). The machine was a perfect machine to learn programming on in my opinion, consisting of little more than a Z80 processor with memory, bit-mapped display (with [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-767" style="margin: 5px 10px;" title="sinclairspectrum-pre" src="http://jakob.engbloms.se/wp-content/uploads/2009/05/sinclairspectrum-pre.jpg" alt="sinclairspectrum-pre" width="100" height="70" />I just rediscovered my first computer, a <a href="http://en.wikipedia.org/wiki/Zx_spectrum">Sinclair ZX Spectrum </a>(<a href="http://www.old-computers.com/museum/computer.asp?c=223">good picture</a>) which I bought back in 1983 or 1984 (I have no trace of the exact date, unfortunately). The machine was a perfect machine to learn programming on in my opinion, consisting of little more than a Z80 processor with memory, bit-mapped display (with a famously odd-ball addressing scheme and color handling) and ultra-simple sound output and input. Most of my friends in the end bought Commodore C64 machines, which had more powerful graphics and sound hardware, but a processor that was much less fun to program.</p>
<p>The Spectrum came with a built-in BASIC interpreter that are up the bottom 16kB of the 64kB addressing space. The BASIC was actually fairly powerful and easy-to-use, and included a very fun programming textbook. I just reread that textbook, and it is quite strikingly well-written and manages to cover both basic computer-science-style programming and deep close-to-the-machine and real-time programming in a compact 150 pages. There is no credit to a particular author in the book I have (Swedish translation by a group of people at Ord &amp; Form here in Uppsala), but an <a href="http://www.1000bit.net/support/manuali/zxspectrum/start.htm">online scan </a>credits Steven Vickers.</p>
<p><span id="more-758"></span></p>
<p>Overall, the book does a very good job of explaining both the Sinclair BASIC interpreter, as well as some general programming concepts. And how the machine works deep down. Here are some highlights.</p>
<h2>Explaining Functions</h2>
<p>The way that functions are explained made me laugh out loud (quoting the original English according to the online resource I found):</p>
<blockquote><p>Consider the sausage machine. You put a lump of meat in at one end, turn a handle, and out comes a sausage at the other end. A lump of pork gives a pork sausage, a lump of fish gives a fish sausage, and a load of beef a beef sausage.</p>
<p>Functions are practically indistinguishable from sausage machines but there is a difference: they work on numbers and strings instead of meat. You supply one value (called the <em>argument</em>), mince it up by doing some calculations on it, and eventually get another value, the <em>result</em>.</p></blockquote>
<p>This is a very good analogy to introduce functions, in a fairly gender-neutral way and assuming no mathematical background on part of the user. I wonder if I ever cared to define any functions&#8230; as I recall it, GOSUB was as far as I got in sophistication before leaving BASIC and starting writing everything in Z80 assembler.</p>
<h2>Reading a Changing Counter</h2>
<p>Later on in the book, a suggestion is made to get a better time counter. Essentially, by reading a 24-bit value incrementing at 50 Hz, using three separate PEEK commands:</p>
<pre><code>(65536*PEEK 23674+256*PEEK 23673+PEEK 23672)/50</code></pre>
<p>This code does subject you to the issue of reading during an update and counter wrap from one byte to the next. This complication is cheerfully noted after a complete program using this feature as a by-the-way-the-code-is-correct by a small loop. There are many such small gems in the book, essential tricks and caveats that still apply to programming close to the hardware and doing real-time programming.</p>
<h2>We have No Clock</h2>
<p>The ZX Spectrum, as most computers of its day, did not have a real-time clock on board. Instead, you had to time things using the 50Hz screen refresh interrupt (which is what the code in previous section reads) or by just adjusting your code to wait appropriately. One example program is supposed to show a clock updating every second. However, getting to a second is a bit tricky when there is no firm time-base to work on. The suggesting instead is this:</p>
<blockquote><p><span style="font-size: x-small;">This clock will run down after about 55.5 hours because of line 60, but you can easily make it run longer. Note how the timing is controlled by line 210. You might expect PAUSE 50 to make it tick one a second, but the computing takes a bit of time as well and has to be allowed for. This is best done by trial and error, timing the computer clock against a real one, and adjusting line 210 until they agree. (You can&#8217;t do this very accurately; an adjustment of one frame in one second is 2% or half an hour in a day.)</span></p></blockquote>
<p><span style="font-size: x-small;">So what we have here is a classic &#8220;how long must I wait to get a steady pace of execution for my periodic code?&#8221; issue familiar to anyone using an RTOS and trying to determine how long to sleep a process for until the next periodic interval starts. Once again, illustrated in ten lines of BASIC and a few lines of text.<br />
</span></p>
<h2>Repeatability and Randomness</h2>
<p>In <a href="http://www.1000bit.net/support/manuali/zxspectrum/chapter_11.htm">Chapter 11</a>, randomness using the built-in random function is introduced. This was a 16-bit periodic pseudo-random system where you could set the random seed to put start the random generation at any particular point in a 100% repeatable manner. Indeed, the book introduces the concept of doing this in order to ensure repeatable execution of a program relying on randomness. This <a href="http://jakob.engbloms.se/archives/734">sounds familiar</a> from my previous post on simulation determinism:</p>
<blockquote><p><span style="font-size: x-small;">If you had a program with RND in it and it also had some mistakes that you had not found, then it would help to use RANDOMIZE like this so that the program behaved the same way each time you ran it.</span></p></blockquote>
<h2>Delving into Details</h2>
<p>The BASIC manual does not try to hide how the BASIC interpreter works internally, <a href="http://www.1000bit.net/support/manuali/zxspectrum/chapter_24.htm">rather on the contrary</a>, including a list of all system variables so that they can be POKEd and changed if need be. It also explains the data layout of all variable types (the Spectrum BASIC used 32-bit integers, impressive for an 8-bit machine, and 40-bit floating point numbers).</p>
<p>The only useful information for me in the way I used the machine as a pure assembly-language target was the memory layout of the screen. Which is bizarre to say the least. It had a separate black-and-white bitmap and color overlay for every 8&#215;8 character. And each scan line was NOT consecutive with the previous in memory, but rather offset by 256 bytes. I think the idea was to make it easy to insert a single character into the bitmap by just incrementing the high byte of the address by one for each pixel line.</p>
<p>To make that work, the screen was divided into three pieces of 8 character lines/2048 bytes each (8 character lines of 8 pixel lines each, each with 32&#215;8 bits of data).  The sprite drawing routines that would work with that to plot a 16&#215;16 sprite in any screen position was amazing code, to say the least. I independently invented unrolled loops to make this run fast. And misused the POP instruction to pull in data to draw (it took 11 cycles, rather than 12 as a more usual register-indirect load would do) &#8212; provided that you turned off interrupts or data corruption would ensue.</p>
<p>These were fun programming times. It shaped my programming habits for a decade, culminating in an infamous 68000 assembler hack in my first undergrad year at Uppsala, with some 50 pages of very tight and complicated assembly language making use of most features of the 68k instruction set&#8230; poor TA.</p>
<h2>Final Notes</h2>
<p><span style="font-size: x-small;">On it goes like that. The chapters are short but very much to the point, and a large number of fairly subtle concepts are introduced. The Spectrum was a good school for a budding programmer, with no compiler, no safety net, but also no way to break the machine in a way that a reboot would not cure.<br />
</span></p>
<p>I actually recommend seeking out the aforementioned online repository for the Spectrum programming book, it is almost still in shape to be used as an introduction to real-time and embedded programming.</p>
<p>I am currently trying to figure out what is a good ZX Spectrum emulator to relive these old times if I can find time. The hardware unit I have depends on an analog tape drive to load software&#8230; and I gave up analog sound back in 1993. As if the magnetic tapes which have been in storage for 20 years have any chance of containing useful data anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/758/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Marketing a Paper Magazine with a Podcast</title>
		<link>http://jakob.engbloms.se/archives/761?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/761#comments</comments>
		<pubDate>Tue, 05 May 2009 06:19:43 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[business issues]]></category>
		<category><![CDATA[general history]]></category>
		<category><![CDATA[ancient warfare]]></category>
		<category><![CDATA[podcast commentary]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=761</guid>
		<description><![CDATA[I just found a fairly interesting podcast that offers a nice example on how do marketing for paper-based magazines using digital ephemeral technology. The ancient warfare magazine has a podcast that accompanies each issue, where a set of history buffs discuss around the theme of the current issue of the magazine. I think this is [...]]]></description>
			<content:encoded><![CDATA[<p>I just found a fairly interesting podcast that offers a nice example on how do marketing for paper-based magazines using digital ephemeral technology. The <a href="http://www.ancient-warfare.com">ancient warfare magazine </a>has a podcast that accompanies each issue, where a set of history buffs discuss around the theme of the current issue of the magazine.</p>
<p><span id="more-761"></span>I think this is an excellent way to promote the magazine, as it provides a hook that is for free for interested potential readers, and also a natural push for getting the magazine when they mention &#8220;for more details, please see the article so and so in the current issue&#8221;. At least to me, that is perfectly fine.</p>
<p>It also resembles the use of conference talks to promote books, where you also point to the published paper edition for more details and in-depth coverage. Unfortunately, I don&#8217;t think this is a model for the music industry as their goods lack that kind of depth&#8230;</p>
<p>Now, if only I had time to actually read the magazine&#8230; but I might buy some issues to read in a few years time when the kids are a bit older.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/761/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Vista, Laserwriter 12/640 PS, and FoxIt</title>
		<link>http://jakob.engbloms.se/archives/740?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/740#comments</comments>
		<pubDate>Sun, 19 Apr 2009 19:23:28 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[FoxIt reader]]></category>
		<category><![CDATA[laserwriter]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=740</guid>
		<description><![CDATA[I have an old Apple LaserWriter 12/640 PS network printer at home that I bought back in 1997. In those days, I had a PowerBook G3 at 266 MHz, Windows NT was new, and my work computer was one of Sweden&#8217;s first 300 MHz Pentium II machines&#8230; since then, my home machines have moved from [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-743" title="laserwriter12640" src="http://jakob.engbloms.se/wp-content/uploads/2009/04/laserwriter12640.jpg" alt="laserwriter12640" width="59" height="50" />I have an old <a href="http://en.wikipedia.org/wiki/LaserWriter_12/640_PS">Apple LaserWriter 12/640 PS </a>network printer at home that I bought back in 1997. In those days, I had a PowerBook G3 at 266 MHz, Windows NT was new, and my work computer was one of Sweden&#8217;s first 300 MHz Pentium II machines&#8230; since then, my home machines have moved from MacOS 8 to Windows NT 4 to Windows 2000 to Windows XP and now Windows Vista 32- and 64-bit. But the trusty LaserWriter remains, keeps printing, and is still on its first toner cartridge!</p>
<p>However, moving to Vista has made the printing bit harder.</p>
<p><span id="more-740"></span>In Windows XP, there were drivers available for the printer, since it was fairly recent when XP was released. In Vista, no such luck. So you have to resort to using &#8220;LPR&#8221; printing (optional install), and using the generic &#8220;Microsoft Imagesetter&#8221; as the printer profile. This, somewhat surprisingly, works pretty well.</p>
<p>With one exception: Acrobat.</p>
<p>It seems that Acrobat is trying so hard to be smart about printing that it gets confused by the Imagesetter bit, and decides that the thing on the other end is not a Postscript printer. And thus, it needs to have a 600 dpi bitmap of the page being printed sent to it. Needless to say, my old printer with its upgraded 12 MB of RAM (it came with 4, and I scavenged 8 more MB from some old dead PC that passed through my hands in the late 1990&#8242;s) usually chokes on this.</p>
<p>When my last XP machine was retired, this did indeed create a problem, since all official online forms tend to be Acrobat-based.</p>
<p>However, by accident and luck I decided to try the <a href="http://www.foxitsoftware.com/">Foxit Reader</a> as an Acrobat Reader alternative. This has turned out to be the perfect to solution to my printing woes. With Foxit, a PDF file prints as a small nice regular vector graphics file that my LaserWriter has little problem printing. It makes printing PDFs feasible and reliable again, and means that I do not have to go out and figure out which new printer to buy. It is kind of cool to have such a decade-old technology icon at home, and still in working order.</p>
<p>A final note: 12 MB in my printer. My first hard drive back in 1990 had 20 MB on it. My new desktop Core i7 machine just got upped to 9 GB of RAM. Back in 1991, I had my high school&#8217;s most powerful home computer: a Macintosh SE/30 with all of 5 MB of RAM (which cost a fortune at the time).</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/740/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Details of Speed</title>
		<link>http://jakob.engbloms.se/archives/355?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/355#comments</comments>
		<pubDate>Sun, 23 Nov 2008 20:40:04 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[general history]]></category>
		<category><![CDATA[virtual platforms]]></category>
		<category><![CDATA[Functional models]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[Speed]]></category>
		<category><![CDATA[Spitfire]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=355</guid>
		<description><![CDATA[I just read a fairly interesting book about the British Spitfire fighter plane of World War 2. The war bits were fairly boring, actually, but the development story was all the more interesting. I find it fascinating to read about how aviation engineers in the 1930s experiment and guess their way from the slow unwiedly [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-356" title="spitfire-1" src="http://jakob.engbloms.se/wp-content/uploads/2008/11/spitfire-1.jpg" alt="" width="200" height="108" />I just read a fairly interesting book about the British <a href="http://en.wikipedia.org/wiki/Supermarine_Spitfire">Spitfire </a>fighter plane of World War 2. The war bits were fairly boring, actually, but the development story was all the more interesting. I find it fascinating to read about how aviation engineers in the 1930s experiment and guess their way from the slow unwiedly biplanes of World War 1 and the 1920s to the sleek very fast aircraft of 1940 and beyond. It is a story that also has something tell us about contemporary software development and optimization.</p>
<p><span id="more-355"></span></p>
<p>The Spitfire development starts with an excellent basic architecture for the aircraft, including the wing shape, the long nose, and the low pilot position. This offered a good basic design that lasted until the early jet era, and that was still competitive in 1945 (with lots of upgrades to engines and armament and equipment along the way).  What is truly fascinating is the detail work that went into turning that good design into a practical fighter aircraft.</p>
<p>Especially the performance and measured in terms of simple top speed. Here, the engineers fought a constant battle between the requirements of armament and electronics and engines and the need for as clean and streamlined an outline as possible. It was a constant attention to little details, adding things, testing the their effect, redesigning or scrapping feature. It is very similar to how we develop software today, where adding features might help some users &#8212; but often at the price of more complexity, longer critical paths, and lower absolute performance.</p>
<p>For example, early prototypes had a simple skid instead of a full tail wheel, as that skid was more streamlined and cheaper to build. But flying from a hard-surface airfield required a wheel, and in the end the Spitfire had to use a retractable rear wheel, which was not in the original design (RAF had decided to upgrade their airfields, and this requirement was introduced fairly late in the process). It cost some weight and complexity, but increased top speed by several miles per hour. Once again, we see the same kind of pattern in software development: you can gain performance at the cost of complexity somewhere else. Advanced optimizations tend to rely on quite complicated techniques to make the common case fast, where simpler implementations feature lower performance but shorter development time.</p>
<p>Simulation was also used in a very clever way. In one series of experiments, the question was asked whether simpler cheaper rivets with domed heads could be used instead of complicated flush rivets. To check this, they glued peahalves to a prototype aircraft to simulate various configurations, and in the end concluded that it was fine to have domed rivets on most of the body, but that the wings absolutely required flush rivets. Very ingenious experimentation I think. And a story that should be familiar to anyone who has done some optimization work on real-world software: some things that seem &#8220;necessary and right&#8221; actually do not have the expected benefit for the cost (flush rivets on the body), while others are crucial (flush rivets on the wings). You typically do not know until you have tried. Just guessing is usually a bad guide (I just read <a href="http://www.embedded.com/design/opensource/212100638;?pgno=2">an article at Embedded.com </a>about the misguided attempt to establish an &#8220;Embedded C++ subset&#8221; in the mid-1990s that is a perfect example of this).</p>
<p>Other examples of the battle with speed was that adding radio aerials reduced speed by a few mph, as did the addition of extra cooler air intakes for stronger engines. On the other hand, a stronger engine also increased speed, so it was a good tradeoff in the end. There was a short-lived little air intake to provide driving air flow to cockpit electronics that cost a few mph and was promptly removed. It is actually quite fascinating to see in all aircraft of this era how little bumps and protrusions can have a significant impact on speed and performance. It was a case of &#8220;death by a thousand cuts&#8221;, as each little feature by itself can seem insignificant, but the total effect is dramatic. Here we also see a modern analogy in software optimization: while undergraduate courses in software teach you to identify &#8220;the big bottleneck&#8221; and &#8220;use a better algorithm&#8221;, most real-world software has no primary bottleneck. And here, just improving little things all over the place will have a pretty major aggregate impact. <a href="http://www.twit.tv/167">The Twit Podcast #167 has a discussion on how this is the case for Windows 7, </a>where Microsoft has made big strides in performance by a lot of small improvements.</p>
<p>Thus, for software, you can also get &#8220;life by a thousand cuts&#8221;, by cutting out a thousand little pieces of overhead you can make your software way more lively.</p>
<p>In my world of computer simulators and virtualization solutions, this is a very familiar scenario. There are sound basic architectures (and less so), and for each type of architecture, the quality of implementation can make a marked difference in performance (and stability). I recently published a <a href="http://www.virtutech.com/whitepapers/simics_speed.html">white paper on some of these aspects for Simics</a>, which I think is a good example of a Spitfire-style design with a good basic architecture and lots of detail work to really make performance shine.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/355/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Off-topic: Computer Nostalgia at Stackoverflow</title>
		<link>http://jakob.engbloms.se/archives/303?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/303#comments</comments>
		<pubDate>Fri, 03 Oct 2008 11:31:03 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[history of computing]]></category>
		<category><![CDATA[nostalgia]]></category>
		<category><![CDATA[stackoverflow.com]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=303</guid>
		<description><![CDATA[Strongly recommended thread at stackoverflow: http://stackoverflow.com/questions/102714/what-was-your-first-home-computer is about your first home computer. Some good product shots, and also some really funny things inserted.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-300" style="margin-left: 10px; margin-right: 10px;" title="stackoverflowlogo250hq2" src="http://jakob.engbloms.se/wp-content/uploads/2008/10/stackoverflowlogo250hq2.png" alt="" width="47" height="61" /></p>
<p>Strongly recommended thread at stackoverflow: http://stackoverflow.com/questions/102714/what-was-your-first-home-computer is about your first home computer. Some good product shots, and also some really funny things inserted.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/303/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtual Platforms for Late Hardware and the Winds of History</title>
		<link>http://jakob.engbloms.se/archives/180?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/180#comments</comments>
		<pubDate>Wed, 30 Jul 2008 20:56:32 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[business issues]]></category>
		<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[virtual platforms]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[digital archive]]></category>
		<category><![CDATA[document retention]]></category>
		<category><![CDATA[Forskning och Framsteg]]></category>
		<category><![CDATA[Simics]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=180</guid>
		<description><![CDATA[As might be evident from this blog, I do have a certain interest in history and the history of computing in particular. One aspect where computing and history collide in a not-so-nice way today is in the archiving of digital data for the long term. I just read an article at Forskning och Framsteg where [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2008/07/d21_2t.jpg"><img class="size-medium wp-image-181 alignleft" style="margin: 10px;" title="DataSaab D21" src="http://jakob.engbloms.se/wp-content/uploads/2008/07/d21_2t.jpg" alt="" width="150" height="112" /></a>As might be evident from this blog, I do have a certain interest in history and the history of computing in particular. One aspect where computing and history collide in a not-so-nice way today is in the archiving of digital data for the long term. I just read an article at <a href="http://www.fof.se/?id=08550">Forskning och Framsteg </a>where they discuss some of the issues that use of digital computer systems and digital non-physical documents have on the long-term archival of our intellectual world of today. Basically, digital archives tend to rot in a variety of ways. I think virtual platform technology could play a role in preserving our digital heritage for the future.</p>
<p><span id="more-180"></span></p>
<p>Living in a decently old city does provoke a certain interest in history and how to access the past. Note that Uppsala, like everything in Sweden, is fairly recent on the grand scale of things. We have a cathedral from the 1200s, and some older churches going back to the 1000s, but before that there is not much to boast about. It is not like Rome or Egypt or China with thousands of years of civilization and with impressive buildings that still stand. But I digress&#8230;</p>
<p>The real problem with archives and digital technology is that it is really hard to preserve a large portion of the intellectual data that we produce today. When I was an archivist at <a href="http://www.student.uu.se/nation/smalands/">Smålands Nation </a>here at the university in the 1990s, it was real fun to browse through the old papers we had in the archive (only stuff from the past century, all the really old and valuable stuff was in professional hands at the national archives). Reading a menu from a party held in 1945, or the time plan for a large formal celebration in the 1950s, or a guest list from such an event was actually quite intruiging. You could see how tastes and traditions change, even as students all believe they are maintaining ages-old traditions faithfully&#8230; Browsing the member list in old handwritten ledgers was also great fun.</p>
<p>In another fifty year&#8217;s time, what will we have left from today&#8217;s activities? The party plans are now all just printouts from a throwaway word document, the member list a database on a PC, and unless you make a conscious effort, memories and printed papers will quickly fade (you do need to use the appropriate laser toner on low-acid archive-quality paper if you want the things to last even a decade, let alone a hundred years) and the students fifty years from now will have no idea on we ran our parties, who were in the nation, and other such facts of daily life. &#8220;Print it out&#8221; is easy to say but hard to do. Much of today&#8217;s digital data does not really print out in a useful way. A wiki, for example, can be printed as a snapshot. But the links and the edit history is gone.</p>
<p>But imagine if we could retain these digital documents accessible, in their living digital form. Having a proper database available for use and query is so much more interesting and powerful than a stack of papers. Being able to look at the audit history of a wiki, or the commit history of a program&#8217;s source code would offer a much deeper insight into the people and processes that produced the end results compared to just looking at a static snapshot.</p>
<p>What does it take to do that? A huge and known problem in digital archiving is the physical media access. All great archival institutions in the world have scores of different tape readers, disk readers, some new, some antique, and try to use these to pry the bits of equally antiquated storage media. This is bad, just like we have problems looking at old movies as the reams of film are literally falling apart. Clay tablets start to look positively sophisticated and a smart choice compared to our very brittle technologies.</p>
<p>Second, once we have the bits, what can we do with them? Now we have to tackle the file formats, and having pried them open, to find the fonts and character sets which are suitable for displaying them. Rendering a MacWrite document from 1985 on a modern machine will likely not quite give the same wonderful black-and-white 72-dpi view that you got back then&#8230; Or figuring out that for a while, we used 7-bit ASCII to write Swedish texts by replacing [, ], |, {, }, \ with å, ä, ö, Å, Ä, Ö (not in exactly that order &#8212; but I used to be fluent in reading and writing that!). Even worse, decoding a database file or purely binary CAD/CAM file is going to require some serious reverse engineering of the old programs that created them&#8230; unless you could run these same old programs in some way.</p>
<p>At least to me, an &#8220;obvious&#8221; solution is to use virtual platform technology to make keep the old software stacks running. Some archivists are apparently working on OS emulation of various kinds to keep the old software running, but I do think that it is much simpler and more general to just simulate the entire machine hardware. This will result in the smallest risk of error, and the greatest fidelity to the original software as oddities such as word lengths and character sets can be faithfully reproduced. Simply because the SW-HW interface in a machine is the best document and narrowest interface in the entire machine. Old tapes and disks should be turned into files stored on the mass storage of current machines, and these files can then be migrated to new machines as they come online. As long as you maintain the copies of the materials by reproducing them on new hard drives, they will not rot.</p>
<p>It will also have the property that the entire look and feel of the old systems remains accessible. Which is a blessing in that it maintains our digital heritage and lets computer historians also go back and see how old software looked and worked. It is also considered a curse by practising archivists who do not particularly like the idea of learning how to operate strange old operating systems with arcane command lines. I think this is not necessarily a big problem. Just like people today study and learn ancient languages to learn more about ancient cultures as embodied in their written records, I can see historians of the future learning to use old operating systems and programming languages to study the ancient culture of our time as embodied in our computerized records.</p>
<p>Creating these kinds of virtual platforms is quite different from the dominant virtual platform thinking in the commercial market place today which is focused on modeling new and future hardwares. Rather, we need to study an existing artefact and make a very good model of it. It is a different type of task, requiring slightly different types of tools.</p>
<p>Of particular importance is that the simulation platform totally insulates simulation models from the underlying machine. You need to be able to port the simulation to new operating systems, machines, and architectures without changing a line in the source code of the models. This means making sure to locate all host dependencies inside the simulation framework, and making sure that models are completely portable regardless of word lengths, endianness, and other aspects. You want to be able to take a model that you run today on an x86-64 on Linux and run it on some future 128-bit middle-endian platform with a completely different type of operating system. Basically, the simulation platform has to be a complete virtual machine in its own right. Probably, over time, we are going to add more layers of virtual platforms to get around really major shifts in computer system architecture. There is nothing saying that you can only virtualize once, already the IBM S/370 showed that you could virtualize recursively and to an arbitrary depth.</p>
<p>I do think that some tools that we have today are perfectly useful for this kind of undertaking.</p>
<p>The business aspects are going to be interesting, though. We would like to use the technologies already available in the sophisticated commercial virtual platform tools, that&#8217;s kind of given. But the archival market place is not the most lucractive&#8230; and that they would like to have very good insurance that the tools remain available. Including source-code escrow that would make the requirements of 25-years military projects look positively light.</p>
<p>Developing a completely new totally open-source solution sounds like a nice idea in theory, but is probably a bit too much work. It also takes no advantage of all the commercial technology available today. Maybe as the virtual platform market matures, the industry can come up with some way to provide this technology for the greater benefit of society. Basically, doing a bit of social work where we really have the tools to help.</p>
<p>I have no good solutions to that to offer right now.</p>
<p>But imagine how cool it would be to, in fifty years from now, gather the old team from Virtutech around some kind of display device and watch an ancient <a href="http://www.virtutech.com/simics4.html">Simics 4.0 </a>run on top of a virtual quadcore x86 with Linux 2.6&#8230; all running on top of Simics 29.0 (estimating one major version every two years) on some future I-have-no-idea-what-it-will-be hardware and software system. That really is something that would be cool to see happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/180/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The 1970 rule strikes again: Virtual Platform Principles in 1967</title>
		<link>http://jakob.engbloms.se/archives/130?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/130#comments</comments>
		<pubDate>Fri, 30 May 2008 20:37:31 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[multicore computer architecture]]></category>
		<category><![CDATA[virtual platforms]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[1969]]></category>
		<category><![CDATA[HITAC-8400]]></category>
		<category><![CDATA[Hitachi]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[race condition]]></category>
		<category><![CDATA[Temporal decoupling]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=130</guid>
		<description><![CDATA[Being a bit of a computer history buff, I am often struck by how most key concepts and ideas in computer science and computer architecture were all invented in some form or the other before 1970. And commonly by IBM. This goes for caches, virtual memory, pipelining, out-of-order execution, virtual machines, operating systems, multitasking, byte-code [...]]]></description>
			<content:encoded><![CDATA[<p>Being a bit of a computer history buff, I am often struck by how most key concepts and ideas in computer science and computer architecture were all invented in some form or the other before 1970. And commonly by IBM. This goes for caches, virtual memory, pipelining, out-of-order execution, virtual machines, operating systems, multitasking, byte-code machines, etc. Even so, I have found a quite extraordinary example of this that actually surprised me in its range of modern techniques employed. This is a follow-up to a previous post, after having actually digested <a href="http://jakob.engbloms.se/archives/121">the paper I talked about earlier</a>.</p>
<p><span id="more-130"></span></p>
<p>The paper in question was published in 1969, and is titled &#8220;<a href="http://portal.acm.org/citation.cfm?id=961053.961092&amp;coll=ACM&amp;dl=ACM&amp;CFID=67556471&amp;CFTOKEN=25257537">A program simulator by partial interpretation<strong>&#8220;</strong></a>. In the previous post, I took note of its use of direct execution of software plus trapping of privileged instructions, but that was not really the most interesting bits in there.</p>
<p>They lay out  in quite simple terms most of the key ideas behind today&#8217;s fast virtual platforms. Here are the best parts:</p>
<ul>
<li>They note that simulation of a computer is often used to overcome debugging difficulties, in particular repeating failed runs and tracing all that is going on in the target machine.</li>
<li>They are hunting down race conditions using the simulator.</li>
<li>They use recorded input and output to drive a deterministic simulation even of workloads involving communication with the external world.</li>
<li>They simulate multiple processors on top of a single physical processor by means of giving each processor a certain time slice to do its work before switching to the next processor. This is known as temporal decoupling or quantized simulation today, and is a key to the high speed of solutions such as Simics. They note the same tradeoffs as we see today, 40 years later, for doing this: shorter slices more accurately depict the parallelism, but also cost performance.</li>
<li>The temporally decoupled simulation also includes timers and similar non-CPU-hardware. Just like we do it today for virtual platforms.</li>
<li>In a temporally decoupled simulation, they optimize the simulation of the IDL, Idle, instruction. When it is encountered, they skip immediately to the end of the time slice. This is what we today call idle-loop optimization or hypersimulation, and which is absolutely key to achieving scalable simulation of large multiprocessor and multi-machine setups (since most parts of a system are not usually maximally loaded).</li>
<li>They are debugging operating systems on the simulator, not just user-level code.</li>
</ul>
<p>The computer in question is a Japanese System/360-compatible machine called the <a href="http://www.ipsj.or.jp/katsudou/museum/computer/0610_e.html">HITAC-8400</a>. The work was reported in 1969, but actually carried out in 1967.</p>
<p>There are some differences in scale and kind compared to today&#8217;s virtual platforms, but none that detract from the underlying principles. The 1967 system is host-on-host, so it is not the kind of cross-environment that is most common in today&#8217;s virtual platforms (Power Arch on x86, ARM on x86, etc.). The IO system is much easier to simulate since it is part of the instruction set of the processor rather than being a set of complex memory-mapped peripherals.</p>
<p>So the 1970 rule strikes again. Not the IBM rule, this time, this was all done by Hitachi. There are traces of similar work at IBM in other papers, but I have not been able to locate actual copies of any publication.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/130/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtual Platform by Virtualization Extensions &#8212; 1969</title>
		<link>http://jakob.engbloms.se/archives/121?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/121#comments</comments>
		<pubDate>Sun, 11 May 2008 18:53:11 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[multicore debug]]></category>
		<category><![CDATA[virtual platforms]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[1969]]></category>
		<category><![CDATA[conference paper]]></category>
		<category><![CDATA[HITAC-8400]]></category>
		<category><![CDATA[Hitachi]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[SOSP]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=121</guid>
		<description><![CDATA[By means of a trip down virtualization history, I found a real gem in 1969 paper called A program simulator by partial interpretation, by Kazuhiro Fuchi, Hozumi Tanaka, Yuriko Manago, Toshitsugu Yuba of the Japanese Government Electrotechnical Laboratory. It was published at the second symposium on Operating systems principles (SOSP) in 1969. It describes a [...]]]></description>
			<content:encoded><![CDATA[<p>By means of a trip down virtualization history, I found a real gem in 1969 paper called <a href="http://portal.acm.org/citation.cfm?id=961053.961092&amp;coll=ACM&amp;dl=ACM&amp;CFID=67556471&amp;CFTOKEN=25257537"><strong>A program simulator by partial interpretation</strong>,</a> by Kazuhiro Fuchi, Hozumi Tanaka, Yuriko Manago, Toshitsugu Yuba of the Japanese Government Electrotechnical Laboratory. It was published at the <span class="mediumb-text">second symposium on Operating systems principles</span> (SOSP) in 1969. It describes a system where regular target instructions are directly interpreted, and any privileged instructions are trapped and simulated. Very similar to how VmWare does it for x86, or any other modern virtualization solution.</p>
<p><span id="more-121"></span></p>
<p>The interesting bit is really the uses that this system is put to:</p>
<blockquote><p>In promoting the ETSS project a program simulator based on an idea of partial interpretation has been constructed, and its principle and design are described in the paper. This new approach has been introduced to provide the simulator with such features as high speed and high accuracy in simulation and simplification in implementation. The essence of the idea of partial interpretation is using direct execution of instructions by hardware and simulation of them by an interpreter in combination, wherewith the hardware interrupt mechanism intermediates the two phases of the whole simulation. An interruption takes place when executing a &#8220;privileged&#8221; instruction, which triggers the simulation of the instruction. The other type of instructions are normally rendered to direct execution by hardware. The simulation method for devices operating in parallel is also described with respect to the timing control and scheduling. <strong>A program simulator of this type provides a powerful tool for debugging &#8220;supervisor &#8221; programs and opens a new approach to system expansion</strong>.</p></blockquote>
<p>Note that last part. This is essentially a virtual machine used for operating-system debug. So far, the earliest mention of this idea that I have found. There are similar ideas in a classic 1972 IBM paper. If anyone has seen anything older, please comment and tell me!</p>
<p>It is also fun reading these old papers&#8230; they are usually scanned from a paper copy, and therefore really show how papers looked and felt forty years ago. Long before desktop publishing, or even TeX.</p>
<p><img class="aligncenter size-full wp-image-122" title="fuchi-1969" src="http://jakob.engbloms.se/wp-content/uploads/2008/05/fuchi-1969.png" alt="Abstract of Fuchi 1969 paper" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/121/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A logo from 1996 and simulation for archival purposes</title>
		<link>http://jakob.engbloms.se/archives/19?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/19#comments</comments>
		<pubDate>Mon, 03 Sep 2007 19:21:39 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[appearances]]></category>
		<category><![CDATA[general history]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[alumni]]></category>
		<category><![CDATA[DVL]]></category>
		<category><![CDATA[DVP]]></category>
		<category><![CDATA[Uppsala University]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/19</guid>
		<description><![CDATA[Back in 1996, DVP celebrated its 15th anniversary. When looking through my digital and paper archive, I found this gem: The official badge and logo for the 1996 anniversary! We also produced some mouse pads with this logo on them, one of which I still use for my daily job. Pretty good quality I must [...]]]></description>
			<content:encoded><![CDATA[<p>Back in <a href="http://en.wikipedia.org/1996">1996</a>, DVP celebrated its 15th anniversary. When looking through my digital and paper archive, I found this gem: <a href="http://jakob.engbloms.se/wp-admin/" title="DVP 15 Ã¥r"><img src="http://jakob.engbloms.se/wp-content/uploads/2007/09/dvp-15ar-farg-420x420.gif" alt="DVP 15 Ã¥r" /></a>The official badge and logo for the 1996 anniversary! We also produced some mouse pads with this logo on them, one of which I still use for my daily job. Pretty good quality I must say.</p>
<p>The picture shown here was saved as GIF for use on the web. But scarily enough, apart from a few more GIF files, I could not open or even understand the file type of most of the files from that time, only ten years ago. Our digital archives are not very robust &#8212; more on that below.</p>
<p><span id="more-19"></span>What is kind of scary is that apart from the various GIF and TIFF renderings of the logo in various uses (for usage on the primitive web pages of 1996 mainly), I cannot retrieve the design data. It is all inside FreeHand 4 or FreeHand 5 files, for the Mac platform, using postscript fonts that only worked on MacOS 7 and 8 with Adobe Type Manager. So even if the files themselves are salvagable using contemporary software in 2007, some of the basic data they are built from is irretrievable for me. I gave away my last old Mac five years ago, and it is now dead.</p>
<p>A bit scary. And a good example of when simulation of a computer system could serve us well as a way to preserve the entirety of old software environment. I think this is a typical case of when you need the complete system a document was built on and not just the document itself to correctly interpret it. I guess I should make sure to &#8220;freeze&#8221; some current system environment inside a disk image at some point, to have something to go back in the future. Provided some software behaving like a 2007 PC can be created and found.</p>
<p>Final note: it around this time that I designed the version of the &#8220;<a href="http://en.wikipedia.org/wiki/Cons">cons box</a>&#8221; seen as part of the logo above. This served for quite a few years as the main style of the logo of the computer science program at Uppsala University. It seems to have fallen out of use now.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/19/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Simulation of the first Amiga Custom Chips (1983)</title>
		<link>http://jakob.engbloms.se/archives/13?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/13#comments</comments>
		<pubDate>Sun, 26 Aug 2007 13:14:40 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[computer simulation technology]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[Amiga]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/13</guid>
		<description><![CDATA[ArsTechnica is running a history of the Amiga, and in part 3, &#8220;The first prototype&#8221; they describe a really interesting &#8220;simulation&#8221; solution for the custom chips in the first Amiga. This is in 1982-83, and there are no VHDL or Verilog simulators, nor any other EDA tools as we know them today. Even if they [...]]]></description>
			<content:encoded><![CDATA[<p>ArsTechnica is running a history of the Amiga, and in <a href="http://arstechnica.com/articles/culture/a-history-of-the-amiga-part-3.ars">part 3,  &#8220;The first prototype&#8221;</a> they describe a really interesting &#8220;simulation&#8221; solution for the custom chips in the first Amiga. This is in 1982-83, and there are no VHDL or Verilog simulators, nor any other EDA tools as we know them today. Even if they were, the Amiga company would not have been able to afford them. So in order to test their design, the Amiga engineers built chip replicas using breadboards and discrete logic chips. All in all, 7200 chips and a very large numbers of wires. Quite fascinating stuff, and they did manage to interface the main 68000 CPU to the breadboards and get a fully functional if a bit slow simulation of a complete Amiga computer with all its unique custom chips.</p>
<p><span id="more-13"></span>Today, this feels like almost fanatical in its level of difficulty and effort and time. But when you think of it, many hardware and software engineers are struggling in the same way, trying to accomplish things for which they do not really have any efficient tools. Sometimes because there are no really good tools (as for example for finding parallelism in a serial software code), more often because they do not know of the good tools. Or most commonly, because they cannot get the budget to buy the good tools.</p>
<p>The hardware folks do seem to have mostly good tools these days, and the budget and knowledge to buy them. If nothing else, I guess this is because of the much greater cost of hardware and chip design respins. But software engineers seldom get to buy a 10kUSD or 100kUSD tool, even when it would save its own cost within a year.</p>
<p><a href="http://www.embedded.com/columns/embeddedpulse/199700435">Jack Ganssle had a good rant about this earlier this year at embedded.com</a>:</p>
<blockquote><p>&#8220;Why are you pounding that nail with a brick?&#8221;</p>
<p>&#8220;Hammers cost too much.&#8221;</p></blockquote>
<p>For a startup with zero budget, this is understandable. But not in going concerns with armies of engineers and money in the bank. If there are tools that would help, do get them in the hands of your software people. The fewer Amiga breadboard prototypes people have to deal with, the better.</p>
<p>But I must admit doing a prototype that way sure must have given them a very very thorough  understanding of their design. There is always some gain with the pain.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/13/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matts Today in History: The Vasa Sinks, August 10, 1628</title>
		<link>http://jakob.engbloms.se/archives/7?&amp;owa_from=feed&amp;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/7#comments</comments>
		<pubDate>Tue, 14 Aug 2007 08:11:23 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[business issues]]></category>
		<category><![CDATA[general history]]></category>
		<category><![CDATA[Matt's Today in History]]></category>
		<category><![CDATA[PodShow]]></category>
		<category><![CDATA[Vasa]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/7</guid>
		<description><![CDATA[Matts Today in History: The Vasa Sinks, August 10, 1628 is the latest installment in the very good and long-running PodCast called &#8220;Matt&#8217;s Today in History&#8221;. I really appreciate the effort going into the production of it, and the perserverance of Matt in keeping it up for more than two years. This particular issue was [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mattstodayinhistory.blogspot.com/2007/08/vasa-sinks-august-10-1628.html">Matts Today in History: The Vasa Sinks, August 10, 1628</a><br />
is the latest installment in the very good and long-running PodCast called &#8220;Matt&#8217;s Today in History&#8221;. I really appreciate the effort going into the production of it, and the perserverance of Matt in keeping it up for more than two years.</p>
<p>This particular issue was interesting in two regards.</p>
<p>First, I suggested the topic.</p>
<p>Second, it featured what at least seemed like real paid advertising at the start. This is thanks to <a href="http://www.podshow.com">PodShow</a>,  the &#8220;media network&#8221; used to distribute this podcast. The deal behind PodShow is quite simple fo the podcaster: you get bandwitdh for free, in return for the possibility of there being advertising inserted into the audio.</p>
<p>The reasoning behind PodShow is nicely explained in a podcast from the <a href="http://edcorner.stanford.edu/index.html">Stanford Technology Ventures Entrepreneurial Thought Leaders</a> series. Here, <a href="http://edcorner.stanford.edu/authorMaterialInfo.html?mid=1649&amp;author=228">Ron Bloom and Ray Lane of PodShow describe the way PodShow got started and just what it is.</a> Basically, they are building a new media company, to compete with radio and television. It is not just a nice place to find podcasts. Recommended listen for anyone interested in just how podcasting can be monetized. They describe how their staff constantly monitors the various shows that they carry, and find those popular and targeted enough to carry some paid advertising. Other shows carry intros and pointers to various other PodShow shows, to drive audience to more popular properties.</p>
<p>Thus, the conclusion must be that Matt&#8217;s Today in History has reached some threshold of audience that makes it valuable enough to carry advertising. Great job, and a sure sign of popularity of the podcast.</p>
]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
