What is this Simics “fulprompt,” Anyway?

 Rolandz Fuldans intro image
Non-copyrighted screen capture from YouTube

Every software team has its legends about spectacular mistakes, crazy users, and customer calls with strange questions. This is the story of one such legendary call from the early days of Simics: The Simics “fulprompt” – it was a hack that was not supposed to be seen by users, and the name made it clear to anyone who had experienced Sweden in the 1990s that it was just a quick ugly patch. However, as you know, “not supposed to” means “guaranteed to appear in practice.” Thus the call came from a paying customer using the product for important work, with the question “What is this Simics fulprompt, anyway?” Engineering scrambled and came up with a reasonable-sounding explanation. “FUL” was explained to mean “Functional Unit Layer,” and the customer was happy.

So what was going on here? As part of the ongoing series of “Simics 20 years” blog posts, this story offers some cultural insights and some insights into fundamental problems encountered when building a computer simulator.

Simics 20 YearsWhen atoms split

The fundamental problem that the fulprompt solved was to provide interaction when Simics stopped in the middle of an instruction. The basic Simics architecture considers instructions atomic, and stopping in the middle of an instruction breaks a lot of atomicity assumptions. At this point, the simulator was not in a state where the normal Simics prompt could be used, as there were things on the C stack that could not be unwound in a reasonable way. The way out was to display a special prompt that would only be used in this situation, and with very limited functionality available: the fulprompt. 

The fulprompt was found inside a now-long-retired Simics feature known as the Simics Micro-Architectural Interface (MAI), where Simics provided the functionality of instructions and let a user provide their own processor pipeline timing model. The MAI was a nice idea, but a pain to implement, and it had limitations in the pipeline designs and computer architecture ideas it could handle. Still, it was popular for a while, and it did have some users. However, the MAI provided Simics with a level of granularity smaller than the supposedly atomic instructions, and therefore the fulprompt was needed (in addition to the regular prompt). 

This problem has come up in other situations where simulators are integrated that operate at different levels of abstraction or with different concepts about time progress and execution semantics. Splitting atoms makes for problems. 

That explains what this was about. So where did the name come from?  FUL did not actually mean “Functional Unit Layer”… it meant “crufty” or “hackish” or “low quality.”  How come?

Ful-X

Today in Sweden, the prefix ful- has come mean hackish, ugly, crufty, less elegant.  It can be used with almost any word, and most people will understand.  Literally, “ful” translates as “ugly”, but that is not the real root of this popular usage. It goes back to a famous series of beer commercials from the 1990s, and the extraordinarily gifted comedian Robert Gustafsson

Here is Robert in this year’s edition of Melodifestivalen, competing with his band Rolandz and a song named “Fuldans” that is about dancing in a way not appreciated by others for its elegance, without really caring what people think. With sequins and fireworks, the result is absurd, sublime, and very funny. It is a wonderful mix of Elvis in Vegas and Swedish dansband music. 

That was 2018. The history behind ful- goes back 23 years to 1995. That year, a Swedish brewery hired Robert Gustafsson to create a series of commercials that ended up being iconic of the ironic style common in 1990’s Sweden. The core messages pushed by the commercials was that some beers are crafted from only the basic ingredients of malt, water, hops, and yeast, while others are not, and thus are full of nefarious “additives.” The resulting commercials have a character played by Robert that claims to buy super-cheap beer full of additives “on the Internet” (this is 1995, check out the wonderful fake screenshots!) and then filtering it to remove the nasty stuff and get “good” beer out of the process. 

The scene where he pulls off his sock and uses that to filter beer is pure comedic gold. Completely insane, and removed from reality. But memorable. After this commercial, ful-X became a part of Swedish, indicating low-quality stuff that you really should not buy or use.

Naming things…

Thus, when a prompt had to be hacked into Simics to pop up when stopped in a situation where really no prompt should appear, it was very natural to name it fulprompt.  It was a “fulhack” to solve a nasty problem. 

As a product manager, I am a bit split on this. Really, any string or functionality that might be exposed to a user should have a name that makes sense and that can be explained and documented. On the other hand, occasional whimsies make for a product with character and identity—often a good thing. Just remember the “Guru Meditation Number” of the Amiga – at least I do, more than I remember the machine itself. 

For more complete information about compiler optimizations, see our Optimization Notice.