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...
Autores principales: | , , , , , , |
---|---|
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 |