-
Notifications
You must be signed in to change notification settings - Fork 170
Benchmarks for weak memory models #1297
Comments
@leventeBajczi I took a look to the bell extensions but it is not very clear to me how we can use this to define hardware fences at the C level. For example, this is part of the Linux Kernel memory model bell file
My understanding for this is that e.g. While I kind of see how this fits in the whole CAT framework, I'm not sure how we could use this for svcomp and C files. Can you please elaborate what you had in mind? |
I might be wrong, but I think for example R[once], W[release], F[wmb], etc will be the new instructions. My idea was to use this specification to create specific instructions (or events) which can be used in the CAT specification, should we choose to formalize the memory model in that language. Then, macros or functions can be defined to use these instructions. For example, let's say we want to create a lightweight and a heavyweight fence instruction, which can be referred to as F[light] and F[heavy]. In the memory models, a specific semantics can be assigned to these events (different per model, if it is necessary), and in the C files they can appear as __F_light() and __F_heavy(). Without such a bell file, we could only use instructions that appear in a specific architecture (but I might be mistaken). This way, we could achieve two things:
Of course, the usefulness of this approach depends on the use of the cat specification language for memory models - if another language is used, this complicates things unnecessarily. |
I had a chat with one of my colleagues yesterday and I think now I have a better understanding of how to interpret these bell files. This is how I currently understand it (@ThomasHaas feel free to correct me if I'm wrong). The CAT language only has 4 different types of (abstract) instructions: R (reads), W (writes), RMW (read-modify-write) and F (fences). By allowing tags (those defined in an enum type) it allows to create more concrete instructions. E.g.
tells us that we have a
The semantics of new instructions are covered by the CAT file. E.g. for TSO-x86 we have
and I assume
All the above means that we will have an I think we can have an agreement to use extern C functions with names
For x86-TSO we would have a "C instruction" (actually a function)
we know that instructions |
This issue is to keep track of discussions about adding new benchmarks to the repository exposing weak memory behaviours and the creation of a new SVCOMP category for weak memory models.
On 25/04/2021 we had a meeting to discuss the step forward. The following people participated:
In that meeting we agreed on the following:
Topics that are still open for discussion:
The text was updated successfully, but these errors were encountered: