본문 바로가기

Lecture & Column/cpu_lec_col

L3 캐시가 게임성능에 미치는 영향

Author : Daeguen Lee

(Any action violating either CCL policy or copyright laws is strictly prohibited)

 

 

 

그제 BEST CPU FOR GAMERS 12월호를 등록하며 드린 약속을 지키게 되었습니다. 공언했던 새 글을 기한 내에 소개하는 게 참 오랜만입니다. 우선 이 글의 기원에 관해서는 BEST CPU FOR GAMERS 12월호 마지막 문단을 참고해 주시면 되겠습니다.

 

- BEST CPU FOR GAMERS : Dec 2014 : http://iyd.kr/689

 

벤치마크에 대조군으로 활용된 CPU들 중 제온 E3-1226 v3과 코어 i5 4590, 그리고 코어 i3 4350과 i3 4160 사이에는 일정한 공통점이 있습니다. 각각 물리/논리코어 갯수가 동일하며 (앞의 둘은 4코어 4스레드, 뒤의 둘은 2코어 4스레드) 작동 클럭이 같고, 다만 L3 캐시 용량에만 약간의 차이가 있다는 점인데 사실 L2 캐시도 아닌 L3 캐시가 성능에 미치는 영향이 구체적으로 계량화된 사례가 없기에 막연히 '성능 차이가 있긴 하겠지. 하지만 큰 차이는 아닐걸?' 정도로 받아들여져 왔다고 봐도 과언이 아닐 것입니다.

 

실은, 작정하고 이 주제를 다루려 했던 것은 아니었으나 '우연히' 이들 제품들이 현역으로 인텔의 프로세서 라인업의 한 축을 담당하고 있었고, 그렇기에 제 벤치마크 대조군으로 섭외가 되었으며 이들의 성능을 어떤 선입견 없이 공정하게 뽑아 볼 기회를 갖게 되었습니다. 그리고 그 결과는 상당히 흥미로웠습니다. 저 역시 막연히 '별 차이 있겠어? 운 좋으면 소수점 이하 몇퍼센트 차이에, 보통 엎치락뒤치락 하겠지' 라는 생각으로 분석에 착수했기에 더 놀라웠는지도 모르겠습니다. 일단 위 글에 드러난 벤치마크 결과를 그대로 옮겨 보자면 아래 두 장의 그림과 같습니다. 편의상 12종 게임 테스트 결과를 한 장의 그림에 모아 본 것입니다. 위에서부터 1680 x 1050 / 1920 x 1080 해상도에서의 결과입니다.

 

 

 

한 눈에 보더라도 꽤 -의외로- 견조한 경향성이 두드러집니다. 바로 L3 캐시 용량이 더 큰 쪽이 항상 성능이 더 좋다는 것이죠.

사실 캐시란 것이 덮어놓고 다다익선으로 해석해도 큰 무리가 없는 것이라 당연히 'equal or more' 이라란 추측은 가능했지만, 이렇게나 눈에 보일 만한 테스트가 이뤄진 것은 흔치 않을 것입니다. 여기에 착안해, 좀 더 확실히 L3 캐시 용량에 따른 성능 차이를 규명해 보고자 이 글을 기획하게 되었습니다. 자. 벌써부터 흥미진진하지 않나요 ㅋㅋ

 

우선 테스트에 사용한 대조군은 아래와 같습니다.

 

- 인텔 코어 i7 4790K @ 2코어 2스레드 / 코어/언코어 2.9GHz

- 인텔 코어 i5 4690K @ 2코어 2스레드 / 코어/언코어 2.9GHz

- 인텔 코어 i3 4360 @ 2코어 2스레드 / 코어/언코어 2.9GHz

- 인텔 펜티엄 G3258 @ 코어/언코어 2.9GHz

- 인텔 셀러론 G1850

 

대조군 중 셀러론은 있는 그대로의 사양이 2코어 2스레드 / 코어 및 언코어 2.9GHz입니다. 즉 다른 대조군의 사양을 셀러론에 맞춰 테스트를 진행한 것이고, i7의 L3 캐시 용량은 8MB, i5는 6MB, i3은 4MB, 펜티엄은 3MB, 셀러론은 2MB로 L3 캐시 용량의 순차적 차등화가 가능합니다. 그리고 그 결과는 아래와 같습니다. 역시 보시기 편하라고 해상도별 한 장씩으로 묶어 봤습니다.

 

 

 

벤치마크를 하나 하나 진행하며 결과값을 엑셀에 옮겨 적을 때마다 떨리는 마음을 주체할 수 없었......다면 과장일까요. 하지만 실제로 그랬습니다. 그도 그럴 것이 이 주제를 다루는 글이 제가 파악하기로는 국내외 통틀어 이 글이 처음이었기 때문이고, 게다가 굉장히 의미있는 결과들을 보여 주고 있었기 때문입니다.

 

간단히 쓱 훑어보더라도 이미 확실한 경향성이 관찰되었지만, 계량적인 분석을 위해 다시 그래프를 그려 보았습니다.

제가 항상 시도하는 두 분석법 - 총 누적 프레임레이트와 평균 상대성능값 분석입니다.

 

 

 

L3 캐시 용량이 늘어갈 때마다 총 누적 프레임레이트가 거의 등차수열에 가깝게 증가하고 있으며 평균 상대성능값 역시 비교적 일정한 비율로 증가하고 있음을 알 수 있습니다.

 

구체적인 '용량 증가분 vs 성능 향상폭' 에 관해서는 좀 더 뒤에 자세히 다루기로 하고, 일단 지금까지 L3 캐시의 용량에 관해 살펴보았으니 이번에는 L3 캐시의 작동속도와 전체 성능 사이의 상관관계에 대해 알아보도록 하겠습니다.

 

이번의 테스트 역시, BEST CPU FOR GAMERS 12월호 본편에 수록된 대조군들인 펜티엄 G3258과 G3258 @ 4.5GHz가 주연급 조연으로 활약해 주었습니다. 주연이 누구냐고요? 아래 그래프를 보시죠.

 

 

 

펜티엄 G3258의 기본 사양은 코어/언코어 모두 3.2GHz입니다. 이를 4.5GHz로 오버클럭할 때 코어/언코어 모두 4.5GHz로 맞춰 두고 테스트를 진행했는데, 갑자기 든 의문이 '언코어를 3.2GHz로 고정하면 어떨까?' 였습니다. 바로 이 대목에서 이번 실험의 주연이 등장합니다. 바로 코어클럭 4.5GHz / 언코어클럭 3.2GHz로 조합된 펜티엄 G3258입니다.

 

이번 테스트에서도 역시, 예상했다면 충분히 예상 가능한 것이었겠고 예상 밖이라면 예상 밖일수도 있는 결과인데, 언코어클럭에 따른 성능 차이가 확연히 드러나고 있습니다. 몇몇 테스트 항목에서는 거의 코어클럭에 준하는 정도로 성능에 미치는 영향이 크기도 하고 몇몇에서는 아니기도 합니다. 좀 더 자세히 분석해 봅시다.

 

 

 

12개 게임에서의 결과를 종합해 보니 일단 코어보다는 언코어 쪽이 성능에 미치는 영향이 더 작기는 합니다. 구체적으로 언코어를 그대로 둔 채 코어클럭만을 올렸을 때의 성능 향상폭이 15.2%p인데 비해 언코어클럭만을 올렸을 때의 성능 향상폭은 5.9%p, 노멀라이제이션을 거칠 경우 5%p 초반대가 됩니다. 즉 비율로 따지자면 코어 : 언코어 = 3 : 1 정도로 게임성능에 영향을 준다고 볼 수 있겠습니다.

 

이 대목을 어떻게 해석하느냐는 전적으로 개별 사용자들에게 달렸는데, 예컨대 CPU를 오버클럭하던 중 한계치에 도달했다고 느낄 때 보통 언코어클럭을 희생하여 코어클럭을 더 올릴 여력을 확보하는 경우에 대입해볼 수 있겠습니다. 언코어클럭을 100~200MHz 낮추는 대신 코어클럭을 추가로 100MHz 이상 더 올릴 수 있다면 충분히 남는 장사이지만, 언코어클럭을 300MHz 넘게 희생해서도 코어클럭 100MHz를 이끌어 내지 못한다면 차라리 언코어클럭을 그대로 두는 게 낫다... 뭐 이런 결론을 얻을 수 있겠죠.

 

앞선 두 테스트에서 인텔 CPU를 대상으로 벤치마크를 진행했는데, L3 캐시의 베리에이션을 통해 라인업을 쪼개는 것은 AMD에서도 흔히 관찰할 수 있는 일입니다. 이번 테스트는 AMD CPU의 L3 캐시 용량별 성능 비교입니다. 대조군은 아래와 같습니다.

 

- FX 8300 @ 2모듈, 코어 4.0GHz / 언코어 2.0GHz

- FX 4300 @ 코어 4.0GHz / 언코어 2.0GHz

- A10-6800K @ 코어 4.0GHz / 언코어 2.0GHz

 

FX 8000 시리즈는 8MB의 L3 캐시를 가지며, FX 4000 시리즈는 4MB의 L3 캐시를 가지고, 이들과 동일한 파일드라이버 코어를 탑재한 A10 '리치랜드' APU에는 L3 캐시가 없습니다. 즉 위의 대조군들은 각각 파일드라이버 2모듈에 8MB / 4MB / 0MB의 L3 캐시를 얹은 변종들이라 할 수 있겠습니다. 이들의 벤치마크 결과는 아래와 같습니다.

 

 

 

역시, 이번에도 확연한 성능 차이가 드러났습니다.

 

 

 

좀 더 계량적으로 분석해 보니 L3 캐시가 없다가 4MB를 얹어 준 경우 약 7.4%p의 성능 향상이 있었습니다. 반면 4MB의 L3 캐시가 있는 상태에 추가로 4MB를 얹어 8MB를 탑재한 경우에는 성능 향상폭이 감소해 1.5%p의 상승에 그쳤는데, 이 외견상의 수확체감현상에 관해 추가로 나름의 분석을 곁들이며 이 글을 마무리지으려 합니다.

 

우선 인텔 대조군들의 결과를 살펴보면, 캐시 용량이 증가할수록 아주 규칙적인 성능향상이 관측되는 것을 알 수 있습니다. 반면 AMD쪽을 보면 L3캐시가 없는 대조군에서 4MB L3캐시가 있는 대조군으로 이행할 때의 성능향상폭이 4MB L3 대조군에서 8MB L3 대조군으로 이행할 때보다 훨씬 큰 것으로 나타납니다. 직관적으로 생각했을 때 인텔의 캐시 설계가 더 효율적이라 비교적 고용량에 이르기까지 균등한 성능 향상이 나타나고, AMD의 설계가 비효율적이라 4MB~8MB 구간에서 수확체감현상이 나타나는 것이라 여기기 쉽습니다. 하지만 이는 사실이 아닙니다. 오히려 그 반대에 더 가깝다고 할 수 있는데, 결론부터 말하자면 AMD의 캐시 설계정책이 아주 정상적으로 작동했다고 볼 수 있는 결과이고, 덤으로 인텔과 AMD 양사의 캐시 설계 철학의 차이가 어떻게 여기에 반영되었고 & 결과로써 드러났는지, 다뤄 볼 기회까지 운 좋게 얻게 된 상황입니다.

 

일단 4년 전 작성된 이 글을 정독하고 오시기를 권장합니다. 메모리 계층 구조와 성능에 관한 글이고, 마지막 챕터가 지금 이 글에서 다루고 있는 내용을 상당 부분 꿰뚫고 있습니다.

 

- <현대 CPU의 구조 : 메모리 계층 구조와 성능> : http://iyd.kr/202

 

귀찮으실 분들을 위해 간단히 요약하자면, 마지막 파트에서 인텔과 AMD의 캐시 설계정책의 차이를 다루고 있는데 특히 각 계층(level)간의 관계에 있어 인텔이 채택한 방식을 inclusive로, AMD의 방식을 exclusive로 분류할 수 있다는 점입니다. 다른 여러 차이점은 무시하고 가장 함축적으로 둘울 구별하자면, inclusive 방식은 상위 캐시에 저장된 내용은 반드시 하위 캐시에도 있어야 한다는 것이고(즉 내용적으로 상위 캐시가 하위 캐시의 부분집합이 됩니다) exclusive 방식은 반대로 상/하위 캐시가 같은 내용을 공유할 수 없다는 것입니다.

 

다시 말해 inclusive 방식을 적용한 인텔 CPU의 경우, L1 캐시가 아무리 크더라도 L2 캐시에 저장된 내용 이외의 것을 담을 수 없으며, 다시 L2 캐시는 L3 캐시가 가지고 있는 내용에 기속됩니다. 즉 인텔 CPU는 최하위 계층 캐시(last level cache) 용량이 해당 CPU가 캐시 계층 내에 담을 수 있는 전체 용량을 결정하게 됩니다. 앞서 살펴본 L3 캐시가 2MB인 셀러론, 3MB인 펜티엄, 4MB인 코어 i3, 6MB인 i5, 8MB인 i7은 각각 그 용량만큼의 내용만 담을 수 있습니다. 반면 AMD에 적용된 exclusive 캐시의 경우, 모든 계층별 캐시 용량의 총 합이 해당 CPU가 저장해둘 수 있는 용량이 됩니다. 바로 이 점 때문에 대체로 인텔 CPU가 상대적으로 작은 L1/L2 캐시 용량을 갖고, AMD CPU는 상대적으로 큰 L1/L2 캐시를 탑재하는 차이가 발생합니다.

 

하스웰을 예로 들자면 하스웰 코어 1개당 할당된 L1 캐시 용량은 32KB / L2 캐시 용량은 256KB로 코어 하나에 달려 있는 L3 캐시 슬라이스 용량인 2MB에 비해 굉장히 작은 수준입니다. 반면 스팀롤러의 경우, 1개의 모듈에 할당된 L1 캐시 용량이 128KB / L2 캐시 용량이 2MB로 이미 각각 하스웰의 3배 / 8배 수준이지만 L3 캐시는 하스웰과 비슷한 수준입니다. 그러나 캐시 계층 전체에 담을 수 있는 용량을 따지자면 하스웰은 최하위 계층인 L3 캐시의 용량인 2MB가 한계인 반면, 불도저는 L1 128KB + L2 2MB + L3 2MB = 대략 4.1MB 정도를 담을 수 있게 됩니다. 이제 제가 얘기하고자 하는 내용이 무엇인지 감이 오시는지요.

 

앞서 AMD측 실험에 사용된 대조군의 이름을 편의상 "L3 8M" / "L3 4M" / "No L3"으로 구분했지만, 사실 이들이 사용할 수 있는 캐시 용량은 액면 그대로 8 / 4 / 0이 아니었다는 것이죠. L3 캐시가 없더라도 이들에게는 이미 4MB나 되는 L2 캐시가 있었고, 캐시 용량에 따른 성능 변화를 알아보기 위해서는 L3 캐시뿐만이 아닌 L2+L3의 합을 고려해야 합니다. 여기에 입각해 각 대조군의 이름을 다시 붙여보자면,

 

- L3 8M = L2+L3 12M
- L3 4M = L2+L3 8M
- No L3 = L2+L3 4M

 

이와 같을 것입니다. 그렇다면 비교표를 다시 짜 봅시다.

 

인텔은 앞에서 보셨다시피 2MB -> 3MB -> 4MB -> 6MB -> 8MB로 이행하는 내내 균등한 성능향상폭을 보이고 있습니다. 아까는 AMD측 대조군의 성능향상폭을 단순히 이 틀에 끼워넣으려 했던 것인데, 실제 가용 캐시용량을 고려해 보니 인텔로 치면 아래의 전개에 더 가까워 보입니다.

 

- 2MB -> 4MB -> 6MB

 

그리고 마침, 우연의 일치인지는 모르겠으나 위의 전개를 따를 때 성능향상폭은 각각 5.0%p -> 2.8%p (1680 x 1050) / 5.1%p -> 2.0%p (1920 x 1080) 으로 앞서 AMD의 결과를 보았을 때 우리가 수확체감이라 여겼던 증상이 그대로 재현되는 것을 볼 수 있습니다. 적어도 이 증상만큼은 양사의 캐시 정책의 우열에 기인한 게 아니었다는 반증입니다.

 

이상으로 글을 마치겠습니다. 긴 글 읽어 주셔서 감사합니다 :-)

 

//

 

아래 위젯은 일종의 크라우드펀딩 플랫폼인 티스토리 '밀어주기' 서비스 위젯입니다. 100원부터 3000원까지의 범위 내에서 소액기부가 가능하며, 이런 형태의 펀딩이 성공적일 경우 '이해관계자로부터 독립된 벤치마크' 의 지속 가능한 원동력이 되리라 생각합니다. 물론 후원 없이 제 글을 읽어 주시는 것만으로도 저는 독자 여러분께 감사합니다 :)