심심해서 하는 블로그 :: [컴퓨터 구조] 캐시와 성능

캐시와 성능

CPU에서 캐시로 접근하는 시간을 Tc, 메인 메모리에 접근하는 시간을 Tm이라고 하였을 때 

1) 캐시가 없는 경우 : Tm

2) 캐시가 있는 경우 : T = h x Tc + ( 1 - h )(Tm + Tc) = Tc + (1-h) Tm 으로 각각 표현이 가능하다. 


여기서 h는 hit ratio(적중률) CPU가 요청한 내용을 캐시 메모리가 가지고 있을 확률을 의미한다.

일반적으로 Tc와 Tm을 비교하면 10배이상 차이가 나므로 적중률을 높여서 전체 시간중에 메모리에 있는 시간을 줄여야한다. 


라인의 크기를 키우자

이미 데이터의 지역성을 통하여, 보통 원하는 Word외에 인접한 데이터까지 한꺼번에 가져와서 미리 준비를 하여 성능 향상을 노린다는 점이다.  처음에는 이 논리에 의하여 성능이 향상되지만 어느 정도 크기가 커지면 적중률이 오히려 떨어지는 현상이 발생한다. 캐시 내에 가져온 데이터를 재사용하기 전에 다른 데이터를 가져오기 위해서 캐시에서 제거해야 하기 때문이다.


다단계 캐시

회로의 밀도가 높아짐에 따라 캐시를 프로세서 안에 두는 것이 가능해졌다. 기존에는 공용 선인 버스를 활용하여 데이터를 주고 받았지만 이제 하나의 칩 안에서 프로세서와 공존하므로 버스를 사용할 필요가 없어 졌다. 따라서 캐시와 프로세서간의 데이터가 오가는 동안 버스는 다른 전송을 할 수 있어지고 캐시는 버스를 기다릴 필요가 없어져서 시스템의 성능을 향상시킬 수 있다. 보통 3단계 캐시를 사용하고 L1, L2 캐시는 내부에 L3 캐시는 외부에 존재한다. 이들을 사용하여 효율을 볼려면 L1, L2의 적중률이 달려있다.


분리 캐시

기존의 캐시는 명령어와 Data를 구별하지 않고 무조건 저장하는 통합 캐시를 사용하였으나 명령어 패치와 데이터 패치 사이에 경쟁이 발생하는 것을 줄이기 위해 L1캐시의 경우 Data와 명령어를 분리하는 캐시를 사용한다.  이는 CPI(Clock cycle Per Instruction)를 파이프라인을 통해 줄여서 컴퓨터의 성능을 높혀준다. 

,