VNA 기기에서 대부분 작업은 컴퓨터가 명령어를 미리 지정된 순서대로 실행하는 직렬화 방식으로 처리되며, 프로세서는 일련의 명령문을 적절한 순서대로 실행하기 위해 시스템 클럭을 사용한다.
시스템 클럭은 주기적으로 0과 1의 값을 생성하는 전자 신호 체계로 컨트롤 버스에 탑재되어 있다. 0과 1을 오가는 속도를 시스템 클럭 주파수 라고 하고, 복귀하는데 걸리는 시간을 클럭 사이클이라고 한다.
대부분의 프로세서는 클럭과의 동기화를 상승 에지, 하강 에지에 작동을 시작한다. 모든 동작은 시스템 클럭과 동기화 되어 있으며, 프로세서는 클럭 실행 속도보다 빠르게 특정 연산을 수행할 수 없다. 다만 특정 클럭 주파수에서 동작한다고 해서 해당 주파수의 연산 수준을 보장하는 것은 아니다. 상당수의 연산이 수 사이클이 소요되며, 실제 프로세서의 연산 속도는 표시된 동작 주파수보다 느린 경우가 많다.
메모리 접근 동작은 시스템 클럭과 동기화 되어 있으며, 각 클럭 사이클 속도에 맞춰 메모리에 접근할 수 있다. 메모리 접근 시간은 메모리에 대한 작업 요청으로 부터 해당 작업이 종료될 때까지 소요되는 되는 클럭 사이클 수다.
프로세서의 연산 속도는 메모리 보다 훨씬 빠르기 때문에 프로세서의 속도를 분산해서 사용하기 위해 두번째 시스템 클럭으로 버스 클럭등을 추가로 사용한다.
대기 상태는 장치가 프로세서에 응답할 때까지 추가로 주어지는 클럭 사이클이다. 프로세서의 속도가 높지만, 메모리가 속도를 뒷받침 해주지 못하면 고성능의 PC를 만들기 어렵다. 그래서 대기 상태를 이용하여 프로세서와 메모리의 성능차이를 극복할 수 있도록 한다.
성능 측면에서 프로세서가 메모리에서 데이터를 기다리는 동안 데이터 사용이 불가능한 대기 상태는 좋지 않기 때문에, 메모리에 접근 할 때마다 대기 상태를 사용하면, CPU클럭을 낮춰서 사용하는 것과 같은 효과가 발생한다. 이런 성능 감소를 줄이기 위한 대표적인 방식이 캐시 메모리이다.
프로그램은 동일한 메모리위치에 반복적으로 접근 하는 경향이 있고, 인접 메모리에도 자주 접근한다. 전자는 시간적 참조 지역성(temporal locality of reference), 후자를 공간적 참조 지역성(spatial locality of reference)이라 한다.
일반적인 프로그램을 분석해보면, 전체 구문중 절반도 수행하지 않는 경향이 있으며, 보통 할당된 메모리의 10~20%만 사용한다고 분석된다. 그렇기 때문에 작고 빠른 캐시 메모리를 사용한다.
캐시 메모리는 일반 메모리와 달리 지정된 주소가 없으며, 동적으로 주소를 할당한다. 최근 접근한 데이터는 캐시 메모리에 유지하고, 프로세서가 한동안 접근하지 않은 주소는 메인 메모리 내부에 저장한다.
프로세서가 메모리에 접근해 캐시에 저장된 경우 캐시 히트라 하고, 이 때는 대기 상태가 발생하지 않는다. 반면 캐시에 저장되어 있지 않아 메인 메모리에 접근해 데이터를 가져오는 경우 캐시 미스라고 한다.
시간적 참조 지역성의 이점을 활용하기 위해서 프로세서는 캐시에 저장되지 않은 주소에 접근하는 경우(cache miss) 항상 해당 주소를 캐시에 추가한다.
cache miss가 발생하는 경우 공간적 참조 지역성의 이점을 살리기 위해 cache line을 사용해 해당 데이터 주소와 수십 바이트를 캐시 라인으로 저장한다.