Nils Klarlund
Download
Report
Transcript Nils Klarlund
Software checking:
the performance gap
Nils Klarlund
Lucent Technologies
Bell Labs
Advances in symbolic reasoning
Chess
Hardware verification
Software verification
Chess
Did deep insights into chess make
Deep Blue win over Kasparov?
No, in fact, the designers of Deep
Blue bristled publicly when asked
about how artificial intelligence
contributed to their work
Raw computational power won; it’s a
brute force search problem
Hardware verification
Is any abstraction theorem, symbolic
representation, theoretical advance key?
Crunching SAT formulas that arise in
practice is fortuitously an activity that fit
within processor caches (as shown by
Chaff,…)
This means: the insane expense, of several
hundred cycles, of following a pointer is
overcome
We’ve been happily riding Moore’s Law for
what is a search problem
Software verification
Here’s what we typically do:
Make elaborate abstractions that cut
away enormous amounts of information
configuration files, contents of databases,…
Then, repeat
Carry out symbolic computations that
involve hashing, pointers, more hashing,
more pointers,…
Search for a solution, counter example,…
We lost the enormous efficiency of
executing the program
Record & reverse
computations for search?
A modern CPU executes 2Gips
Couldn’t we just record them?
If so, we could maintain a machine
instruction stack for reverse execution that
would allow the original program to become
an “efficient” search algorithm—at least for
depth-first strategies
Why? Restarting a program is very
expensive; stack allows for backtracking
Of course, search space is unimaginably big
Recording & backtracking
has been done for debuggers!
Instrumented code executes only 5
times slower
How much memory:
Say, generate 8 bytes/instruction
16Gb/s
A modern supercomputer could
record several hundred seconds of
computation!
Main points
A software quality approach that never
“goes abstract” from the user’s perspective
Everything is concrete & feasible
A natural extension of testing, one of two
ways in which bugs are found
Integrates with state-of-the art debuggers
Research: how to automatically guide the
search
Static analysis: by constraints, computed from
static analysis; we need assertions, contracts,…
Workflow:formal methods