CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): zzapuno (정내훈)
날 짜 (Date): 2005년 8월  3일 수요일 오후 12시 15분 18초
제 목(Title): Re: [Q] I/O에 대한 write buffer 동작



memory map된 I/O region에 대해서 write를 수행하고 난 후 read를 할 경우
실제로 device memory에서 읽어올까요 아니면 write buffer에 대기중인 값을
읽어 올까요?
만약, linux on x86 platform을 가정할 경우, write_buffer_flush()를 수행한 

읽어 들이면 device에서 읽어올까요? (x86에서 I/O는 caching 안되는거 맞죠?)

질문이 두서가 없는데.. 제가 알고 싶은 사항을 다시 정리하면
1. CPU의 write buffer에 data가 쌓이고 있을때 그중 하나를 읽는 경우 
source는
   어디인가? (write buffer, cache, device memory, etc)
2. x86에서 I/O의 caching 여부
3. read의 경우 latency가 대충 어느정도 될까?

미리 감사드리며...
---------------------------------------------------------------------------------

 write buffer에서 읽고, write_buffer_flush()함수가 어떻게 구현된것인지를 
 알아야 답을 해드릴 수 있고, X86은 I/O Maped I/O는 caching안하고....

1. Write Buffer에 Data가 있으면 Write Buffer에서 읽습니다. 그렇게 하지 
 않으면 큰일납니다.
2. x86에서 I/O는 caching안합니다. 하지만 CPU는 Memory Mapped I/O를 I/O로
 인식하지 않고 Memory Access로 인식합니다. in, out명령통한 I/O가 CPU가
 인식하는 I/O입니다. (P4인가 Itanium인가 헷갈리는데 Memory Mapped 
 I/O영역을 CPU에 지정해 주는 메카니즘이 있는 Intel CPU도 있습니다.)
3. Wrtie Buffer, Cache, MMU, Memory Chip들이 얽기섥기 얽힌 문제라서 
 그때 그때 다릅니다... RDTSC명령을 사용해서 재보세요 (Instruction이 
 반드시 순서대로 실행되지 않는다는 것에 주의하세요.)
 Write Buffer에 있는 놈을 읽는것이 제일 빠르겠네요. (근데 P4에 write 
 buffer가 있었던가????)



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