Cargando…

ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures

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 arch...

Descripción completa

Detalles Bibliográficos
Autores principales: Simner, Ben, Flur, Shaked, Pulte, Christopher, Armstrong, Alasdair, Pichon-Pharabod, Jean, Maranget, Luc, Sewell, Peter
Formato: Online Artículo Texto
Lenguaje:English
Publicado: 2020
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7702243/
http://dx.doi.org/10.1007/978-3-030-44914-8_23
_version_ 1783616574887821312
author Simner, Ben
Flur, Shaked
Pulte, Christopher
Armstrong, Alasdair
Pichon-Pharabod, Jean
Maranget, Luc
Sewell, Peter
author_facet Simner, Ben
Flur, Shaked
Pulte, Christopher
Armstrong, Alasdair
Pichon-Pharabod, Jean
Maranget, Luc
Sewell, Peter
author_sort Simner, Ben
collection PubMed
description 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.
format Online
Article
Text
id pubmed-7702243
institution National Center for Biotechnology Information
language English
publishDate 2020
record_format MEDLINE/PubMed
spelling pubmed-77022432020-12-01 ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures Simner, Ben Flur, Shaked Pulte, Christopher Armstrong, Alasdair Pichon-Pharabod, Jean Maranget, Luc Sewell, Peter Programming Languages and Systems Article 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. 2020-04-18 /pmc/articles/PMC7702243/ http://dx.doi.org/10.1007/978-3-030-44914-8_23 Text en © The Author(s) 2020 Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made. The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
spellingShingle Article
Simner, Ben
Flur, Shaked
Pulte, Christopher
Armstrong, Alasdair
Pichon-Pharabod, Jean
Maranget, Luc
Sewell, Peter
ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
title ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
title_full ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
title_fullStr ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
title_full_unstemmed ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
title_short ARMv8-A System Semantics: Instruction Fetch in Relaxed Architectures
title_sort armv8-a system semantics: instruction fetch in relaxed architectures
topic Article
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7702243/
http://dx.doi.org/10.1007/978-3-030-44914-8_23
work_keys_str_mv AT simnerben armv8asystemsemanticsinstructionfetchinrelaxedarchitectures
AT flurshaked armv8asystemsemanticsinstructionfetchinrelaxedarchitectures
AT pultechristopher armv8asystemsemanticsinstructionfetchinrelaxedarchitectures
AT armstrongalasdair armv8asystemsemanticsinstructionfetchinrelaxedarchitectures
AT pichonpharabodjean armv8asystemsemanticsinstructionfetchinrelaxedarchitectures
AT marangetluc armv8asystemsemanticsinstructionfetchinrelaxedarchitectures
AT sewellpeter armv8asystemsemanticsinstructionfetchinrelaxedarchitectures