[[질문]] intel quad core의 l2 cache access time

jungwook의 이미지

안녕하세요?? linux kernel을 공부하다가 문득 궁금한게 생겼는데, 인텔 메뉴얼을 찾아도 도저히 못찾겠네요.
제 컴이 quad core인데 core 마다 l2 cache를 각각 가지고 있는데, 만약 제가 c1, c2, c3, c4가 있다하면
c1이 c2에 있는 l2 cache에 접근하면 c1안에 있는 l2 cache보다 access time이 느릴꺼라고 생각이 되는데,
이런 내용을 찾을려 해도 찾을 수 없네요.

혹시 intel manual에서 보신적 있으시거나 정보있으시면 좀 알려주세요.
그리고 어셈블리어로 이런 test를 할 수 있을까요?
다른 core 내에 있는 cache에 접근하고 이런 부분을..
할 수 있다면 한번 테스트를 해보고 싶은데..
답글 부탁드립니다.

clhitter의 이미지

저도 remote l2 cache access time을 찾아보려고 intel manual을 뒤져본적은 없지만, 혹시나 제가 알고 있는게 도움이 될까 해서 적어봅니다.
c2의 l2 cache에 있는 데이터를 c1이 읽으려고 하면 다음과 같은 일련의 과정을 거치게 됩니다.

1. c1의 l2 cache에 원하는 데이터가 없는 것을 알고 cache miss를 낸다.
2. cache miss가 core들이 연결되어 있는 bus에 broadcasting이 된다.
3. c2의 l2 cache가 bus에 broadcasting된 cache miss signal이 자기가 소유하고 있는 데이터에 대한 것임을 알고 bus에 cache miss reply (with data)를 broadcasting 한다.
4. c1의 l2 cache가 cache miss reply에 있는 데이터를 받아다가 자신의 cache에 쓰고 cache miss를 resolve 한다.
5. 그 이후의 c1의 똑같은 데이터에 대한 access는 다른 core가 그 데이터를 변경하지 않는한 자신의 l2 cache에서 처리됩니다 (l2 cache hit).

이렇게 caching 된 데이터들에 대해서 여러 core 들이 일관된 값들을 읽고 쓸 수 있도록 해주는 걸 cache coherency protocol이라고 하구요, 대부분의 경우에는 (제가 설명한 예제를 포함) shared bus를 사용한 snooping cache coherency protocol을 많이 사용합니다. 더 궁금하시면 computer architecture 책들을 찾아보시면 자세한 설명을 보실 수 있을 겁니다. 제가 설명한 거에서 일부분 틀린 것도 있을 수 있구요 ^^

어쩌면 cache coherency protocol, snooping 같은 검색어로 intel manual을 찾아보면 뭔가 원하는 정보를 얻으실 수도 있겠네요. 혹시 문제가 해결되면 알게된 값좀 알려주시면 감사하겠습니다 :)

jungwook의 이미지

네~ 답변 감사드리고요, 아직 문제가 해결되진 않았지만 좀 더 알아보고 시뮬레이션을 해서 알려드릴께요.
아마 오랜 시간이 걸릴듯하네요. ㅡㅡ;
감사합니다.

parkys1의 이미지

오랜만에 듣는 얘기네요... snoop based protocol...

우선 느려지는건 맞겠죠..

제가 알고 있기론 snoop based protocol은 아주 기본적인 내용(즉, 아주 예전에 나온 내용이죠..)이고,

여기에 directory based protocol도 있습니다.

실제로 AMD Hypertransport기술을 사용하는 processor에서는 snoop을 이용하네요. 이건 2001도에 만들어진

기술이구요. Intel에서는 어떤 기술을 사용하는지 모르겠네요.

암튼 cache coherence에서 snoop based protocol or directory based protocol 기반으로 검색해보시면

검색되지 않을까 생각하네요.

근데 나도 질문..

시뮬레이션 한다고 하셨는데~

어떻게 하시나요? c1에 있는 data가 c2에 없다는것을 guarantee할 수 있나요? 흠...

jungwook의 이미지

답변이 늦었네요. ㅡㅡ;
저도 아직 감은 안오지만 cache를 simulator등을 이용해서 해볼려고 합니다.
simplescalar or simics 등등 여러 simulator가 존재하네요.^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.