hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar.cct.lsu.edu | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | Buildbot: http://rostam.cct.lsu.edu/ | Log: http://irclog.cct.lsu.edu/
hkaiser has quit [Quit: bye]
K-ballo has quit [Quit: K-ballo]
nanashi55 has quit [Ping timeout: 250 seconds]
nanashi55 has joined #ste||ar
david_pfander has joined #ste||ar
parsa[[w]] has joined #ste||ar
parsa[[[w]]] has quit [Ping timeout: 268 seconds]
hkaiser has joined #ste||ar
hkaiser has quit [Ping timeout: 260 seconds]
jbjnr_ has joined #ste||ar
jbjnr__ has quit [Ping timeout: 268 seconds]
hkaiser has joined #ste||ar
K-ballo has joined #ste||ar
jbjnr__ has joined #ste||ar
diehlpk has quit [Read error: Connection reset by peer]
hkaiser has quit [Ping timeout: 268 seconds]
jbjnr_ has quit [Ping timeout: 268 seconds]
nikunj has quit [Ping timeout: 245 seconds]
hkaiser has joined #ste||ar
aserio has joined #ste||ar
hkaiser has quit [Quit: bye]
nikunj has joined #ste||ar
hkaiser has joined #ste||ar
nikunj has quit [Ping timeout: 244 seconds]
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 250 seconds]
K-ballo1 is now known as K-ballo
quaz0r has quit [Ping timeout: 240 seconds]
quaz0r has joined #ste||ar
aserio has quit [Ping timeout: 252 seconds]
aserio has joined #ste||ar
david_pfander has quit [Ping timeout: 272 seconds]
eschnett_ has joined #ste||ar
aserio has quit [Ping timeout: 250 seconds]
aserio has joined #ste||ar
akheir has joined #ste||ar
<heller_>
hkaiser: ha! got the context switching (yield/resume) part down to the cost of two function calls ... for the initial invocation, the problem is the needed indirect call...
<heller_>
which is causing a branch misprediction all the time...
<heller_>
for the yield/resume part, I can actually trick the branch predictor/stream detector of the CPU to actually do perfect jumps
<hkaiser>
cool
<heller_>
that is, the branch miss, cache miss and TLB miss branches actually look sane
<heller_>
as for the TLB ... that probably only kicks in when having tons of different contexts to switch to
<heller_>
so we're getting somewhere ;)
<heller_>
hkaiser: btw, did you get my other email?
<hkaiser>
heller_: the invoice?
<hkaiser>
yah, got that
<heller_>
hkaiser: yes, ok, thanks!
<hkaiser>
heller_: good job!
<heller_>
;)
<heller_>
it's getting interesting once we'll go to multicore...
<hkaiser>
indeed
<hkaiser>
then everything goes out of the window again ;-)
<hkaiser>
gtg now, ttyl
hkaiser has quit [Quit: bye]
<simbergm>
heller_: what magic are you adding to our context switches?
<heller_>
simbergm: tricking the CPU in thinking it's a regular, linear (as in the stack) control flow
<heller_>
simbergm: and also: exploiting the fact that we only have cooperative scheduling
<heller_>
which in turn means, we actually don't have to save all caller-save registers
<heller_>
just ebp and esp (on X86)
<heller_>
so we only move 128bit per stack frame. There are three different routines then: run, yield resume
<heller_>
run has a indirect call (which is causing me headaches right now), and yield and resume are more or less just a "ret" to the previously saved stack frame
<heller_>
we don't need to worry about any other registeres, since the calling convention dictates that the caller of our context switching routines saved all necessary registers upfront
<zao>
Do you need to make any specific effort to make codegen work for this, like disabling stack cookies and other vuln robustness things?
<zao>
Or are you not there yet? ;)
<heller_>
I'd say I am not there yet ;)
<heller_>
i haven't thought about things like spectre or anything
<heller_>
stack cookies should be fully covered
<heller_>
(the stack frame is also set up in such a way, that you get the full backtrace inside of gdb, which we didn't have previously)
<zao>
<3
<heller_>
essentially, it's a full pile of ROP... let's hope that malware detectors won't flag this...
<jbjnr__>
where's hk when you need him
<heller_>
?
eschnett_ has quit [Quit: eschnett_]
hkaiser has joined #ste||ar
hkaiser has quit [Ping timeout: 268 seconds]
aserio has quit [Quit: aserio]
akheir has quit [Remote host closed the connection]