USS Massachusetts and Battleship Cove

I recently made a trip to the US to look at some interesting things like the USS Intrepid, the architecture or New York City, and Battleship Cove.  Battleship Cove is located in Fall River, Massachusetts, and hosts the South Dakota-class battleship USS Massachusetts. Additionally, the site holds the destroyer USS Joseph P Kennedy, the submarine USS Lionfish, and the East German missile corvette Hiddensee. Given that I only had an afternoon there, I ended up only looking at the battleship with a brief run through the submarine. It was that good, especially in company with an old friend who also had read up on how the ship worked.

Entry to Battleship Cove
Continue reading “USS Massachusetts and Battleship Cove”

Was this a UTF-8 WTF?

Today I observed something very odd in Powerpoint. I was pasting in some text from the Simics command-line interface into a text box in Powerpoint to show the output of some commands. Commands whose output relied on box-drawing characters to produce nice tables. But for some reason… it did not work in Powerpoint. Weird.

Continue reading “Was this a UTF-8 WTF?”

SystemC Evolution Fika: Parallel SystemC

The SystemC Evolution Fika on April 7 had threading/parallelism as its theme. There were four speakers who presented various angles on how to parallelize SystemC models. The presentations and following discussion provided a variety of perspectives on threading as it can be applied in virtual platforms and other computer architecture simulations. It was pretty clear that the presenters and audience had quite different ideas about just what the target domain looks like and the best way to introduce parallelism to SystemC. Here is my take on what was said.

Continue reading “SystemC Evolution Fika: Parallel SystemC”

Some Notes on Temporal Decoupling (Reposted)

This blog post was originally posted at Intel back in 2018, but it has since been retired from the Intel blog system. As it is of general interest (in my opinion), here is a reposting (with a few small updates here and there).

Temporal decoupling is a key technology in virtual platforms, and can speed up the execution of a system by several orders of magnitude. In my own experiments, I have seen it provide a speedup of more than 1000x. Here, I will dig a little deeper into temporal decoupling and its semantic effects.

Continue reading “Some Notes on Temporal Decoupling (Reposted)”

DVCon Europe 2022 – Come Join us in München in December

The Design and Verification Conference (DVCon) Europe is going to be in-person in München again in 2022. After two years of virtual conferences, we are going back to the Holiday Inn where we have had so many great events in the past. The conference takes place on December 6 and 7. The call for papers, tutorials, and panels is out now, with a deadline in May!

Continue reading “DVCon Europe 2022 – Come Join us in München in December”

Don’t Look behind the Curtain! (Please)

In a previous blog, I talked a bit about the hazards of coding to an implementation and not a specification, based on 1980s home computers. While the specifics and peculiarities of that case is hopefully confined to old hardware, the lessons are still worth contemplating. There is a modern variant of this phenomenon that is based on open-source software, and that I must admit to feeling a bit annoyed by. Fundamentally, the question is this: when figuring out how to use an API – should you look at the documentation or the implementation?

Continue reading “Don’t Look behind the Curtain! (Please)”

Easy to Assemble, just like Lego – Right…

When discussing the design and integration of systems on chip and models of systems on chip, the Lego analogy is often brought up. The idea being that with Lego, anyone can put together anything and every component can be combined with all other components. Right. My recent building of Lego set 21327, Typewriter, makes me wonder if the people who talk about Lego-like construction have actually built anything from Legos in the past few decades.

Continue reading “Easy to Assemble, just like Lego – Right…”

Blog – Damn the Torpedoes, Full Code Ahead!

I have recently got back to developing training labs for the Simics simulator (and related technologies).  During the process of developing a new accelerator model using as many of the latest frameworks and APIs as possible, it was basically guaranteed that I would hit some bugs and unexpected behaviors. That is a natural part of and benefit from creating training materials in the first place. It also provides a good illustration of two fundamentally different ways to look at software development. One is to play it safe and get things done in known ways, and the other is charge ahead, try the unknown, and see what happens. Damn the torpedoes, bugs are a benefit. No bug reports, no glory. In this post, I will share some recent examples of just coding ahead and breaking thing.

Continue reading “Blog – Damn the Torpedoes, Full Code Ahead!”

Minimum Viable (Replacement) Product – The Teams Example

During 2020 and 2021, Intel switched from using Microsoft Skype for Business (also known as Lync) to Microsoft Teams as the primary internal calling, chatting, and conferencing tool. While (finally) Teams has turned into quite a decent communications tool, the transition started a bit too early from a feature completeness perspective. Microsoft in essence gave us an enterprise Minimum Viable Product (MVP). Not a proper Replacement Product (RP). Teams left out many rather important and useful features, degrading the user experience and value, and making my life harder. I don’t think that was particularly well handled. I can understand it as a product manager, but as a user, I don’t like it all.

Continue reading “Minimum Viable (Replacement) Product – The Teams Example”

DVCon Europe 2021 – Testbenches, AI, and Open Source

Just like in 2020, the Design and Verification Conference (DVCon) Europe 2021 was a virtual conference. It took place from October 26 to 27, with the SystemC Evolution day on October 28 (as usual). As has been the case in recent years, the verification side of the conference is significantly larger than the design side. This is common with the other DVCon conferences in the world. In this blog, I will go through my main observations from DVCon Europe, and share some notes from some of the presentations.

Continue reading “DVCon Europe 2021 – Testbenches, AI, and Open Source”

Code to the Spec(trum) or the Implementation

When writing software that uses any kind of API or hardware functionality, sooner or later there will be questions about what a particular API call or hardware operation is supposed to do. In principle, such questions should be answered by referring to the specification (and user documentation). I am a firm believer in writing readable and clear specs and keeping software coding to follow the spec, as that ensures future compatibility. But reality is not that simple. Things are generally better today than they used to be, though. Reading up a bit on the history of my first computer (the ZX Spectrum), I found some rather interesting cases of spec vs implementation, and “discovered functionality”.

Continue reading “Code to the Spec(trum) or the Implementation”

Presenting a Simics Tutorial at DVCon Europe (2021)

DVCon Europe is coming up in late October. This year, I am going to present a tutorial on using the public release of the Intel Simics Simulator to model a PCIe-attached accelerator subsystem. It is fun to be back speaking at the DVCon, after a couple of years of not having talked at the conference. DVCon Europe is a virtual event this year too due to Covid.

Continue reading “Presenting a Simics Tutorial at DVCon Europe (2021)”

Thank You, Sir Clive Sinclair

A few days ago, Sir Clive Sinclair died. I owe him, or rather his most successful product, my career as a computer scientist. I bought myself a ZX Spectrum in my early teens, taught myself how to program it, and never looked back. The ArsTechnica obituary calls the Spectrum a “gaming computer”, and I guess that is mostly fair. Can’t say I ever used it for more than playing games or programming games.

Continue reading “Thank You, Sir Clive Sinclair”

Timesharing System Design Concepts (1970)

When I recently turned 50, a friend of mine gave me a book that was about as old as me – Timesharing System Design Concepts, by Richard W Watson. The copyright date is 1970, but the publishing date found online 1971. The book covers the hardware support and software techniques needed to provide multiple users with simultaneous access to a computer system. Typically, using remote teletype terminals. It is a wonderful book, reflecting on the state of computer technology around 1970. It shows both how many of the basic concepts we still use today were already in use back then, but at the same time just how far we have evolved computing since.

Continue reading “Timesharing System Design Concepts (1970)”

Cancer Part 4: All’s Well that Ends Well

I last blogged about my experience with thyroid cancer in early 2020. Back then, I said that I felt pretty much normal. That has indeed continued to be the case, and recently I was declared as having formally recovered from the cancer. The guideline is apparently that after two years with no sign of a cancer resurgence, you are considered fully recovered. Future follow-ups are the responsibility of the primary care system instead of the hospital, with something like yearly or bi-yearly follow-up tests. Not so much to look out for the cancer, but to keep the Levaxin prescription correct.

Continue reading “Cancer Part 4: All’s Well that Ends Well”

The SAMOS XXI Conference (Virtual)

The International Conference on Embedded Computer Systems: Architectures, Modeling and Simulation (SAMOS) XXI conference took place a couple of weeks ago. Like all other events in the past 18 months, it was virtual due to Covid-19. For more on the background on the SAMOS conference, see my blog post about SAMOS XIX (from 2019). This year, I presented a tutorial about our public release of the Simics simulator and took the chance to listen to most of the other conference talks.

Continue reading “The SAMOS XXI Conference (Virtual)”

Oljeön – The World’s Oldest Preserved Oil Refinery

With Covid-19 still a bit of an issue, the summer of 2021 is yet another one for “svemester” (Sverige-semester, or Sweden-vacation). There are plenty of things to see, and one place that I finally got to visit was the old oil refinery at Oljeön in Ängelsberg, home to Engelsbergs oljefabrik and the world’s oldest preserved oil refinery dating back to the mid-1870s. It is a beautiful piece of industrial history, well-preserved and with good guided tours.

View of Oljeön from the mainland. The refinery is the yellow building on the right, the darker building on the left is the one remaining oil storage shed
Continue reading “Oljeön – The World’s Oldest Preserved Oil Refinery”

Microsoft Windows memset Optimization – Stores are Free

I recently stumbled on a blog post called Building Faster AMD64 Memset Routines, written by Joe Bialek of the Microsoft Security Response Center (MSRC). The blog describes his efforts to improve the performance of the Windows kernel memset() function, across all sizes of memory to set. The reported optimizations are quite fascinating, and could be summed by avoiding branches even at the cost of doing redundant stores. Basically, stores are free while branches are expensive.

Continue reading “Microsoft Windows memset Optimization – Stores are Free”

About Virtual Events

Just like most people who can, I have been working from home since March 2020 due to Covid-19. Now that we are hopefully seeing the end of the pandemic in the west, it is worth looking back at the conference-from-home aspect of work-from-home. I have seen our Simics training, the Design Automation Conference (DAC), the Design and Verification Conference (DVCon) Europe, commercial training events, talks at industry conferences, guest lectures, and multiple internal Intel events go virtual.  It has been interesting to see how this has worked out, and it seems to me that we are starting to see some good recurring patterns. People have adapted and figured out how to use video meeting technology better and better.

Continue reading “About Virtual Events”

Jerry Fiddler on the Early Days of Wind River and Building a Product

Wind River is celebrating their 40th anniversary as a company with a series of historical look-backs posted on the Wind River channel on YouTube. One of the videos is an interview with Jerry Fiddler who founded Wind River back in 1981, by Wind River current CEO Kevin Dallas. Jerry Fiddler talks about how he got started in computers, and especially about how Wind River got started and grew.  It is both a fantastic set of historical anecdotes and some solid product management and strategy insights.

Continue reading “Jerry Fiddler on the Early Days of Wind River and Building a Product”

DRAMsys – Cycle-Accurate Simulation using Transactions

DRAMsys is a simulator for modern RAM systems, built by researchers at Fraunhofer IESE and the Technische Universität Kaiserslautern. Over the past few years, I have heard several talks about the tool and also had the luck to talk a bit to the team behind it.  It is an interesting piece of simulation technology, in particular for how it manages to build a truly cycle-accurate model on top of the approximately-timed (AT) style defined SystemC TLM-2.0.

Continue reading “DRAMsys – Cycle-Accurate Simulation using Transactions”

Professor Reinhard Wilhelm on the History of WCET Analysis

Back when I was a PhD student working on worst-case execution-time (WCET) analysis, one of the leading groups researching the topic was the “Saarbrücken gang” led by Professor Reinhard Wilhelm. Last year, Professor Wilhelm published a retrospective look on their work on WCET in the Communications of the ACM. It is a really interesting history write-up from the perspective of the Saarbrücken group.

Continue reading “Professor Reinhard Wilhelm on the History of WCET Analysis”

Renovations and Software

Last year, we spent a significant part of the fall and early winter renovating some aspects of our apartment*. Things like (finally) updating the flooring in the living room, updating the wallpapers, painting the interior staircase white, and changing out all doors. The renovation process provides some interesting analogies to the process or updating an existing software code base – especially in discovering the design decisions of the past and unearthing the layers of legacy that underlies why things look like they do today.

Continue reading “Renovations and Software”

Corsair K83 – Living-Room Keyboard

I have had a PC in the living room connected to the family TV for a few years now, and in the past we used a wired Corsair K65 keyboard with it. The point of the machine was at least in part to play games, and for that a mechanical wired keyboard is de-rigeur (and I do love RGB backlighting). However, some recent changes to the computer fleet made the living-room PC into more of a media machine, and it was time to move to a wireless keyboard. Preferably one that also made the mouse superfluous. After some research, I ended up with the Corsair K83. I am rather happy with the keyboard overall, even though it is rather small and lacks RGB.

The Corsair K83 on a holiday-themed tablecloth
Continue reading “Corsair K83 – Living-Room Keyboard”

The First Swedish Programmer (1790s)?

The history show (and podcast) of Sverige Radio, Vetenskapsradion Historia, is one of the shows that I subscribe to and listen to regularly. In their look back at 2020, they reminded me of an episode from back in the summer that indirectly introduces what I believe to be the first programmer in Sweden.  

Continue reading “The First Swedish Programmer (1790s)?”

DVCon Europe 2020 – Developing Hardware like Software?

The Design and Verification Conference Europe (DVCon Europe) took place back in late October 2020. In a normal year, we would add “in München, Germany” to the end of that sentence. But that is not how things were done in 2020. Instead, it was a virtual conference with world-wide attendance. Here are my notes on what I found the most interesting from the conference (for various reasons, this text did come out with a bit of delay).

Continue reading “DVCon Europe 2020 – Developing Hardware like Software?”

USB-C Works, but how would you Know?

Using USB-C to charge a laptop while simultaneously providing display and other IO traffic sounds a little bit too good to be true in practice.  Maybe it would work for a set of devices from a single manufacturer (like a Thunderbolt-based USB-C-attached dock from the same vendor as a laptop). However, recently I was surprised (in a good way) when it turned out that I had accidentally got myself a USB-C-based single-cable-to-the-laptop setup. USB-C promises a lot, in this case it delivers perfectly, but what bothers me is the fact that there is really no way I could have figured this out ahead of time.

Continue reading “USB-C Works, but how would you Know?”

CACM on DSAs

The July 2020 edition of the Communications of the ACM (CACM) had a front-page theme of “Domains-Specific Hardware Accelerators”, or DSAs. It contained two articles about the subject, one about an academic genomics accelerator, and one about the Google TPU. Hardware accelerators dedicated to particular types of computation are basically everywhere today, and an accepted part of the evolution of computers. The CACM articles have some good tidbits and points about how accelerators are designed and used today. At the same time, I also found a youtube talk about the first hardware accelerator, the IBM Stretch HARVEST, showing both contrasts with today as well as a remarkable continuity in concept.

Continue reading “CACM on DSAs”

Intel Blog: How Teaching Users Drives Product Improvements in Simics

I have a post out on the Intel Software blog about my experience developing and delivering training for Simics over the past few years. A key observation is that building training is a great way to test the product, and drives changes and improvements in the product. The blog is found at https://software.intel.com/content/www/us/en/develop/articles/teaching-users-drives-product-improvements-in-simics-sw.html

Continue reading “Intel Blog: How Teaching Users Drives Product Improvements in Simics”

Going Norrland

This year’s vacation trip was a roadtrip into Norrland, the northern part of Sweden. With the ongoing Covid-19 pandemic, it seemed safer and fairer to the healthcare system to stay in our own country.  It was also an opportunity, since I have wanted to and look at some places up north for quite a while now (such as Bodens Fästning and Hemsö Fästning).

Continue reading “Going Norrland”