Software

Print
Created on Monday, 11 July 2011 Last Updated on Monday, 18 March 2013 Written by Tommaso Cucinotta

In this page you can find information on the software components that have been developed for supporting the research carried out in the context of the S(o)OS project.

ComponentDescription
SoOSiM

SoOSiM Description: The S(o)OS Simulator!

MCoreSim

MCoreSim is an open-source simulation framework for massively parallel and many-core computing systems based on OMNeT++. The simulator supports tile-based architectures with distributed memory and mesh-based interconnects. Its primary purpose is to allow for investigations on the impact of the heterogeneous in-chip communication latencies, as arising due to the network-on-a-chip structure of future and emerging many-core processors, on the performance of the hosted applications. We plan to use MCoreSim to study the variety of possible choices in realizing a suitable software stack for these systems, especially in terms of the choices at the kernel design level.

For a description of the simulator, check-out the paper appeared at the ANSS 2011 in Boston.

Scalable Global SCHED_DEADLINE

Scheduling a big number of real-time tasks with Global EDF (or Clustered, grouping cores in clusters) on big multi-core machines with sufficiently large caches shared among cores is a viable choice for large real-time systems: it allows for high saturation levels of the underlying computing power, avoids the need for making a static partitioning of tasks to cores (as needed with partitioned approaches), while keeping a high degree of self-adaptation to the run-time workload conditions. However, the high contention level on globally (or clustered) shared data structures calls for scalable solutions. In S(o)OS, we are addressing issues related to scalability of global EDF scheduling policies by modifying the SCHED_DEADLINE scheduler for Linux, experimenting over 48-core machines.

More information can be found in the paper appeared at OSPERT 2011 in Porto, Portugal.

SAM -  Speculative Access to Memory Speculative Access to Memory (SAM) is a library that allows programmers to create threads that allow to memory regions (read and/or write) speculatively. This means that the read data is not validated until the system is sure that all dependencies have been resolved, in case a dependency is detected then the thread that is accessing speculatively is restored back to a previous "safe" status. As for speculative writing, if a conflict is detected, then the written memory is not committed and shared among the other threads.
DISTae - Distributed Adaptable Executable

DISTributed Adaptable Executable is a software layer that allows the OS the portability of programs among different heterogeneous computing units of a system and run the different parts of the code of a program simultaneously in a distributed and/or heterogeneous environment.

E-STM - Elastic Software Transactional Memory

Elastic Transactions are a complementary alternative to traditional transactions, particularly appealing when implementing search structures. Both forms of transactions can safely be combined within the same application. Elastic transactions are a variant of the transactional model. Upon conflict detection, an elastic transaction might drop what it did so far within a separate transaction that immediately commits, and initiate a new transaction which might itself be elastic.

ε-STM is the first software transactional memory supporting elastic transactions. ε-STM implementation is faster than a state-of-the-art software transactional memory in various workloads and with a speedup of 36% on average. Here is the simple API, ε-STM provides to the user:

  • BEGIN(elastic);
  • BEGIN(normal);
  • END;
  • READ(x);
  • WRITE(x,v).

The simplicity of using ε-STM comes from the very few information the programmer has to provide. The programmer has to indicate whether his(her) transaction is normal or elastic and no extra-information (i.e., release action, or on-abort-action) is necessary.