일반적으로 프리페치가 가능하다는 것은 사용하기 전에 미리 CPU 캐시 라인에 올려 둘 수 있다는 것을 뜻합니다. 그럼 실제로 사용할 때에는 페치를 해올 필요가 없어서 성능이 훨씬 빨라지겠죠? 물론 프리페치 명령 자체의 클럭 소모때문에 경우에 따라서는 성능이 오히려 감소할 때도 있습니다.
그런데 레지스터를 프리페치할 수 있다는 얘기는 무슨 뜻인지...? 레지스터는 항상 CPU안에 있으므로 캐시 라인과 무관하게 동작하는데요.
" 메모리와 I/O공간 사이의 구조적인 차이는 메모리를 미리 가져올 수 있음
(prefetchable)비트를 구현함으로써 제기되었다. PCI 보드에 있는 비디오
메모리와 같은 것은 미리 가져올 수 있는 반면, 제어 레지스터를 메모리 주소
범위로 맵핑하는 주변 장치들은 그 범위를 미리 가져올 수 없는
(non-prefetchable)것으로 선언한다. "
가져온다는 것과 가져올 수 없다는 것의 차이를 질문한것 이었습니다.
PCI 디바이스에서 제어 레지스터의 정확한 크기를 모르기 떄문에 못가져오는
건지 아니면 다른 이유가 있는건지가 궁금하더라구요.
질문이 모호해서 답도 모호하게 하겠습니다. 양해를... 8)일반적
질문이 모호해서 답도 모호하게 하겠습니다. 양해를... 8)
일반적으로 프리페치가 가능하다는 것은 사용하기 전에 미리 CPU 캐시 라인에 올려 둘 수 있다는 것을 뜻합니다. 그럼 실제로 사용할 때에는 페치를 해올 필요가 없어서 성능이 훨씬 빨라지겠죠? 물론 프리페치 명령 자체의 클럭 소모때문에 경우에 따라서는 성능이 오히려 감소할 때도 있습니다.
그런데 레지스터를 프리페치할 수 있다는 얘기는 무슨 뜻인지...? 레지스터는 항상 CPU안에 있으므로 캐시 라인과 무관하게 동작하는데요.
prefetchable
제가 질문한 이야기가 리눅스 디바이스 드라이버에 책이 나오거든요.
" 메모리와 I/O공간 사이의 구조적인 차이는 메모리를 미리 가져올 수 있음
(prefetchable)비트를 구현함으로써 제기되었다. PCI 보드에 있는 비디오
메모리와 같은 것은 미리 가져올 수 있는 반면, 제어 레지스터를 메모리 주소
범위로 맵핑하는 주변 장치들은 그 범위를 미리 가져올 수 없는
(non-prefetchable)것으로 선언한다. "
가져온다는 것과 가져올 수 없다는 것의 차이를 질문한것 이었습니다.
PCI 디바이스에서 제어 레지스터의 정확한 크기를 모르기 떄문에 못가져오는
건지 아니면 다른 이유가 있는건지가 궁금하더라구요.
감사합니다.
댓글 달기