캐시 및 장치와 두 가지 문제가 있습니다. 첫 번째 문제는 기본적인 기능적 정확성 중 하나입니다. 즉, 시스템은 일반적으로 캐시를 완전히 우회하는 주소 범위에 장치의 메모리 매핑 레지스터를 배치해야합니다. 이것이 일어나지 않았고 캐시가 "도중에"있다고 상상해보십시오. 이 경우 장치에서 상태 레지스터를 읽으려고하는 소프트웨어가 캐시에서 제공 한 부실 값을 읽습니다! 장치 드라이버를 작동시키는 것이 좋습니다. 일부 CPU는 캐시 할 수없는 액세스에 대한 특별한 지침을 제공하지만 캐시는 아무런 이점도 제공하지 않으며 장치 메모리를 처리 할 때 문제가 복잡해 지므로 기본 결과는 동일합니다.
두 번째 문제는 메모리와 직접 메모리 액세스 (DMA) 트랜잭션을 수행 할 수있는 스마트 장치의 성능 문제입니다. 디바이스가 DMA 쓰기를 수행하면 시스템의 하드웨어 버스 로직은 MESI 프로토콜에 따라 CPU에서 캐시 라인을 완전히 스누핑 (snoop)합니다. 코어는 효율성을 위해 데이터를 긴밀한 캐시에 보관하는 데 크게 의존합니다. 이제는 장치가 모든 캐시 라인을 제거하여 다음 소프트웨어 액세스시 코어가 대기 시간을 길게 다시로드하게 만듭니다. 동일한 스누핑은 대개 CPU가 데이터 라인에 공유 상태를 피하기 때문에 DMA 읽기에서도 발생합니다.
CPU 자체에 통합 된 장치는 CPU의 마지막 레벨 캐시에 상주하는 캐시 라인을 남겨 둘 수 있습니다. 이는 CPU 패키지 외부의 장치에 비해 성능이 크게 향상 될 수 있습니다.