cache 와 메모리간 데이터 일치

pgh5247의 이미지

안녕하세요..

리눅스 Application을 구현중인데요...

file에서 데이터를 읽어서 DDR memory에 write해두고 특정 H/W에서 이를 읽어서 처리하는 프로그램을 구현하고 있습니다.

file에서 모든 데이터를 읽고..이를 memory에 썼는데 H/W에서 제대로 읽지를 못합니다....

CPU에서 memory에 데이터를 기록할 때 cache에 저장해두는 걸로 아는데요...

혹 cache에 들어가 있는 데이터를 모두 memory로 기록하게 하는 명령어 혹은 방법은 없을까요?

커널을 만들때 아예 cache를 사용하지 않게 한다던지...아니면 cache에 있는 data를 memory에 기록하게 하는 system 명령어라든지..API라든지.... 아시는 분 좀 알려주세요...

ifree의 이미지

말씀하시는 문제는 캐시의 문제가 아닌것 같은데요.
캐시에 쓰면서 메모리에도 같이 써지기 때문에 굳이 캐시를 건드릴 필요가 없습니다.

snowall의 이미지

쓰기 캐시의 경우 실제로 장치에 쓰기 전에 잠깐 보관해서 쓰기 성능을 높이는 일을 하죠. 만약 이게 문제가 된다면 H/W가 잠시 기다려 주면 됩니다. 그런데 램에 쓰기 캐시를 쓰는게 무슨 의미가 있을지 모르겠네요. 아마 안 쓸겁니다..
이건 실제로 장치에 기록되지는 않았지만 실제로 기록된 것 처럼 행동하므로, 응용프로그램이라면 메모리에 있는 내용을 읽어가려고 할 때 커널이나 CPU에서 캐시에 있는 내용을 가져다 줄 겁니다. H/W에서 직접 읽어간다고 해서 혹시나 싶네요.

읽기 캐시의 경우 장치에 있는걸 읽어오는 것이고, 캐시에 올라갔다고 해서 장치에서 소거하지는 않으므로 이건 문제가 될 수 없습니다.

CPU와 램의 통신에서 사용하는 캐시는 CPU내부에 있는 것들인데, 이걸 쓰지 못하게 하려면 아마 BIOS나 UEFI수준에서 건드려야 할 겁니다.

피할 수 있을때 즐겨라! http://melotopia.net/b

jick의 이미지

캐시가 정말로 문제라면 linux kernel 관련 문서에서 I/O memory barrier를 주제로 찾아보시면 도움이 될지도 모르겠습니다.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.