'메모리장벽'에 해당되는 글 1건

  1. 2008.08.28 메모리 장벽 ( memory barrier )

메모리 장벽(Memory Barrier) 이란 무엇인가?


-> 컴파일러 최적화 옵션은 프로그램 실행 속도를 향상하기 위하여 어셈블리 명령어 순서를 바꿀 수 있다. 더 나아가 멀티 프로세서 환경에서는 메모리 접근 순서를 바꿀 수 있다. 메모리 장벽 기초함수(primitive)는 그 이후에 있는 작업을 시작하기 전에 이전에 있는 작업을 끝마치게 한다. 따라서 메모리 장벽은 어떤 어셈블리 명령어도 통과할 수 없는 방화벽과 비슷하다.

메모리 장벽의 역할을 하는 어셈블리 명령어

  • 입출력 포트에 동작하는 모든 명령어
  • lock 접두어가 붙은 모든 명령어
  • 제어 레지스터나 시스템 레지스터, 디버그 레지스터에 쓰는 명령어. ex) eflags의 IF 플래그의 상태를 변하게 하는 cli, sti 명령어
  • 펜티엄4에서 소개된 lfence, sfence, mfence 어셈 명령어
  • 인터럽트나 예외 핸들러를 끝마칠 때 사용하는 iret 명령어

리눅스 메모리 장벽 함수 

 mb() : 멀티프로세서(MP)와 유니프로세서(UP) 모두에서 사용할 수 있는 메모리 장벽
rmb() : MP와 UP에서 모두 사용할 수 있는 읽기용 메모리 장벽
wmb() : MP와 UP에서 모두 사용할 수 있는 쓰기용 메모리 장벽
smp_mb() : MP에서만 사용할 수 있는 메모리 장벽
smp_rmb() : MP에서만 사용할 수 있는 읽기용 메모리 장벽
smp_wmb() : MP에서만 사용할 수 있는 쓰기용 메모리 장벽

 


 

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요