[ CnUnix ] in KIDS 글 쓴 이(By): sang (Grid) 날 짜 (Date): 2005년 8월 4일 목요일 오후 01시 48분 46초 제 목(Title): Re: [Q] I/O에 대한 write buffer 동작 일단, 답변 주신 분들 감사합니다. ^^ 그런데, 짜푸노옹의 답변중 memory mapped I/O는 I/O가 아니라 memory access로 인식한다는건 제 실험 결과와는 상충되는 대목이라 한번 더 짚고 넘어가야 될것 같습니다. 제 실험의 경우, memory map된 I/O 영역에 write를 하면 device에서 제대로 값을 읽는 것으로 나오는데... 따라서, mmory map된 I/O도 caching되지 않고 device로 바로 날아간다고 유추해서 결론지어왔습니다. (제 실험은 타이밍이 매우 중요한 것이라 write된 값이 즉시 device memory에 반영되지 않으면 결과가 제대로 나오지 않습니다. 조금 더 복잡한 메커니즘이 중간에 끼어있지만 간단한 설명을 위해 생략합니다^^) 아무튼, --------------------------------------------------------------> time CPU : write write_buffer_flush read device: read(1) read(2) 하면 read(1)은 가끔 retail data를 읽고, read(2)는 항상 제대로 된 data를 읽어 내는 것을 보면 caching되지 않는다고 생각할 수 있습니다. (위의 실험을 수백만~수천만번 반복되는 real application으로 실험했을때도 정상 동작합니다.) 헉.. 혹시 cache가 write through로 동작하는걸까요? ^^; |