pushl -4(%ebp)라는 명령어가 직접 메모리를 액세스한다고 보?

anony의 이미지

pushl -4(%ebp)명령어는 %ebp-4한 곳에서서 4바이트를
읽어서 스택에 저장하는 명령어로 알고있습니다.
만약 이동작이 여러번 발생한다면....... 계속 메모리를 액세스할까요?
아니면 캐시에서 가져올까요 :oops: :oops:

ps. 이명령어도 궁금합니다.
movl -4(%ebp) , %eax 이것도 메모리액세스를 할까요 아니면 캐시에서 가져올까요.

cocas의 이미지

anony wrote:
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의 상태를 계속해서 저장하면 캐쉬가 어떻게 사용 되었는지를 실험적으로 알아낼 수 있습니다.

anony의 이미지

volatile이라고 씨에서 선언하면 어떻게 처리할까요...?

fromdj의 이미지

i386이라면 항상 캐쉬에서 가져옵니다. 캐쉬에 없으면 가져와서
다시 캐쉬에서 읽어옵니다. 이러한 부분은 캐쉬기능을 끄지 않는한 계속 그렇게 합니다.

^^ be cool ~
http://fromdj.pe.kr

쌀밥의 이미지

질문의 의도가 캐쉬를 사용해서 성능을 높이고 싶기 때문에 올리신것 같습니다.
volatile은 CPU가 여러개의 경우에 동기화 문제를 줄이기 위해 사용하는 기능이기 때문에
volatile을 사용하게 되면 성능이 떨어지면 떨어졌지 캐쉬를 사용해서 더 빨라 지는 효과는 얻기 어렵다고 생각됩니다.

질문의 의도가 반대라면 (캐쉬를 사용하지 않는) 이야기가 달라지겠습니다만;;

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

쌀밥의 이미지

fromdj wrote:
i386이라면 항상 캐쉬에서 가져옵니다. 캐쉬에 없으면 가져와서
다시 캐쉬에서 읽어옵니다. 이러한 부분은 캐쉬기능을 끄지 않는한 계속 그렇게 합니다.

Intel CPU에서 캐쉬 기능을 끄고 싶을때 끌수 있는 시스템 콜이 있나요??

일하는 사람들의 희망 민주노동당 : http://www.kdlp.org
반공 교육의 성과로, 민주주의의 반대가 공산주의(또는 사회주의)라고 생각하는 사람이 많다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.