Skip to content
Snippets Groups Projects
Commit 9a3eb7ed authored by Antoine Kaufmann's avatar Antoine Kaufmann
Browse files

add technology page

parent db20d01a
No related branches found
No related tags found
No related merge requests found
nav:
- title: Home
link: /
- title: Technology
link: /technology.html
children:
- title: Research
link: /research.html
- title: Blog
link: /blog/
- title: Research
link: /research.html
- title: People
link: /people.html
- title: Docs
......
---
body_class: technology
layout: base
---
<article class="technology">
<section class="research">
<div class="container">
<video controls src="/assets/videos/simbricks_demo.mp4" preload="none" width="100%"
poster="/assets/images/simbricks_demo_poster.png">
simbricks_demo.mp4
</video>
{{content}}
</div>
</section>
<section>
<div class="container">
<div class="coder-card">
<img src="/assets/images/coder.png" alt="Coder-Example-Image" style="width:100%">
<div>
<h2>
<a href="{{ site.baseurl }}/demo/">Try out SimBricks in Your Browser!</a>
</h2>
<p>New to SimBricks? Get started quickly with our demo. We offer an
easy to use SimBricks environment that you can use in the browser.
This is the fastest and easiest way to get started using
SimBricks!</p>
</div>
<img />
</div>
</div>
</section>
<section class="features">
<div class="container">
<h2>Key Features</h2>
<ul>
<li class="goal-endtoend"><strong>End-to-End:</strong>
simulate full heterogeneous systems, with hosts, devices, network, and
the full software stack.
</li>
<li class="goal-scalable"><strong>Scalable:</strong>
simulate large heterogeneous systems with tens or hundreds of
separate hosts and devices.
</li>
<li class="goal-fast"><strong>Fast:</strong>
keep simulation times as low as possible.
</li>
<li class="goal-modular"><strong>Modular:</strong>
enable flexible composition of simulators, where components can be added
and swapped independently.
</li>
<li class="goal-accurate"><strong>Accurate:</strong>
preserve accuracy of constituent simulators, correctly interface and
synchronize components.
</li>
<li class="goal-easy"><strong>Easy:</strong>
quickly enable developers without simulation expertise to simulate
complex heterogeneous systems.
</li>
</ul>
</div>
</section>
<section class="techniques">
<div class="container">
<h2>Techniques</h2>
<ul>
<li class="technique-interfaces">
<h3>Open &amp; modular architecture</h3>
SimBricks defines fixed, natural component interfaces to enable flexible
modular composition of simulators to run a broad range of
heterogeneous systems.
</li>
<li class="technique-sync">
<h3>Accurate &amp; efficient synchronization</h3>
SimBricks ensures accurate simulation through correct time
synchronization, but with minimal runtime overhead even for systems with
many components.
</li>
<li class="technique-loose">
<h3>Loose coupling for easy integration</h3>
SimBricks component simulators run as separate processes that
communicate through message passing, enabling integration of simulators
using arbitrary languages and simulation models.
</li>
<li class="technique-parallel">
<h3>Parallel execution for fast simulation</h3>
SimBricks runs simulators in parallel on different host cores and
connects them through optimized shared-memory queues; proxy process
enable scaling out across machines.
</li>
</ul>
</div>
</section>
{%- include faq.html %}
</article>
\ No newline at end of file
---
layout: technology
header_color: bluegradient
title: Virtual Prototyping through Modular Full-System Simulation
subtitle: |
Streamlining heterogenous system design, implementation, and eval,
reducing cost and increasing velocity,
through modular full system simulation.
no_page_title: true
permalink: /technology.html
card_text: |
SimBricks is an open-source, modular simulation framework enabling full
end-to-end evaluation of modern heterogeneous systems by combining
battle-tested simulators for different system components like machines (e.g.
QEMU, gem5, Simics), hardware components (e.g. Verilator, Tofino, FEMU SSD),
and networks (e.g. ns-3, OMNeT++). SimBricks is fast, scalable, accurate and
deterministically connects and synchronizes simulators while being able to run
unmodified full system stacks, including applications, operating systems such
as Linux, and hardware RTL.
---
{::options parse_block_html="true" /}
<div class="block-50">
## SimBricks: Full-System Simulation for Heterogeneous Systems
SimBricks is an open-source simulation framework that enables full end-to-end
evaluation of modern heterogeneous systems in simulation. Our primary aim is to
enable rapid prototyping and meaningful performance evaluation. SimBricks
modularly combines and connects battle-tested simulators for different
components: machines (e.g. QEMU, gem5, Simics), hardware components (e.g.
Verilator, Tofino, FEMU SSD), and networks (e.g. ns-3, OMNeT++). SimBricks
simulations run unmodified full system stacks, including applications, operating
systems such as Linux, and hardware RTL.
</div>
{::options parse_block_html="false" /}
<div class="block-60">
<figure>
<img src="/assets/images/overview_sys.svg"
alt="Example of a heterogeneous system configuration with three
hosts, a server with the DPU being built and an SSD and two clients with
regular NICs. All hosts are connected to a network of just one switch."/>
<figcaption>Simple heterogeneous system featuring a DPU under development.
</figcaption>
</figure>
</div>
{::options parse_block_html="true" /}
<div class="block-50">
## Late Full-System Evaluation Slows Development and Increases Risk
Heterogeneous hardware-software systems are complex, slow, and expensive to
build, in academia and industry alike. These systems aim to drastically improve
performance and energy efficiency of the *complete* system or application.
However, engineers can only measure overall system performance once all software
and hardware components have been implemented and manufactured. As a result, key
metrics for evaluating design and implementation are only available late in the
project lifecycle, once a physical testbed can actually be fully built.
</div>
{::options parse_block_html="true" /}
<div class="block-50">
## Early & Continuous Full-System Results Accelerate Building Heterogeneous Systems
Enabling developers to run and measure the full system early speeds up and
reduces risks for building heterogeneous systems. Developers can choose optimal
design parameters before implementation based on reliable metrics. Full-system
integration tests reduce the need for extensive hardware testbenches that merely
emulate the real behavior. And once the hardware implementation is complete, a
reliable full-system performance evaluation before manufacturing provides early
feedback to developers, reviewers, and customers.
</div>
{::options parse_block_html="true" /}
<div class="block-50">
## Modular Simulation Enables Early and Continuous Evaluation
Simulation generally enables early evaluation when a physical implementation is
out of reach. However, typical heterogeneous systems require a broad range of
components not supported by any individual simulator. To address this, we take a
modular approach of combining different best-of-breed simulators for the
individual components. We flexibly connect and synchronize multiple parallel
instances of these simulators into a broad range of complete, *end-to-end*
virtual testbeds.
</div>
{::options parse_block_html="false" /}
<div class="block-60">
<figure>
<img src="/assets/images/overview_sim.svg"
alt="Example of a SimBricks simulation configuration with three
simulated hosts, a server and two clients. We simulate the server in
gem5 and connect to an SSD simulated through FEMU and a Corundum FPGA
NIC simulated through Verilator. The two clients are simulated in QEMU
and connect to a PCIe behavioral NIC model. All three hosts are
connected through a network simulated in ns-3.">
<figcaption>A SimBricks simulation configuration for the system above.</figcaption>
</figure>
</div>
......@@ -20,6 +20,7 @@ $breakpoint: 850px;
@import 'base-form';
@import 'home';
@import 'technology';
@import 'people';
@import 'project';
@import 'publications';
......
@use 'sass:math';
body.technology {
header.page-header {
margin-bottom: 0px;
div.container {
div.logo {
img {
width: calc(0.75 * 400px);
max-width: 100%;
max-height: calc(0.75 * 400px);
}
}
}
}
section.research {
@include sec-white;
div.container {
display: flex;
flex-wrap: wrap;
gap: 2rem;
div {
min-width: 34%;
}
div.block-40 {
flex: 0.8;
}
div.block-50 {
flex: 1;
}
div.block-60 {
flex: 1.2;
}
@include media-mobile {
display: block;
div.research-text,
div.research-figure {
width: inherit;
}
}
}
}
section.features {
@include sec-green;
ul {
list-style: none;
columns: 2;
padding-inline: 0rem;
padding: 0rem;
margin: 0rem;
li {
margin-left: 2rem;
padding: 2rem 0.5rem;
}
li::before {
position: absolute;
content: "";
text-align: center;
font-family: $font-fa;
color: $col-sb-org;
display: inline-block;
width: 5rem;
margin-left: -5rem;
font-weight: bold;
font-size: 2rem;
padding-top: 0.5rem;
line-height: 1rem;
}
li.goal-endtoend::before {
content: "\f6ff";
}
li.goal-scalable::before {
content: "\e4b7";
}
li.goal-fast::before {
/*content: "\f625"; spedometer */
content: "\f135";
}
li.goal-modular::before {
content: "\f12e";
}
li.goal-accurate::before {
content: "\f140";
}
li.goal-easy::before {
content: "\f5dc";
}
}
}
section.techniques {
@include sec-white;
ul {
list-style: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 0rem;
margin: 0rem;
margin-top: 1rem;
$gap: 35px;
$block-size: math.div(($width - $gap), 2);
gap: $gap;
li {
width: $block-size;
min-height: calc(0.9 * $block-size);
background-color: $col-sb-blu;
background-image: url('/assets/images/bricks_outlines.svg');
background-size: 205%;
margin: 0px;
color: white;
padding: 4rem 5rem 6rem 5rem;
font-size: 1.1rem;
line-height: 1.2;
h3 {
width: 90%;
/*text-align: center;*/
margin-left: -2rem;
margin-bottom: 1rem;
line-height: 1;
font-weight: 600;
text-transform: uppercase;
}
}
li.technique-interfaces {
background-position: top left;
}
li.technique-sync {
background-position: top right;
}
li.technique-loose {
background-position: bottom left;
}
li.technique-parallel {
background-position: bottom right;
}
}
}
section.news {
@include sec-white;
div.news-slider {
margin-left: 50px;
margin-right: 50px;
}
button.slick-arrow {
position: absolute;
top: 30%;
font-size: 2.5rem;
cursor: pointer;
background: none;
border: none;
}
button.slick-disabled {
color: $col-os-grey;
cursor: default;
}
button.news-prev {
left: -48px;
}
button.news-next {
right: -48px;
}
div.news-item {
position: relative;
margin: 0rem 0.25rem;
padding: 0.75rem;
border: 1px #ccc solid;
height: 16rem;
div.date {
position: absolute;
top: 0.75rem;
color: #999;
}
h3 {
position: absolute;
top: 1.25rem;
padding-right: 0.75rem;
}
div.text {
position: absolute;
top: 4.5rem;
padding-right: 0.75rem;
color: #999;
font-size: 1.1rem;
line-height: 1.2;
}
}
}
/* changes for mobile layout */
@include media-mobile {
section.features {
ul {
columns: 1;
padding-left: 2rem;
}
}
section.techniques {
ul {
justify-content: center;
}
}
}
article.technology {
figure {
margin: 0px;
padding-top: 2em;
padding-bottom: 2em;
img {
width: 100%;
}
figcaption {
text-align: center;
padding-top: 0.5em;
font-style: italic;
}
}
}
}
.coder-card {
border-radius: 8px;
box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
transition: 0.3s;
img {
border-radius: 8px;
}
div {
padding: 20px;
}
a {
color: black;
}
a:hover {
text-decoration: underline;
}
}
.coder-card:hover {
box-shadow: 0px 8px 12px rgba(0, 0, 0, 0.1);
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment