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

Category Archives: Multicore Software

Two Cores, Four Cores, Eight Cores – Mobile Variety

2013 March 3 22:26 / Leave a Comment / Jakob

Probably thanks to the yearly Mobile World Congress, there have been a slew of recent announcements of mobile application processors recently. Everything is ARM-based, but show quite some variety in the CPU core configurations used. Indeed, I think this variety has something to say on the general state of multicore.

Read More →

Tweet
Posted in: computer architecture, multicore computer architecture, multicore software / Tagged: ARM, bigLITTLE, Cortex-A15, Cortex-A7, Cortex-A9, eQuad, mobile, MP6530, Renesas, ST Ericsson

SiCS Multicore Day 2012

2012 September 16 22:12 / 4 Comments / Jakob

The 2012 edition of the SiCS Multicore Day was fun, like they have always been in the past. I missed it in 2010 and 2011, but could make it back this year. It was interesting to see that the points where keynote speakers disagreed was similar to previous years, albeit with some new twists. There was also a trend in architecture, moving crypto operations into the core processor ISA, that indicates another angle on the hardware accelerator space.

Read More →

Tweet
Posted in: computer architecture, conferences, embedded software, multicore computer architecture, multicore debug, multicore software, parallel computing, programming / Tagged: Erik Hagersten, heterogeneous, homogeneous, James Larus, Rich Hetherington, SiCS Multicore days, Stephen Hill

Wind River Blog: Testing Multicore Scaling with a Simics QSP

2012 August 27 21:39 / Leave a Comment / Jakob

A few years ago, I built a demo on Simics that used a hacked Freescale MPC8641D target that was forced to scale from 1 to 8 cores. Some interesting experiements could be made using this target, and it was nicely scalable for its time. However, I always wanted to have something just a bit bigger. Say 20 cores, or 100. Just to see what would happen. Finally, I got it.

The Simics QSP target that we quietly launched earlier this Summer is such a scalable target. As discussed in a blog post describing the architecture, it is designed to scale to 128 cores currently. Using this ability, I repeated my old experiments, but trying very large threads counts and target core counts. The results show clearly that the way that I coded my parallel computation program was pretty bad, and I really would like to try to rewrite it using some more modern threading library. All I need is time and a way to cross-compile Wool…

Anyway, the new blog post is here.

Tweet
Posted in: multicore software, virtual machines, Wind River Blog / Tagged: multicore, QSP, Simics

Back to Bare Metal

2012 March 30 22:10 / 1 Comment / Jakob

Once upon a time, all programming was bare metal programming. You coded to the processor core, you took care of memory, and no operating system got in your way. Over time, as computer programmers, users, and designers got more sophisticated and as more clock cycles and memory bytes became available, more and more layers were added between the programmer and the computer. However, I have recently spotted what might seem like a trend away from ever-thicker software stacks, in the interest of performance and, in particular, latency.

Read More →

Tweet
Posted in: computer architecture, embedded software, multicore software, programming / Tagged: Communications of the ACM, ethernet, Luigi Rizzo, NetMap, networking

David Ungar: It is Good to be Wrong

2012 February 12 23:31 / 7 Comments / Jakob

I was recently pointed to a 2011 SPLASH presentation by David Ungar, an IBM researcher working on parallel programming for manycore systems. In particular, in a project called Renaissance, run together with the Vrije Universiteit Brussels in Belgium (VUB) and Portland State University in the US. The title of the presentation is “Everything You Know (about Parallel Programming) Is Wrong! A Wild Screed about the Future“, and it has provoked some discussion among people I know about just how wrong is wrong.

Read More →

Tweet
Posted in: computer architecture, multicore debug, multicore software, programming / Tagged: David Ungar, manycore, Portland State, Renaissance, Smalltalk, Squeak, Vrije Universiteit Brussels

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

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

Photoshop Scalability and “-10% overhead”

2010 November 1 13:45 / Leave a Comment / Jakob

I just finished reading the October 2010 issue of Communications of the ACM. It contained some very good articles on performance and parallel computing. In particular, I found the ACM Case Study on the parallelism of Photoshop a fascinating read. There was also the second part of Cary Millsap’s articles about “Thinking Clearly about Performance”.

Read More →

Tweet
Posted in: multicore debug, multicore software, programming / Tagged: Cary Millsap, Clem Cole, Communications of the ACM, GPGPU, Oracle, performance optimization, Photoshop, Russell Williams

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

VirtualBox SMP

2010 August 20 19:04 / Leave a Comment / Jakob

I listened to an interesting FLOSS Weekly interview with Adam Hall and Achim Hasenmuller of VirtualBox. For someone interested in virtual machines and hardware simulation, the interview was full of interested tidbits. I think the best part was the discussion on multiprocessing in Virtualbox.

Read More →

Tweet
Posted in: multicore software, virtual machines / Tagged: CECsim, SMP, VirtualBox

Multicore is not That Bad

2010 August 10 19:24 / 1 Comment / Jakob

I recently read a couple of articles on multicore that felt a bit like jumping back in time. In IEEE Spectrum, David Patterson at Berkeley’s parallel computing lab brings up the issue of just how hard it is to program in parallel and that this makes the wholesale move to multicore into something like a “hail Mary pass” for the computer industry. In Computer World, Chris Nicols at NICTA in Australia asks what you will do with a hundred cores – implying that there is not much you can do today. While both articles make some good points, I also think they should be taken with a grain of salt. Things are better than they make them seem. Read More →

Tweet
Posted in: multicore software / Tagged: Chris Nicols, David Patterson, hypervisor, Simics

Wind River Blog: True Concurrency is Different

2010 June 18 21:24 / Leave a Comment / Jakob

I have another blog up at Wind River. This one is about multicore bugs that cannot happen on multithreaded systems, and is called True Concurrency is Truly Different (Again). It bounces from a recent interesting Windows security flaw into how Simics works with multicore systems.

Tweet
Posted in: multicore computer architecture, multicore debug, multicore software, security, Wind River Blog / Tagged: Simics

MCC 2009 Presentations Online

2009 December 3 09:29 / 2 Comments / Jakob

UPMARC_700x150The presentations from the 2009 Swedish Workshop on Multicore Computing (MCC 2009) are now online at the program page for the workshop. Let me add some comments on the workshop per se.

Read More →

Tweet
Posted in: appearances, computer architecture, conferences, embedded software, multicore debug, multicore software / Tagged: Andras Vajda, Domain-specific languages, Ericsson, heterogeneous, homogeneous, keynote, LTE, MCC, UpMarc

MCC 2009: 2D Stream Processing for Manycore

2009 November 26 16:03 / Leave a Comment / Jakob

UPMARC_700x150Today here at the MCC 2009 workshop, I heard an interesting talk by David Black-Schaffer of Stanford university.  His work is on stream programming for image processing (“2D streams”). Pretty simple basic idea, to use 2D blobs of pixels as kernel inputs rather than single values or vectors. Makes eminent sense for image processing.

Read More →

Tweet
Posted in: multicore software, programming / Tagged: David Black-Schaffer, efficiency, manycore, MCC, Stanford, Stream programming, UpMarc

Finally, a Bug!

2009 October 25 21:41 / 2 Comments / Jakob

butterflyPart of my daily work at Virtutech is building demos. One particularly interesting and frustrating aspect of demo-building is getting good raw material. I might have an idea like “let’s show how we unravel a randomly occurring hard-to-reproduce bug using Simics“. This then turns into a hard hunt for a program with a suitable bug in it… not the Simics tooling to resolve the bug. For some reason, when I best need bugs, I have hard time getting them into my code.

I guess it is Murphy’s law — if you really set out to want a bug to show up in your code, your code will stubbornly be perfect and refuse to break. If you set out to build a perfect piece of software, it will never work…

So I was actually quite happy a few weeks ago when I started to get random freezes in a test program I wrote to show multicore scaling. It was the perfect bug! It broke some demos that I wanted to have working, but fixing the code to make the other demos work was a very instructive lesson in multicore debug that would make for a nice demo in its own right. In the end, it managed to nicely illustrate some common wisdom about multicore software. It was not a trivial problem, fortunately.

Read More →

Tweet
Posted in: embedded software, multicore software, programming, virtual platforms / Tagged: Checkpointing, debugging, demo, Linux kernel, Simics

Ericsson Blog Post about DSL

2009 October 25 20:29 / 1 Comment / Jakob

ericsson_logoAndras Vajda of Ericsson wrote an interesting blog post on domain-specific languages (DSLs). Thanks for some success stories and support in what sometimes feels like an uphill battle trying to make people accept that DSLs are a large part of the future of programming. In particular for parallel computing, as they let you hide the complexities of parallel programming.

Read More →

Tweet
Posted in: embedded software, multicore software / Tagged: Andras Vajda, Domain-specific languages

SiCS Multicore Day 2009

2009 September 7 20:26 / 8 Comments / Jakob

Last Friday, I attended this year’s edition of the SiCS Multicore Day. It was smaller in scale than last year, being only a single day rather than two days. The program was very high quality nevertheless, with keynote talks from Hazim Shafi of Microsoft, Richard Kaufmann of HP, and Anders Landin of Sun. Additionally, there was a mid-day three-track session with research and industry talks from the Swedish multicore community. Read More →

Tweet
Posted in: appearances, conferences, multicore computer architecture, multicore debug, multicore software, virtual machines / Tagged: Anders Landin, CPP, Ericsson, Erlang, Hazim Shafi, heterogeneous, homogeneous, MCC, Richard Kaufmann, SiCS Multicore days, Simics, Visual Studio 2010

Øredev 2009: Meanwhile, Parallel

2009 September 7 07:52 / 1 Comment / Jakob

Öredev logoØredev is the premier software development conference in Sweden and Europe (they claim). I gave some presentations there in 2006 and 2007, but since then they have dropped the general embedded software development track and just focused on programming for mobile phones. Most of the material is “general IT”. If you are doing software development on the desktop or for servers, it is a good place to go to learn new things from the general world of computing.

Read More →

Tweet
Posted in: conferences, multicore software, programming / Tagged: Öredev

Downloadable Book about Embedded Multicore

2009 August 8 20:27 / Leave a Comment / Jakob

freescale-logo-iconFreescale has now released the collected, updated, and restyled book version of the article series on embedded multicore that I wrote last year together with Patrik Strömblad of Enea, and Jonas Svennebring, and John Logan of Freescale. The book covers the basics of multicore software and hardware, as well as operating systems issues and virtual platforms. Obviously, the virtual platform part was my contribution.

Read More →

Tweet
Posted in: books, embedded software, embedded systeme, multicore computer architecture, multicore debug, multicore software, virtual platforms / Tagged: freescale, John Logan, Jonas Svennebring, Patrik Strömblad

StackOverflow interviews CouchDB

2009 July 7 19:29 / Leave a Comment / Jakob

couchdbLast year, FLOSS Weekly interviewed Jan Lehnard of the CouchDB project. I put up a blog post on this, noting that it was interesting with a scalable parallel program written in Erlang, a true concurrent language. The interview was interesting,  but not very deeply technical. Now, almost a year later, the StackOverflow podcast, number 59, interviewed the founder of the project, Damien Katz. This interview goes a bit more into the technical details and what CouchDB is good for and what not, as well as some details on the use and performance of Erlang.

Read More →

Tweet
Posted in: desktop software, multicore software, programming / Tagged: couchDB, Damien Katz, Erlang, Jan Lehnard, Jeff Atwood, Joel Spolsky, parallelized software, stackoverflow.com, transactions

Article in ECNmag about Multicore and Virtual Platforms

2009 June 9 07:46 / Leave a Comment / Jakob

ecn_logosI have a short article on multicore systems development and virtual platforms in the May 2009 issue of ECN magazine, over at www.ecnmag.com.

Tweet
Posted in: articles, multicore debug, multicore software, virtual platforms / Tagged: ECNmag

Parallelism in Action

2009 May 24 13:53 / Leave a Comment / Jakob

Shrinking cores

Last year in a blog post on video encoding for the iPod Nano, I complained about the lack of performance on my old Athlon. A bit later, I noted that (obviously) video encoding is a good example of an application that can take advantage of parallelism. Yesterday I put these two topics together in a practical test. And it worked nicely enough.

Read More →

Tweet
Posted in: multicore computer architecture, multicore software / Tagged: Embarrassingly Parallel, iPod, Nero, parallelized software, video

EETimes.com – Multicore CPUs face slow road in comms

2009 March 22 22:16 / Leave a Comment / Jakob

eetimes logoThe  EETimes article Multicore CPUs face slow road in comms piqued my interest. There is an interesting chart in there about just how slow more-than-one-core processors will be in penetrating a vaguely defined “comms” market place. I can believe that, but I think their comments on the PowerQUICC series require some commentary…

Read More →

Tweet
Posted in: embedded systeme, multicore computer architecture, multicore software / Tagged: Cavium, Communications market, EETimes, freescale, heterogeneous, Linley Gwennap, Multicore Expo, Octeon, p4080, PowerQUICC, qoriq, Rick Merritt

Enea and Freescale Article on SMP OS

2009 February 24 10:43 / Leave a Comment / Jakob

Elektronik i Norden just published a technical insight article about the SMP kernels of Enea OSE and Linux, by Patrik Strömblad and Jonas Svennebring.

Read More →

Tweet
Posted in: embedded software, embedded systeme, multicore computer architecture, multicore software / Tagged: AMP, Enea, freescale, Jonas Svennebring, linux, mpc8572e, mpc8641d, OSE, p4080, Patrik Strömblad, SMP

Adding to Schirrmeister’s Virtual Platform Myth Busting

2009 February 18 13:22 / 2 Comments / Jakob

opinionFrank Schirrmeister of Synopsys recently published a blog post called “Busting Virtual Platform Myths – Part 1: “Virtual Platforms are for application software only”. In it, he is refuting a claim by Eve that virtual platforms are for application-level software-development only, basically claiming that they are mostly for driver and OS development and citing some Synopsys-Virtio Innovator examples of such uses. In his view, most appication-software is being developed using host-compiled techniques.  I want to add to this refutal by adding that application-software is surely a very important — and large — use case for virtual platforms.

Read More →

Tweet
Posted in: embedded software, embedded systeme, ESL, multicore software, programming, virtual platforms / Tagged: clock-cycle models, cycle accuracy, Eve, Frank Schirrmeister, freescale, Grant Martin, Lauro Ritazzi, p4080, Simics, software tools, Synopsys

IBM z10 Heavy-Duty Virtual Platform

2009 February 15 18:17 / Leave a Comment / Jakob

ibm_z10Unknown to most, IBM has one of the world’s longest records of using virtual platforms for software and firmware development and verification. This project has been ongoing since at least the days of the zSeries 900 machines, through z990, z9, and now z10. An excellent article on this virtual platform and its uses is found in the IBM Journal of Research and Development, number 1, 2009, . It is called “IBM System z10 Firmware Simulation”, by Körner et al.

Read More →

Tweet
Posted in: computer simulation technology, multicore debug, multicore software, review, virtual platforms / Tagged: CECsim, IBM, Simics, z10, zSeries

Three Cores make a Crowd — or a Problem

2009 February 7 22:12 / 2 Comments / Jakob

mpc8640d_ppA common question from simulation users to us simulation providers is “can I simulate a machine with N cores”, where N is “large”. As if running lots of cores was a simulation system or even a hardware problem. In almost all cases, the problem is with software. Creating an arbitrary configuration in a virtual platform is easy. Creating a software stack for that arbitrary platform is a lot harder, since an SMP software stack needs to understand about the cores and how they communicate.

Essentially, what you need is a hardware design that has addressing room for lots of cores, and a software stack that is capable of using lots of cores — even if such configurations do not exist in hardware. Unfortunately, since software is normally written to run on real existing machines, there tends to be unexpected limitations even where scalability should be feasible “in principle”.

Here is the story of how I convinced Linux to handle more than two cores in a virtual MPC8641D machine.

Read More →

Tweet
Posted in: multicore computer architecture, multicore software, virtual platforms / Tagged: AMD, device tree, freescale, linux, Linux kernel, mpc8641d, OpenPIC, Simics

Tying a Thread to a Processor in Linux

2009 February 1 20:24 / Leave a Comment / Jakob

This is a small Linux SMP programming tip, which I had a hard time finding documented clearly anywhere on the web. I guess people won’t find it here either, but with some luck some search engine will pick up on this.

Read More →

Tweet
Posted in: embedded software, embedded systeme, multicore software, programming / Tagged: fre, linux, mpc8641d, processor affinity, sched_setaffinity

Hardware-Software Race Condition in Interrupt Controller

2009 January 17 22:16 / Leave a Comment / Jakob

raceconditionThe best way to learn something is to try, fail, and then try again. That is how I just learned the basics of multiprocessor interrupt management. For an educational setup, I have been creating a purely virtual virtual platform from scratch. This setup contains a large number of processors with local memory, and then a global shared memory, as well as a means for the processors to interrupt each other in order to notify about the presence of a message or synchronize in general. Getting this really right turned out to be not so easy.

Read More →

Tweet
Posted in: multicore computer architecture, multicore software, programming, virtual platforms / Tagged: interrupt controller, learning by doing, OpenPIC, operating systems, race condition, teaching setup

Floss Weekly on OpenMPI

2009 January 16 22:27 / 2 Comments / Jakob

flossweeklyFLOSS Weekly recently podcast an interview with Jeff Squyres of OpenMPI. OpenMPI is an open-source implementation of the MPI programming standard. Jeff makes some interesting points on how this has worked out and why it makes, and what MPI is all about. ´

Read More →

Tweet
Posted in: multicore software, programming / Tagged: FLOSS Weekly, Jeff Squyres, open-source, OpenMPI, TWiT

Post Navigation

1 2 3 Next »

Recent Posts

  • Military Science Fiction – The Books Blur Together
  • Wind River Blog: Starting & Configuring Simics
  • Wind River Blog:
  • Nudge Theory and Graphical User Interfaces
  • Wind River Blog: Collaborating with Recording Checkpoints
  • Wind River Blog: Simics 4.8 is Here
  • 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

Categories

  • appearances (30)
  • articles (21)
  • blogging (10)
  • books (7)
  • 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 (109)
  • review (8)
  • security (19)
  • teaching (7)
  • testing (9)
  • uncategorized (12)
  • virtual things (131)
    • computer simulation technology (68)
    • virtual machines (18)
    • virtual platforms (99)
    • virtualization (14)
  • Wind River Blog (43)

Tags

ARM blog commentary Cadence Checkpointing clock-cycle models Communications of the ACM computer architecture conference cycle accuracy debugging Domain-specific languages eclipse 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

  • June 2013 (3)
  • May 2013 (4)
  • 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