aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 4a4097dc8f22dd443574f0fb8e2605f7621b927c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# CacheRacer

TODOs: https://www.lidavidm.me/todos/cacheracer.html

CacheRacer is a game: two programs compete to try to fill as much
memory with their own byte value (payload) as possible on a shared
machine. The goal is to optimize the program to make the best use of
the cache, while defending against and using various strategies to
disrupt the enemy program.

This project is based on an assignment given in past years in
Cornell's CS 3410 class. No code from that project is used here. For
those familiar with the game, various details have been changed or
reworked, so this is not a 1:1 reimplementation.

CacheRacer is written in Rust, and uses the RISC-V ISA.

## Example

    RUST_LOG=debug cacheracer ./devkit/bin/test ./devkit/bin/masochist
    Traps set: 1
    INFO:cacheracer::shareable_cache: [memory] core 4: 1 write trap(s) set at address 3affffc,stalling for 100 cycles each
    Traps set: 1
    INFO:cacheracer::shareable_cache: [memory] core 5: 1 write trap(s) set at address 3affffd,stalling for 100 cycles each
    Traps set: 1
    INFO:cacheracer::shareable_cache: [memory] core 6: 1 write trap(s) set at address 3affffe,stalling for 100 cycles each
    Traps set: 1
    INFO:cacheracer::shareable_cache: [memory] core 7: 1 write trap(s) set at address 3afffff,stalling for 100 cycles each
    1048320
    INFO:cacheracer::shareable_cache: [memory] core 4: 4 write trap(s) hit at address 3affffc,stalling for 1_000_000 cycles each
    INFO:cacheracer::shareable_cache: [memory] core 5: 4 write trap(s) hit at address 3affffc,stalling for 1_000_000 cycles each
    INFO:cacheracer::shareable_cache: [memory] core 6: 4 write trap(s) hit at address 3affffc,stalling for 1_000_000 cycles each
    INFO:cacheracer::shareable_cache: [memory] core 7: 4 write trap(s) hit at address 3affffc,stalling for 1_000_000 cycles each
    1048320
    1048320
    Core ID > 1, sneak attacking
    DEBUG:cacheracer::system: [syscall] [memory] Secondary cache enabled for core 2
    1048320
    Core ID > 1, sneak attacking
    DEBUG:cacheracer::system: [syscall] [memory] Secondary cache enabled for core 3
    Team has reached payload goal, halting...
    Core 0: stalled 04323789 of 06970418 cycles (62.03%)
    Core 1: stalled 06000928 of 06970418 cycles (86.09%)
    Core 2: stalled 04323963 of 06970418 cycles (62.03%)
    Core 3: stalled 05162593 of 06970418 cycles (74.06%)
    Core 4: stalled 04000450 of 04000462 cycles (100.00%)
    Core 5: stalled 04000450 of 04000462 cycles (100.00%)
    Core 6: stalled 04000450 of 04000462 cycles (100.00%)
    Core 7: stalled 04000450 of 04000462 cycles (100.00%)
    16777216 cycles in 2.408722836000379 seconds (6965191.573414119 cycles/sec)
    Program 1 bytes written: 16777220
    Program 2 bytes written: 0

## Contributing

Email [li.davidm96@gmail.com](mailto:li.davidm96@gmail.com).