Bit-level Error Coalescing (BEC) analysis is a static analysis that tracks and classifies the effect of program corruption due to soft errors.
This repository contains an LLVM implementation of BEC and its application to the LLVM instruction scheduler.
If you use the work, please cite our CGO paper:
Yousun Ko and Bernd Burgstaller, "BEC: Bit-Level Static Analysis for Reliability against Soft Errors," 2024 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), Edinburgh, United Kingdom, 2024, pp. 283-295, doi: 10.1109/CGO57630.2024.10444844
@inproceedings{BEC:2024,
author = {Yousun Ko and Bernd Burgstaller},
title = {{BEC:} Bit-Level Static Analysis for Reliability against Soft Errors},
booktitle = {{IEEE/ACM} International Symposium on Code Generation and Optimization},
pages = {283--295},
publisher = {{IEEE}},
year = {2024},
url = {https://doi.org/10.1109/CGO57630.2024.10444844},
doi = {10.1109/CGO57630.2024.10444844},
location = {Edinburgh, United Kingdom},
series = {{CGO} 2024},
}
- Yousun Ko yousun.ko@yonsei.ac.kr
- Bernd Burgstaller bburg@yonsei.ac.kr
The implementation is based on LLVM 16.0.0. Clone the required version of LLVM.
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git checkout tags/llvmorg-16.0.0
Apply patches on top of the repository by using git apply
.
For example, the command below applies the first patch on the repository.
git apply 0001-BEC-Generate-auxiliary-register-infor-in-assembly.patch
Apply patches up to 0005-BEC-RISCV-Add-post-ra-Fault-Index-Coalescer-for-RISC.patch
to obtain the BEC analysis implementation for RISC-V without affecting the instruction scheduler.
The patch 0006-BEC-RISCV-Add-reliability-aware-post-ra-instruction-.patch
enables the vulnerability-aware instruction scheduler to minimize the susceptibility to soft errors based on the BEC analysis.
Apply the patch 0007-BEC-RISCV-Activate-the-worst-reliability-aware-post-.patch
on top of all the other patches to enable the vulnerability-aware instruction scheduler, but to maximize the susceptibility to soft errors.
Find the Getting Started with the LLVM System page for further information on how to build and install LLVM from source code.