Giter Club home page Giter Club logo

m3's Introduction

This is the official repository of M³: microkernel-based system for heterogeneous manycores [1, 2]. M³ is the operating system for a new system architecture that considers heterogeneous compute units (general-purpose cores with different instruction sets, DSPs, FPGAs, fixed-function accelerators, etc.) from the beginning instead of as an afterthought. The goal is to integrate all compute units (CUs) as first-class citizens, enabling 1) isolation and secure communication between all types of CUs, 2) direct interactions of all CUs to remove the conventional CPU from the critical path, 3) access to OS services such as file systems and network stacks for all CUs, and 4) context switching support on all CUs.

The system architecture is based on a hardware/operating system co-design with two key ideas:

  1. introduce a new hardware component next to each CU used by the OS as the CUs' common interface and
  2. let the OS kernel control applications remotely from a different CU.

The new hardware component is called data transfer unit (DTU). Since not all CUs can be expected to offer the architectural features that are required to run an OS kernel, M³ runs the kernel on a dedicated CU and the applications on the remaining CUs. To control an application, a kernel controls its DTU remotely, because CU-external resources (other CUs, memories, etc.) can only be accessed via the DTU.

Supported Platforms:

Currently, M³ runs on the following platforms:

  • gem5, by adding a DTU model to gem5.
  • Linux, by using Linux' primitives to simulate the behavior of the DTU and the envisioned system architecture.

Getting Started:

Preparations for gem5:

The submodule in hw/gem5 needs to be pulled in and built:

$ git submodule init
$ git submodule update hw/gem5
$ cd hw/gem5
$ git submodule init && git submodule update
$ scons build/X86/gem5.opt build/X86/gem5.debug

Building:

Before you build M³, you should choose your target platform and the build-mode by exporting the corresponding environment variables. For example:

$ export M3_BUILD=release M3_TARGET=gem5

Now, M³ can be built by using the script b:

$ ./b

Running:

On all platforms, scenarios can be run by starting the desired boot script in the directory boot, e.g.:

$ ./b run boot/hello.cfg

Note that this command ensures that everything is up to date as well. For more information, run

$ ./b -h

References:

[1] Nils Asmussen, Michael Roitzsch, and Hermann Härtig. M3x: Autonomous Accelerators via Context-Enabled Fast-Path Communication. To appear in the Proceedings of the 2019 USENIX Annual Technical Conference (USENIX ATC'19).

[2] Nils Asmussen, Marcus Völp, Benedikt Nöthen, Hermann Härtig, and Gerhard Fettweis. M3: A Hardware/Operating-System Co-Design to Tame Heterogeneous Manycores. In Proceedings of the Twenty-first International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'16), pages 189-203, April 2016.

m3's People

Contributors

ghsecuritylab avatar hrniels avatar llandgraf317 avatar nils-tud avatar reimerssebastian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

m3's Issues

gem5 build error

When I run the following command:

scons build/X86/gem5.opt build/X86/gem5.debug

I get the following error:

scons: Reading SConscript files ...
Warning: Your compiler doesn't support incremental linking and lto at the same time, so lto is being disabled. To force lto on anyway, use the --force-lto option. That will disable partial linking.
Warning: Protocol buffer compiler (protoc) not found.
         Please install protobuf-compiler for tracing support.
Checking for C header file Python.h... yes
Checking for C library python2.7... yes
Checking for C library pthread... yes
Checking for C library dl... yes
Checking for C library util... yes
Checking for C library m... yes
Checking for accept(0,0,0) in C++ library None... yes
Checking for zlibVersion() in C++ library z... yes
Checking for C header file valgrind/valgrind.h... no
Checking for clock_nanosleep(0,0,NULL,NULL) in C library None... yes
Checking for timer_create(CLOCK_MONOTONIC, NULL, NULL) in C library None... no
Checking for timer_create(CLOCK_MONOTONIC, NULL, NULL) in C library rt... yes
Checking for C library tcmalloc... yes
Checking for char temp; backtrace_symbols_fd((void*)&temp, 0, 0) in C library None... yes
Checking for C header file fenv.h... yes
Checking for C header file png.h... yes
Checking for C header file linux/kvm.h... yes
Checking for C header file linux/if_tun.h... yes
Checking size of struct kvm_xsave ... yes
Checking for member exclude_host in struct perf_event_attr...yes
Checking whether __i386__ is declared... no
Checking whether __x86_64__ is declared... yes
Building in M3/hw/gem5/build/X86
Using saved variables file M3/hw/gem5/build/variables/X86
ImportError: cannot import name MemTraceProbe:
  File "M3/hw/gem5/SConstruct", line 1245:
    SConscript('src/SConscript', variant_dir = variant_path, exports = 'env')
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 614:
    return method(*args, **kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 551:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 256:
    call_stack[-1].globals)
  File "/home/hvub/phd-projs/M3/hw/gem5/build/X86/SConscript", line 693:
    exec('from m5.objects import %s' % modname)
  File "<string>", line 1:
    None
  File "M3/hw/gem5/build/X86/SConscript", line 673:
    exec file(source.abspath, 'r') in mod.__dict__
  File "M3/hw/gem5/src/aladdin/gem5/HybridDatapath.py", line 2:
    from m5.objects import CommMonitor, Cache, MemTraceProbe

Any idea why this might be happening? Also the following files seem to be missing from gem5: build/X86/gem5.opt, build/X86/gem5.debug.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.