Skip to content

About Failure-Atomic Segment Split #10

Description

@skyelves

CCEH/src/CCEH_MSB.cpp

Lines 345 to 355 in 46771e3

for(int i=0; i<stride/2; ++i){
dir->_[loc+stride/2+i] = s[1];
}
#ifdef INPLACE
clflush((char*)&dir->_[loc+stride/2], sizeof(void*)*stride/2);
#else
for(int i=0; i<stride/2; ++i){
dir->_[loc+i] = s[0];
}
clflush((char*)&dir->_[loc], sizeof(void*)*stride);
#endif

Hi, I have a question about Failure-Atomic Segment Split. In your paper, you states that
we update the directory entries from right to left. The ordering of these updates must be enforced by inserting an mfence instruction in between each instruction. Also, we must call clflush when it crosses the boundary of cache- lines.

However, here you just update the directory from the left to right without fence and just call clflush at last. I wonder if there is anything wrong about my understanding of your paper or your codes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions