2022.02.27

Abstract

Sail的目的

Our model is expressed in a mathematically rigor- ous language that can be automatically translated to an executable test-oracle tool; this lets one either inter- actively explore or exhaustively compute the set of all allowed behaviours of intricate test cases, to provide a reference for hardware and software development.

Intro

尽管[3, 4]做得很好了,“我们”做的比[3, 4]更好。

在[3]上做了拓展。 做出的新贡献:

  1. 并发和ISA之间的接口
  2. Sail语言(描述ISA)
  3. 重新整理ISA文档
  4. 拓展前人的并发模型[3]
  5. Test-Oracle Tool(生成可执行模型?[21]?)
  6. 测试了本工作的正确性

1.5 Lem

Lem是个语法框架[21]。

2 ISA/Concurrency Interface

如何正确地关联ISA和并发。 ISA描述能够正确地导出已知的并发现象。

2.1.1 No single program point

乱序和猜测执行造成。 例子:MP+sync+ctrl 解决:正在执行的指令树结构。

2.1.2 No per-thread register state

寄存器重命名造成。 例子:MP+sync+rs 解决:需要树结构

2.1.3 Register self-reads???

2.1.4 Dependencies and register granularity

位操作寄存器,位操作指令

2.1.5 Reading from uncommitted instructions

2.1.6 Non-atomic intra-instruction semantics for register reads

指令执行并非3阶段: not started, fully executed but not committed, committed

stw RS,D(RA):算出EA后,若和后续写指令地址X相关,则X可以提前。

2.1.7 Undefined values

2.2 The ISA semantics interface

Lem

3. Sail: ISA Definition Language

相关工作:

  • gem5, QEMU中间表示
  • Fox [23] for ARM in his L3 IDL
  • [24] for x86 in ACL2

现有的ISA描述语言不能处理弱内存一致性的ISA和并发之间的关系。