만약 캐시 일관성(Cache Coherency)이 필요없는 경우라면, PCI-X나 PCI Express에서는 TLP 헤더의 no-snoop 비트를 켜서 캐시를 뒤지지 않도록 할 수 있다. 인텔 GBE는 아래와 같은 경우 Device Control 레지스터와 GCR 레지스터의 NONSNOOP 비트를 통해 no-snoop 비트를 쓸 수 있도록 지원한다:
- TXDSCR_NOSNOOP: 전송 디스크립터 읽기
- TXDSCW_NOSNOOP: 전송 디스크립터 쓰기
- TXD_NOSNOOP: 전송 데이터 읽기
- RXDSCR_NOSNOOP: 수신 디스크립터 읽기
- RXDSCW_NOSNOOP: 수신 디스크립터 쓰기
- RXD_NOSNOOP: 수신 데이터 쓰기
이유는 잘 모르겠지만 윈도우의 경우 PCI Express 드라이버가 No Snoop나 VC Enable 설정을 변경하지 말 것을 요구하고 있다.
Windows PCI Express Driver Requirement:
B2.7.4.2 Device driver for PCI Express device must not modify No Snoop or VC Enable settings. The device driver must not modify either the "Enable No Snoop" bit (PCI Express Base Specification V1.0a, Section 7.8.4, Device Control Register: bit 11) for the device or the "VC Enable" bit (PCI Express Base Specification V1.0a, Section 7.11.7, VC Resource Control Register: bit 31) for any of the device’s extended (non-VC0) virtual channel or channels.
참고 - US Patent 7000078 - System and method for maintaining cache coherency in a shared memory system




덧글