• About Jakob Engblom and this blog
Observations from Uppsala Computer Simulation, Virtual Platforms, Embedded Programming, Multicore and More (by Jakob Engblom)

Category Archives: Computer Simulation Technology

Simulating computers

Simulation vs Reality in Schlock Mercenary

2013 January 7 11:25 / Leave a Comment / Jakob

Schlock Mercenary is a very funny web (and print) comic that I discovered earlier this year via a list at ArsTechnica. In reading up on back issues and back stories, I came across a nice little gem about simulation.

Read More →

Tweet
Posted in: computer simulation technology, funny

Dragons can be Useful – when AT Models Make Sense

2012 November 12 15:51 / 4 Comments / Jakob

Carbon Design Systems keeps putting out interesting blog posts at a good pace. Bill Neifert at recently put up a blog post about the various of speed/accuracy tradeoffs you can make when building virtual platforms. The main message of the blog is that you should use a mix of fast models (TLM + JIT, like the ARM Fast Models) and cycle-accurate generated-from-RTL models (like the models generated by Carbon’s tools). By switching between the levels of abstraction when you need to go fast or go deep, you get something that is pretty much the best of both worlds (I already blogged about the change between abstraction before). It makes perfect sense, and I am all with him. There are dragons in the middle land.

However, I do not quite agree with Bill about the absolute uselessness of the intermediate types of models, like SystemC TLM-2.0 AT.  Basically, what is traditionally called “cycle accurate modeling” (while not derived from RTL).

Read More →

Tweet
Posted in: computer simulation technology, virtual platforms / Tagged: Bill Neifert, Carbon, clock-cycle models, cycle accuracy, dragons

“Eagle” Cycle-Accurate Simulator Anno 1979

2012 July 21 20:40 / 1 Comment / Jakob

I recently read the classic book The Soul of a New Machine by Tracy Kidder. Even though it describes the project to build a machine that was launched more than 30 years ago, the story is still fresh and familiar. Corporate intrigue, managing difficult people, clever engineering, high pressure, all familiar ingredients in computing today just as it was back then. With my interesting in computer history and simulation, I was delighted to actually find a simulator in the story too! It was a cycle-accurate simulator of the design, programmed in 1979.

Read More →

Tweet
Posted in: computer architecture, computer simulation technology, history of computing, virtual platforms / Tagged: 32-bit, cycle accuracy, Data General, Eclipse MV/8000, Soul of a new Machine, Tracy Kidder

Some Fun Cache Results from Carbon

2012 July 6 20:40 / 2 Comments / Jakob

Carbon Design Systems have been on a veritable blogging spree recently, pushing out a large number of posts around various topics. Maybe a bit brief for my taste in most cases (I have a tendency to throw out 1000+ word pseudo-articles when I take the time to write a blog), but sometimes very interesting nevertheless. I particularly liked a few posts on cache analysis, as they presented some good insight into not-quite-expected processor and cache behaviors.

Read More →

Tweet
Posted in: computer architecture, computer simulation technology, EDA, ESL / Tagged: cache, Carbon, cycle accuracy, performance optimization

Carbon “Swap ‘n’ Play” – A New Implementation of an Old Idea

2012 May 1 20:53 / 2 Comments / Jakob

Carbon Design Systems have been quite busy lately with a flurry of blog posts about various aspects of virtual prototype technology. Mostly good stuff, and I tend to agree with their push that a good approach is to mix fast timing-simplified models with RTL-derived cycle-accurate models. There are exceptions to this, in particular exploratoty architecture and design where AT-style models are needed. Recently, they posted about their new Swap ‘n’ Play technology, which is a old proven idea that has now been reimplemented using ARM fast simulators and Carbon-generated ARM processor models.

Read More →

Tweet
Posted in: computer architecture, computer simulation technology, ESL, virtual platforms / Tagged: Bill Neifert, Carbon Technology, Checkpointing, SimOS, Simpoint

Wind River Blog: Why Simics will not run Super Mario

2011 October 14 11:27 / Leave a Comment / Jakob

On my Wind River blog, I just posted a fairly long post about simulation abstraction levels. It was inspired by a cool article in ArsTechnica about Nintendo emulators, and the costs and benefits of being ever more faithful to the hardware.

Tweet
Posted in: computer simulation technology, Wind River Blog

GPGPU for Instruction-Set Simulation – Maybe, Maybe not

2011 October 8 21:17 / Leave a Comment / Jakob

I just read a quite interesting article by Christian Pinto et al, “GPGPU-Accelerated Parallel and Fast Simulation of Thousand-core Platforms“, published at the CCGRID 2011 conference. It discusses some work in using a GPGPU to run simulations of massively parallel computers, using the parallelism of the GPU to speed the simulation. Intriguing concept, but the execution is not without its flaws and it is unclear at least from the paper just how well this generalizes, scales, or compares to parallel simulation on a general-purpose multicore machine.

Read More →

Tweet
Posted in: articles, computer architecture, computer simulation technology, multicore software, parallel computing, programming / Tagged: CCGrid, cycle accuracy, GPGPU, GPU, simulation

Wind River Blog: A Virtual Year

2011 August 20 09:25 / Leave a Comment / Jakob

There is a new post at my Wind River blog, about hypersimulation in virtual platforms and how it lets virtual time fly much faster than real time. It was the result of simple mistake of leaving Simics running in the background as I did other work on  my machine.

Tweet
Posted in: computer simulation technology, virtual platforms, Wind River Blog / Tagged: hypersimulation, Simics

Steve Furber: Emulated BBC Micro on Archimedes on PC

2011 August 13 11:35 / Leave a Comment / Jakob

I just read an interview with Steve Furber, the original ARM designer, in the May 2011 issue of the Communications of the ACM. It is a good read about the early days of the home computing revolution in the UK. He not only designed the ARM processor, but also the BBC Micro and some other early machines.

Read More →

Tweet
Posted in: computer simulation technology, history of computing / Tagged: ACORN Archimedes, ARM, BBC Micro, Communications of the ACM, Steve Furber

Wind River Blog: How to Get Virtual

2011 August 2 14:10 / Leave a Comment / Jakob

There is a new post at my Wind River blog, about how you build virtual platforms with Simics. The post is more about the methodology than the nature of models, cycle accuracy, endianness, and all the other details of virtual platform modeling. I have written about modeling methodology on this blog too, and in particular I would recommend looking at “Two perspectives on modeling“.

Tweet
Posted in: computer simulation technology, programming, virtual platforms, Wind River Blog / Tagged: development methodology, Functional models, Modeling, Simics

Memory Models: x86 is TSO, TSO is Good

2011 June 22 17:16 / 1 Comment / Jakob

By chance, I got to attend a day at the UPMARC Summer School with a very enjoyable talk by Francesco Zappa Nardelli from INRIA. He described his work (along with others) on understanding and modeling multiprocessor memory models. It is a very complex subject, but he managed to explain it very well.

Read More →

Tweet
Posted in: computer simulation technology, conferences, multicore computer architecture, multicore software, parallel computing / Tagged: ARM, Doug Lea, Francesco Zappa Nardelli, memory consistency, power architecture, SPARC, UpMarc, x86

Disappointing SystemC Debugger Integration Paper

2011 May 25 21:35 / 2 Comments / Jakob

Since I have a certain interest in debugging, I was happy find the article “Guidelines for SystemC – Debugger Integration” at the usually interesting Design and Reuse website. However, I must say that it was pretty disappointing.

Read More →

Tweet
Posted in: computer simulation technology, virtual platforms / Tagged: debugging, SystemC

Wind River Blog: 20, 30, 60 years ago

2011 May 6 14:27 / Leave a Comment / Jakob

There is a new post at my Wind River blog, about some computing history. Wind River turns thirty this year, Simics twenty, and simulation for debug (and probably debug in general) turns sixty. Computing has come a long way.

Tweet
Posted in: computer simulation technology, history of computing, Wind River Blog / Tagged: debugging, Simics, Wind River

Wind River Blog: Testing Integrated Software in Simulation

2011 March 13 22:36 / Leave a Comment / Jakob

There is a new post at my Wind River blog, about the testing on an integrated software stack in simulation. I base the discussion on the very interesting report about the Toyota “unintended acceleration” problems and the deep investigation into the control software of the affected vehicles performed by a NASA team (!). The report covers a lot of different tools, but also notes that about the only thing not done was to integrate the complete software stack in simulation.

Tweet
Posted in: computer simulation technology, embedded software, embedded systeme, Wind River Blog / Tagged: control software, NASA, Toyota

EETimes: James Aldis on Performance Modeling

2011 March 3 22:13 / Leave a Comment / Jakob

James Aldis of TI has published an article in the EEtimes about how Texas Instruments uses SystemC in the modeling of their OMAP2 platform. SystemC is used for early architecture modeling and performance analysis, but not really for a virtual platform that can actually run software. The article offers a good insight into the virtual platform use of hardware designers, which is significantly different from the virtual platform use of software designers.
Read More →

Tweet
Posted in: computer simulation technology, ESL, virtual platforms / Tagged: hardware design, hardware modeling, James Aldis, OMAP, performance optimization, TI, Virtio

Interrupts and Temporal Decoupling

2011 February 27 23:09 / 2 Comments / Jakob

I am just finishing off reading the chapters of the Processor and System-on-Chip Simulation book (where I was part of contributing a chapter), and just read through the chapter about the Tensilica instruction-set simulator (ISS) solutions written by Grant Martin, Nenad Nedeljkovic and David Heine. They have a slightly different architecture from most other ISS solutions, since that they have an inherently variable target in the configurable and extensible Tensilica cores. However, the more interesting part of the chapter was the discussion on system modeling beyond the core. In particular, how they deal with interrupts to the core in the context of a temporally decoupled simulation.

Read More →

Tweet
Posted in: books, computer simulation technology, ESL, virtual platforms / Tagged: Grant Martin, interrupt, Temporal decoupling, Tensilica, virtual

Evaluating HAVEGE Randomness

2011 February 17 23:33 / 5 Comments / Jakob

I previously blogged about the HAVEGE algorithm that is billed as extracting randomness from microarchitectural variations in modern processors. Since it was supposed to rely on hardware timing variations, I wondered what would happen if I ran it on Simics that does not model the processor pipeline, caches, and branch predictor. Wouldn’t that make the randomness of HAVEGE go away?

Read More →

Tweet
Posted in: computer architecture, computer simulation technology, security, virtual platforms / Tagged: evaluation methodology, HAVEGE, random number generation

Simple Machine, Hard to Simulate

2011 January 1 22:29 / 1 Comment / Jakob

In the June 2010 issue of Communications of the ACM, as well as the April 2010 edition of the ACM Queue magazine, George Phillips discusses the development of a simulator for the graphics system of the 1977 Tandy-RadioShack TRS-80 home computer.  It is a very interesting read for all interested in simulation, as well as a good example of just why this kind of old hardware is much harder to simulate than more recent machines.

Read More →

Tweet
Posted in: computer simulation technology, history of computing, virtual platforms / Tagged: Communications of the ACM, George Phillips

Modeling Endianness

2010 December 26 17:58 / Leave a Comment / Jakob

Endianness is a topic in computer architecture that can give anyone a headache trying to understand exactly what is happening and why. In the field of computer simulation, it is a pervasive problem that takes some thinking to solve in an efficient, composable, and portable way.

This blog post describes how I am used to working with endianness in virtual platforms, and why this approach makes sense to me. There are other ways of dealing with endianness, with different trade-offs and overriding goals.

Read More →

Tweet
Posted in: computer architecture, computer simulation technology, programming, virtual platforms / Tagged: big-endian, endianess, hardware modeling, little-endian

Parallel SystemC Simulation

2010 November 26 21:08 / Leave a Comment / Jakob

I just found a recent paper on the topic of parallel simulation of computer  systems. Christopher Schumacher et al., published an articles at CODES+ISSS in October of 2010 talking about “parSC: Synchronous Parallel SystemC Simulation on Multicore Architectures“. Essentially, parallel SystemC.

Read More →

Tweet
Posted in: computer simulation technology, virtual platforms / Tagged: Christopher Schumacher, CODES, ISSS, multicore, parallelized software, Rainer Leupers, SystemC

Wind River Blog: “IMA on Simics”

2010 October 26 15:00 / Leave a Comment / Jakob

I have a fairly lengthy new blog post at my Wind River blog. This time, I interview Tennessee Carmel-Veilleux, a Canadian MSc student who have done some very smart things with Simics. His research is in IMA, Integrated Modular Avionics, and how to make that work on multicore.

Read More →

Tweet
Posted in: computer simulation technology, embedded software, embedded systeme, multicore software, programming, Wind River Blog / Tagged: Integrated Modular Avionics, real-time, Simics, Tennessee Carmel-Veilleux, wcet

S4D 2010

2010 September 15 09:02 / 12 Comments / Jakob

Looks like S4D (and the co-located FDL) is becoming my most regular conference. S4D is a very interactive event. With some 20 to 30 people in the room, many of them also presenting papers at the conference, it turns into a workshop at its best. There were plenty of discussion going on during sessions and the breaks, and I think we all got new insights and ideas.

Read More →

Tweet
Posted in: appearances, computer simulation technology, conferences, EDA, multicore debug, security, virtual platforms / Tagged: ARM, Debug, ESCUG, FDL, Infineon, Intel, John Aynsley, Pat Brouillette, S4D, Simon Davidmann, Southampton, ST, SystemC, Thorsten Grötker, TrustZone

Additional Notes on Transporting Bugs with Checkpoints

2010 September 15 06:38 / 2 Comments / Jakob

This post features some additional notes on the topic of transporting bugs with checkpoints, which is the subject of a paper at the S4D 2010 conference.

The idea of transporting bugs with checkpoints is some ways obvious. If you have a checkpoint of a state, of course you move it. Right? However, changing how you think about reporting bugs takes time. There are also some practical issues to be resolved. The S4D paper goes into some of the aspects of making checkpointing practical.

Read More →

Tweet
Posted in: appearances, articles, computer simulation technology, EDA, programming, virtual machines, virtual platforms / Tagged: Checkpointing, debugging, S4D, Simics

Wind River Blog Post: Determinism vs Variability

2010 September 9 14:02 / Leave a Comment / Jakob

I have a new post at my Wind River blog, about variability and determinism and how these two concepts interact. In short, even a deterministic simulator can expose great variability in a software workload and target system behavior.

Tweet
Posted in: computer simulation technology, programming, virtual platforms, Wind River Blog / Tagged: repeatability, reverse execution

S4D Paper on Transporting Bugs with Checkpoints

2010 August 31 19:40 / 2 Comments / Jakob

I have a paper about “Transporting Bugs with Checkpoints” to be presented at the S4D (System, Software, SoC and Silicon Debug) conference in Southampton, UK, on September 15 and 16, 2010. The core concept presented is to leverage Simics checkpointing to capture and move a bug from the bug reporter to the responsible developer. It is a fairly simple idea, but getting it to work efficiently does require that some things are done right. See the longer Wind River blog posting about this topic for a few more details.

Tweet
Posted in: appearances, computer simulation technology, conferences, EDA, virtual machines, virtual platforms, virtualization, Wind River Blog / Tagged: Checkpointing, debugging, S4D

Pipeline Performance Simulator Anno 1960

2010 May 3 20:56 / 1 Comment / Jakob

I have just found what almost has to be the first cycle-accurate computer simulator in history. According to the article “Stretch-ing is Great Exercise — It Gets You in Shape to Win” 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 created a simulator of the pipeline for the IBM 7030 “Stretch” computer developed from 1956 to 1961 (photo from IBM.com).

Read More →

Tweet
Posted in: computer architecture, computer simulation technology, history of computing / Tagged: clock-cycle models, cycle accuracy, Frederick Brooks, Harwood Kolsky, IBM, IBM 7030, ISCA, pipeline, Tensilica

First Blog at Wind River!

2010 April 29 20:14 / Leave a Comment / Jakob

One of the many nice effects of the Wind River acquisition of Simics is that I will be blogging as part of the Wind River Blog network. My first post there is up now, and it is a short (at least compared to a textbook, I admit it looks terribly long for a blog post) overview of how Simics works inside.

I think it is important for users of technologically advanced tools to know a bit of how they work. A classic example of this is compilers, where I taught an ESC class almost a decade ago which is my most popular piece of writing to date…

Tweet
Posted in: articles, blogging, computer simulation technology, virtual platforms, Wind River Blog / Tagged: Simics

FFast: Good Idea, Too Bad About the Implementation

2010 April 11 20:23 / Leave a Comment / Jakob

I just read a short paper by Antoine Trouvé and Kazuaki Murakami from the RAPIDO 2010 workshop on “rapid simulation and performance evaluation”. The paper is “FFast: Efficient Application of Compiled Simulation Techniques To A Fast ISS Over a Virtual Machine”. It explores the interesting idea of how an existing virtual machine infrastructure can be used to build a fast instruction-set simulator, and in the extension, a full system simulator.

To me, this idea is worth exploring, since using a mature VM like the .net CLR (used in this paper) or a JVM would offer a shortcut to get high-quality code generation for a JIT compiler. It could also offer other benefits, as these environments support many advanced configuration and management features. I have touched on this topic before, in the posts “Dream ESL Language” (VM as the basis for a simulator) and “The JVM as Universal Parallel Glue” (that a common VM can  offer huge benefits for an ecosystem).

Read More →

Tweet
Posted in: computer simulation technology, virtual machines, virtual platforms / Tagged: .net, Antoine Trouvé, C, CLR, FFast, Kazuaki Murakami, RAPIDO

Describe is not the same as Design

2010 February 15 21:56 / 5 Comments / Jakob

The discussion on my previous blog post about “the ideal ESL language” made me think some more about the purpose of a hardware modeling or description language. If you look closely, you realize that there are two quite different goals being pursued by the tools and languages discussed there.

On one hand, we have the task of supporting the design of new hardware bits, for the purpose of creating it. On the other hand, we have the task of describing a particular design for the purpose of simulating it. These two are not necessarily the same.

Read More →

Tweet
Posted in: computer simulation technology, EDA, ESL, programming, virtual platforms / Tagged: DML

CoWare SystemC Checkpointing

2009 December 29 13:02 / Leave a Comment / Jakob

gearsContinuing on my series of posts about checkpointing in virtual platforms (see previous posts Simics, Cadence, our FDL paper), I have finally found a decent description of how CoWare does things for SystemC. It is pretty much the same approach as that taken by Cadence, in that it uses full stores a complete process state to disk, and uses special callbacks to handle the connection to open files and similar local resources on a system. The approach is described in a paper called  “A Checkpoint/Restore Framework for SystemC-Based Virtual Platforms”, by Stefan Kraemer and Reiner Leupers of RWTH Aachen, and Dietmar Petras, and Thomas Philipp of CoWare, published at the International Symposium on System-on-Chip, in Tampere, Finland, in October of 2009.

Read More →

Tweet
Posted in: computer simulation technology, ESL, programming, virtual platforms / Tagged: Checkpointing, CoWare, Mambo, Reiner Leupers, Simics, SimOS, Stefan Kraemer, SystemC

Post Navigation

1 2 3 Next »

Recent Posts

  • A Few Electrons too Many
  • Wind River Blog: Visuality NQ CIFS Server on Simics
  • Everything in the Cloud?
  • Wind River Blog: TCF and Simics
  • Off-Topic: Moving Bad Piggies Save Games
  • Two Cores, Four Cores, Eight Cores – Mobile Variety
  • Bliss: Failing to Pivot for Ideology
  • Wind River Blog and Movie: Demo of Simics Debugging
  • Simulation vs Reality in Schlock Mercenary
  • Programming like Lego
  • Does ISA Matter for Performance?
  • Wind River Blog: Debugging Simics using Simics
  • Wind River Blog: Simics and Flying Piggies
  • Dragons can be Useful – when AT Models Make Sense
  • Logging (Some More Thoughts)

Categories

  • appearances (30)
  • articles (21)
  • blogging (10)
  • books (6)
  • business issues (31)
  • computer architecture (35)
  • conferences (34)
  • EDA (50)
    • ESL (35)
  • embedded (78)
    • embedded software (57)
    • embedded systeme (50)
  • general research (6)
  • history (32)
    • general history (7)
    • history of computing (26)
  • off-topic (94)
    • biking (5)
    • board games (1)
    • computer games (3)
    • desktop software (35)
    • food and drink (1)
    • funny (12)
    • gadgets (24)
    • Politics (3)
    • popular culture (5)
    • trains (5)
    • transportation (10)
    • travel (10)
    • websites (3)
  • parallel computing (92)
    • multicore computer architecture (51)
    • multicore debug (22)
    • multicore software (65)
  • programming (107)
  • review (8)
  • security (19)
  • teaching (7)
  • testing (9)
  • uncategorized (12)
  • virtual things (128)
    • computer simulation technology (68)
    • virtual machines (17)
    • virtual platforms (97)
    • virtualization (14)
  • Wind River Blog (39)

Tags

ARM blog commentary Cadence Checkpointing clock-cycle models Communications of the ACM computer architecture conference cycle accuracy debugging DML Domain-specific languages embedded freescale G900 heterogeneous homogeneous IBM Intel iPod lego linux mobile phones multicore off-topic office 2007 operating systems p4080 podcast commentary power architecture rant research reverse debugging reverse execution S4D SiCS Multicore days Simics simulation software tools Sun SystemC video virtualization Vista Windows

1

  • F-Secure Blog

Blogs and news

  • Andras Vajda's blog (on multicore)
  • Embedded in Academia (John Regehr)
  • Grant Martin
  • Jack Ganssle
  • My Wind River Blog
  • Security Now podcast
  • Secworks (Joachim Strömbergson)
  • Simon Kågström
  • Synopsys View from the Top
  • Worse Than Failure

Archives

  • May 2013 (1)
  • April 2013 (1)
  • March 2013 (4)
  • February 2013 (1)
  • January 2013 (3)
  • December 2012 (2)
  • November 2012 (2)
  • October 2012 (1)
  • September 2012 (6)
  • August 2012 (4)
  • July 2012 (4)
  • June 2012 (3)
  • May 2012 (4)
  • April 2012 (2)
  • March 2012 (3)
  • February 2012 (1)
  • January 2012 (6)
  • December 2011 (2)
  • November 2011 (3)
  • October 2011 (4)
  • September 2011 (5)
  • August 2011 (4)
  • July 2011 (3)
  • June 2011 (4)
  • May 2011 (7)
  • April 2011 (1)
  • March 2011 (3)
  • February 2011 (5)
  • January 2011 (1)
  • December 2010 (4)
  • November 2010 (3)
  • October 2010 (5)
  • September 2010 (5)
  • August 2010 (5)
  • July 2010 (6)
  • June 2010 (5)
  • May 2010 (3)
  • April 2010 (4)
  • March 2010 (3)
  • February 2010 (4)
  • January 2010 (7)
  • December 2009 (6)
  • November 2009 (6)
  • October 2009 (7)
  • September 2009 (6)
  • August 2009 (7)
  • July 2009 (11)
  • June 2009 (5)
  • May 2009 (10)
  • April 2009 (7)
  • March 2009 (8)
  • February 2009 (9)
  • January 2009 (12)
  • December 2008 (8)
  • November 2008 (9)
  • October 2008 (9)
  • September 2008 (10)
  • August 2008 (13)
  • July 2008 (12)
  • June 2008 (8)
  • May 2008 (9)
  • April 2008 (10)
  • March 2008 (7)
  • February 2008 (8)
  • January 2008 (5)
  • December 2007 (5)
  • November 2007 (7)
  • October 2007 (7)
  • September 2007 (12)
  • August 2007 (9)
  • July 2007 (2)
© Copyright 2013 - Observations from Uppsala
Infinity Theme by DesignCoral / WordPress