pushl -4(%ebp)명령어는 %ebp-4한 곳에서서 4바이트를
읽어서 스택에 저장하는 명령어로 알고있습니다.
만약 이동작이 여러번 발생한다면....... 계속 메모리를 액세스할까요?
아니면 캐시에서 가져올까요 :oops: :oops:
ps. 이명령어도 궁금합니다.
movl -4(%ebp) , %eax 이것도 메모리액세스를 할까요 아니면 캐시에서 가져올까요.
'모른다' 가 정답입니다. CPU 캐쉬에 뭐가 들어있는지 알 수 있는 방법은 없습니다. 또 CPU에 어떤 내용을 캐쉬하고 있으라고 지정해 줄 수 있는 방법도 없습니다. CPU의 캐쉬는 전적으로 CPU가 관리하고 참조할 뿐입니다. MMU의 TLB와 같은것들은 OS가 관리할 수 있게 하기도 합니다만 통상적으로 어떤 레벨에 존재하는 캐쉬는 해당 레벨에서만 관리/사용 가능하게 하고 그 상, 하위 레벨에서는 관여하지 않습니다.
게다가 CPU가 저 명령어를 실행하기 전에 어떤 명령어를 실행했는지를 알 수가 없습니다. 싱글 CPU, OS 차원의 최고 높은 CPU 권한, 인터럽트 전부 잠금 정도라면 저 명령어들이 계속해서 순차적으로 실행됨을 보장받겠지만 그렇지 않다면 계속해서 context switching이 발생합니다. 캐쉬도 그에 따라 계속 바뀌겠고요.
그래서 research를 하는 경우 분석은 두가지 방법으로 합니다. 하나는 이론, 설계에 기반해서 정확하게 계산을 수행하는 겁니다. 여러가지 가정이 난무하고 복잡한 계산들이 들어가면 분석 결과가 나옵니다. 또 하나는 CPU를 에뮬레이팅 하는 것입니다. 에뮬레이팅 하면서 CPU의 상태를 계속해서 저장하면 캐쉬가 어떻게 사용 되었는지를 실험적으로 알아낼 수 있습니다.
질문의 의도가 캐쉬를 사용해서 성능을 높이고 싶기 때문에 올리신것 같습니다.
volatile은 CPU가 여러개의 경우에 동기화 문제를 줄이기 위해 사용하는 기능이기 때문에
volatile을 사용하게 되면 성능이 떨어지면 떨어졌지 캐쉬를 사용해서 더 빨라 지는 효과는 얻기 어렵다고 생각됩니다.
질문의 의도가 반대라면 (캐쉬를 사용하지 않는) 이야기가 달라지겠습니다만;;
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
Re: pushl -4(%ebp)라는 명령어가 직접 메모리를 액세스한다고
'모른다' 가 정답입니다. CPU 캐쉬에 뭐가 들어있는지 알 수 있는 방법은 없습니다. 또 CPU에 어떤 내용을 캐쉬하고 있으라고 지정해 줄 수 있는 방법도 없습니다. CPU의 캐쉬는 전적으로 CPU가 관리하고 참조할 뿐입니다. MMU의 TLB와 같은것들은 OS가 관리할 수 있게 하기도 합니다만 통상적으로 어떤 레벨에 존재하는 캐쉬는 해당 레벨에서만 관리/사용 가능하게 하고 그 상, 하위 레벨에서는 관여하지 않습니다.
게다가 CPU가 저 명령어를 실행하기 전에 어떤 명령어를 실행했는지를 알 수가 없습니다. 싱글 CPU, OS 차원의 최고 높은 CPU 권한, 인터럽트 전부 잠금 정도라면 저 명령어들이 계속해서 순차적으로 실행됨을 보장받겠지만 그렇지 않다면 계속해서 context switching이 발생합니다. 캐쉬도 그에 따라 계속 바뀌겠고요.
그래서 research를 하는 경우 분석은 두가지 방법으로 합니다. 하나는 이론, 설계에 기반해서 정확하게 계산을 수행하는 겁니다. 여러가지 가정이 난무하고 복잡한 계산들이 들어가면 분석 결과가 나옵니다. 또 하나는 CPU를 에뮬레이팅 하는 것입니다. 에뮬레이팅 하면서 CPU의 상태를 계속해서 저장하면 캐쉬가 어떻게 사용 되었는지를 실험적으로 알아낼 수 있습니다.
volatile이라고 씨에서 선언하면 어떻게 처리할까요...?
volatile이라고 씨에서 선언하면 어떻게 처리할까요...?
i386이라면 항상 캐쉬에서 가져옵니다. 캐쉬에 없으면 가져와서다시
i386이라면 항상 캐쉬에서 가져옵니다. 캐쉬에 없으면 가져와서
다시 캐쉬에서 읽어옵니다. 이러한 부분은 캐쉬기능을 끄지 않는한 계속 그렇게 합니다.
^^ be cool ~
http://fromdj.pe.kr
질문의 의도가 캐쉬를 사용해서 성능을 높이고 싶기 때문에 올리신것 같습니
질문의 의도가 캐쉬를 사용해서 성능을 높이고 싶기 때문에 올리신것 같습니다.
volatile은 CPU가 여러개의 경우에 동기화 문제를 줄이기 위해 사용하는 기능이기 때문에
volatile을 사용하게 되면 성능이 떨어지면 떨어졌지 캐쉬를 사용해서 더 빨라 지는 효과는 얻기 어렵다고 생각됩니다.
질문의 의도가 반대라면 (캐쉬를 사용하지 않는) 이야기가 달라지겠습니다만;;
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
[quote="fromdj"]i386이라면 항상 캐쉬에서 가져옵니다. 캐
Intel CPU에서 캐쉬 기능을 끄고 싶을때 끌수 있는 시스템 콜이 있나요??
일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.
댓글 달기