CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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로 동작하는걸까요? ^^;

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.