SyntaxHighlighter.all();

[설명]

clflush는 x86 instruction set reference중 하나로 intel c/c++ 컴파일러의 내장 함수로서 사용할 수 있습니다.

 

clflush는 프로세서의 모든 레벨의 캐시에서 피연산자로 지정된 주소를 포함하는 캐시라인을 제거합니다.

* 전부 삭제하는 것이 아니라 파라미터로 넘겨진 주소만 해당된다.

 

clflush 명령어는 모든 권한수준에서 사용할 수 있는 명령어입니다.

 

[동작]

프로세서가 clflush 명령어를 통해 받아온 메모리 주소를 수신한다. 이후 해당 주소가 캐시에 존재하는지 식별합니다.

만약 메모리 주소가 식별되면, 해당 주소는 캐시에서 제거(flush)합니다.

 

[참고]

- cache coherency (캐시 일관성)

 

각 프로세서별로 별도의 캐시 메모리를 가지고 있는 공유 메모리 멀티프로세서에서, 한 명령어 피연산자의 복제본이 주기억장치에 하나, 그리고 각 코어의 캐시 메모리에 하나씩, 여러 개 존재할 수 있습니다.  이러한 상황에서 피연산자가 변경되면, 나머지 복제본 역시 반드시 변경되어야만 합니다.

  즉, 캐시 일관성은 공유된 피연산자의 값이 변경되면, 그 사실이 전체 캐시에 즉시 전파되어 일관성을 유지하는 규칙입니다.

 

 * 캐시일관성을 유지하는 프로토콜은 MSI, MESI, 시냅스, 버클리 프로토콜 등이 있다.

 

반응형

+ Recent posts