Shaked Flur

dblp:118/0095 · DBLP profile ↗
← Back
8ranked-venue papers
2as first author
0since 2021 · last 2020
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 8 · 2 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
4 papers
Concurrent programming · 60% Programming languages and type systems · 36% Program verification · 4%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Processor architecture and microarchitecture · 64% Memory systems · 36%

Topics — the 9 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
memory models
1.032020
Repairing and mechanising the JavaScript relaxed memory model · PLDI 2020
Mixed-size concurrency: ARM, POWER, C/C++11, and SC · POPL 2017
Modelling the ARMv8 architecture, operationally: concurrency and ISA · POPL 2016
Concurrent programming › memory models
weak memory models
0.722020
Repairing and mechanising the JavaScript relaxed memory model · PLDI 2020
Mixed-size concurrency: ARM, POWER, C/C++11, and SC · POPL 2017
Processor architecture and microarchitecture
instruction set architecture
0.622019
ISA semantics for ARMv8-a, RISC-v, and CHERI-MIPS · Proc. ACM Program. Lang. 2019
Modelling the ARMv8 architecture, operationally: concurrency and ISA · POPL 2016
Memory systems › memory consistency
memory consistency model
0.622018
Simplifying ARM concurrency: multicopy-atomic axiomatic and operational models for ARMv8 · Proc. ACM Program. Lang. 2018
Modelling the ARMv8 architecture, operationally: concurrency and ISA · POPL 2016
Programming languages and type systems
language semantics
0.412020
Repairing and mechanising the JavaScript relaxed memory model · PLDI 2020
Programming languages and type systems › language semantics
formal semantics
0.412019
ISA semantics for ARMv8-a, RISC-v, and CHERI-MIPS · Proc. ACM Program. Lang. 2019
Programming languages and type systems › language semantics › formal semantics
operational semantics
0.212016
Modelling the ARMv8 architecture, operationally: concurrency and ISA · POPL 2016
Program verification
mechanized verification
0.112020
Repairing and mechanising the JavaScript relaxed memory model · PLDI 2020
Concurrent programming › memory models › weak memory models
c11 memory model
0.112017
Mixed-size concurrency: ARM, POWER, C/C++11, and SC · POPL 2017

Methods — techniques the papers use, named apart from their topics

operational semantics · 1.1sail · 0.8proof-assistant definitions · 0.8emulator generation · 0.8litmus testing · 0.5dependent type system · 0.5mechanization · 0.4axiomatic memory model · 0.4equivalence proof · 0.3axiomatic semantics · 0.3
YearPublicationVenuePosition
2020 ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
abstract
Abstract Computing relies on architecture specifications to decouple hardware and software development. Historically these have been prose documents, with all the problems that entails, but research over the last ten years has developed rigorous and executable-as-test-oracle specifications of mainstream architecture instruction sets and “user-mode” concurrency, clarifying architectures and bringing them into the scope of programming-language semantics and verification. However, the system semantics, of instruction-fetch and cache maintenance, exceptions and interrupts, and address translation, remains obscure, leaving us without a solid foundation for verification of security-critical systems software. In this paper we establish a robust model for one aspect of system semantics: instruction fetch and cache maintenance for ARMv8-A. Systems code relies on executing instructions that were written by data writes, e.g. in program loading, dynamic linking, JIT compilation, debugging, and OS configuration, but hardware implementations are often highly optimised, e.g. with instruction caches, linefill buffers, out-of-order fetching, branch prediction, and instruction prefetching, which can affect programmer-observable behaviour. It is essential, both for programming and verification, to abstract from such microarchitectural details as much as possible, but no more. We explore the key architecture design questions with a series of examples, discussed in detail with senior Arm staff; capture the architectural intent in operational and axiomatic semantic models, extending previous work on “user-mode” concurrency; make these models executable as test oracles for small examples; and experimentally validate them against hardware behaviour (finding a bug in one hardware device). We thereby bring these subtle issues into the mathematical domain, clarifying the architecture and enabling future work on system software verification.
Ben Simner, Shaked Flur, Christopher Pulte, Alasdair Armstrong, Jean Pichon-Pharabod, Luc Maranget, Peter Sewell
ESOP2
2020 Repairing and mechanising the JavaScript relaxed memory model
abstract
Modern JavaScript includes the SharedArrayBuffer feature, which provides access to true shared memory concurrency. SharedArrayBuffers are simple linear buffers of bytes, and the JavaScript specification defines an axiomatic relaxed memory model to describe their behaviour. While this model is heavily based on the C/C++11 model, it diverges in some key areas. JavaScript chooses to give a well-defined semantics to data-races, unlike the "undefined behaviour" of C/C++11. Moreover, the JavaScript model is mixed-size. This means that its accesses are not to discrete locations, but to (possibly overlapping) ranges of bytes.
Conrad Watt, Christopher Pulte, Anton Podkopaev, Guillaume Barbier, Stephen Dolan, Shaked Flur, Jean Pichon-Pharabod, Shu-yu Guo
PLDI6
2019 ISA semantics for ARMv8-a, RISC-v, and CHERI-MIPS
abstract
Architecture specifications notionally define the fundamental interface between hardware and software: the envelope of allowed behaviour for processor implementations, and the basic assumptions for software development and verification. But in practice, they are typically prose and pseudocode documents, not rigorous or executable artifacts, leaving software and verification on shaky ground. In this paper, we present rigorous semantic models for the sequential behaviour of large parts of the mainstream ARMv8-A, RISC-V, and MIPS architectures, and the research CHERI-MIPS architecture, that are complete enough to boot operating systems, variously Linux, FreeBSD, or seL4. Our ARMv8-A models are automatically translated from authoritative ARM-internal definitions, and (in one variant) tested against the ARM Architecture Validation Suite. We do this using a custom language for ISA semantics, Sail, with a lightweight dependent type system, that supports automatic generation of emulator code in C and OCaml, and automatic generation of proof-assistant definitions for Isabelle, HOL4, and (currently only for MIPS) Coq. We use the former for validation, and to assess specification coverage. To demonstrate the usability of the latter, we prove (in Isabelle) correctness of a purely functional characterisation of ARMv8-A address translation. We moreover integrate the RISC-V model into the RMEM tool for (user-mode) relaxed-memory concurrency exploration. We prove (on paper) the soundness of the core Sail type system. We thereby take a big step towards making the architectural abstraction actually well-defined, establishing foundations for verification and reasoning.
Alasdair Armstrong, Thomas Bauereiß, Brian Campbell 0001, Alastair Reid 0001, Kathryn E. Gray, Robert M. Norton, Prashanth Mundkur, Mark Wassell, Jon French, Christopher Pulte, Shaked Flur, Ian Stark, Neelakantan R. Krishnaswami, Peter Sewell
Proc. ACM Program. Lang.11
2018 Simplifying ARM concurrency: multicopy-atomic axiomatic and operational models for ARMv8
abstract
ARM has a relaxed memory model, previously specified in informal prose for ARMv7 and ARMv8. Over time, and partly due to work building formal semantics for ARM concurrency, it has become clear that some of the complexity of the model is not justified by the potential benefits. In particular, the model was originally non-multicopy-atomic : writes could become visible to some other threads before becoming visible to all — but this has not been exploited in production implementations, the corresponding potential hardware optimisations are thought to have insufficient benefits in the ARM context, and it gives rise to subtle complications when combined with other ARMv8 features. The ARMv8 architecture has therefore been revised: it now has a multicopy-atomic model. It has also been simplified in other respects, including more straightforward notions of dependency, and the architecture now includes a formal concurrency model. In this paper we detail these changes and discuss their motivation. We define two formal concurrency models: an operational one, simplifying the Flowing model of Flur et al., and the axiomatic model of the revised ARMv8 specification. The models were developed by an academic group and by ARM staff, respectively, and this extended collaboration partly motivated the above changes. We prove the equivalence of the two models. The operational model is integrated into an executable exploration tool with new web interface, demonstrated by exhaustively checking the possible behaviours of a loop-unrolled version of a Linux kernel lock implementation, a previously known bug due to unprevented speculation, and a fixed version.
Christopher Pulte, Shaked Flur, Will Deacon, Jon French, Susmit Sarkar, Peter Sewell
Proc. ACM Program. Lang.2
2017 Mixed-size concurrency: ARM, POWER, C/C++11, and SC
abstract
Previous work on the semantics of relaxed shared-memory concurrency has only considered the case in which each load reads the data of exactly one store. In practice, however, multiprocessors support mixed-size accesses, and these are used by systems software and (to some degree) exposed at the C/C++ language level. A semantic foundation for software, therefore, has to address them.
Shaked Flur, Susmit Sarkar, Christopher Pulte, Kyndylan Nienhuis, Luc Maranget, Kathryn E. Gray, Ali Sezgin, Mark Batty, Peter Sewell
POPL1
2016 Modelling the ARMv8 architecture, operationally: concurrency and ISA
abstract
In this paper we develop semantics for key aspects of the ARMv8 multiprocessor architecture: the concurrency model and much of the 64-bit application-level instruction set (ISA). Our goal is to clarify what the range of architecturally allowable behaviour is, and thereby to support future work on formal verification, analysis, and testing of concurrent ARM software and hardware. Establishing such models with high confidence is intrinsically difficult: it involves capturing the vendor's architectural intent, aspects of which (especially for concurrency) have not previously been precisely defined. We therefore first develop a concurrency model with a microarchitectural flavour, abstracting from many hardware implementation concerns but still close to hardware-designer intuition. This means it can be discussed in detail with ARM architects. We then develop a more abstract model, better suited for use as an architectural specification, which we prove sound w.r.t.~the first. The instruction semantics involves further difficulties, handling the mass of detail and the subtle intensional information required to interface to the concurrency model. We have a novel ISA description language, with a lightweight dependent type system, letting us do both with a rather direct representation of the ARM reference manual instruction descriptions. We build a tool from the combined semantics that lets one explore, either interactively or exhaustively, the full range of architecturally allowed behaviour, for litmus tests and (small) ELF executables. We prove correctness of some optimisations needed for tool performance. We validate the models by discussion with ARM staff, and by comparison against ARM hardware behaviour, for ISA single- instruction tests and concurrent litmus tests.
Shaked Flur, Kathryn E. Gray, Christopher Pulte, Susmit Sarkar, Ali Sezgin, Luc Maranget, Will Deacon, Peter Sewell
POPL1
2015 Termination proofs for linear simple loops
Hong Yi Chen, Shaked Flur, Supratik Mukhopadhyay
Int. J. Softw. Tools Technol. Transf.2
2012 Termination Proofs for Linear Simple Loops
Hong Yi Chen, Shaked Flur, Supratik Mukhopadhyay
SAS2