TY - JOUR
T1 - COATCheck
T2 - Verifying memory ordering at the hardware-OS interface
AU - Lustig, Daniel
AU - Sethi, Geet
AU - Martonosi, Margaret
AU - Bhattacharjee, Abhishek
N1 - Publisher Copyright:
© 2016 ACM.
PY - 2016/4
Y1 - 2016/4
N2 - Modern computer systems include numerous compute elements, from CPUs to GPUs to accelerators. Harnessing their full potential requires well-defined, properly-implemented memory consistency models (MCMs), and low-level system functionality such as virtual memory and address translation (AT). Unfortunately, it is difficult to specify and implement hardware-OS interactions correctly; in the past, many hardware and OS specification mismatches have resulted in implementation bugs in commercial processors. In an effort to resolve this verification gap, this paper makes the following contributions. First, we present COATCheck, an address translation-aware framework for specifying and statically verifying memory ordering enforcement at the microarchitecture and operating system levels. We develop a domain-specific language for specifying ordering enforcement, for including ordering-related OS events and hardware micro-operations, and for programmatically enumerating happens-before graphs. Using a fast and automated static constraint solver, COATCheck can efficiently analyze interesting and important memory ordering scenarios for modern, high-performance, out-of-order processors. Second, we show that previous work on Virtual Address Memory Consistency (VAMC) does not capture every translation-related ordering scenario of interest, and that some such cases even fall outside the traditional scope of consistency. We therefore introduce the term transistency model to describe the superset of consistency which captures all translation-aware sets of ordering rules.
AB - Modern computer systems include numerous compute elements, from CPUs to GPUs to accelerators. Harnessing their full potential requires well-defined, properly-implemented memory consistency models (MCMs), and low-level system functionality such as virtual memory and address translation (AT). Unfortunately, it is difficult to specify and implement hardware-OS interactions correctly; in the past, many hardware and OS specification mismatches have resulted in implementation bugs in commercial processors. In an effort to resolve this verification gap, this paper makes the following contributions. First, we present COATCheck, an address translation-aware framework for specifying and statically verifying memory ordering enforcement at the microarchitecture and operating system levels. We develop a domain-specific language for specifying ordering enforcement, for including ordering-related OS events and hardware micro-operations, and for programmatically enumerating happens-before graphs. Using a fast and automated static constraint solver, COATCheck can efficiently analyze interesting and important memory ordering scenarios for modern, high-performance, out-of-order processors. Second, we show that previous work on Virtual Address Memory Consistency (VAMC) does not capture every translation-related ordering scenario of interest, and that some such cases even fall outside the traditional scope of consistency. We therefore introduce the term transistency model to describe the superset of consistency which captures all translation-aware sets of ordering rules.
KW - Address translation
KW - Computer architecture
KW - Memory consistency models
KW - Verification
KW - Virtual memory
UR - http://www.scopus.com/inward/record.url?scp=85038867054&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85038867054&partnerID=8YFLogxK
U2 - 10.1145/2872362.2872399
DO - 10.1145/2872362.2872399
M3 - Article
AN - SCOPUS:85038867054
SN - 1523-2867
VL - 51
SP - 233
EP - 247
JO - ACM SIGPLAN Notices
JF - ACM SIGPLAN Notices
IS - 4
ER -