본문 바로가기

Benchmark/cpu_bench

램타이밍 벤치마크 : 램타이밍 8종 끝장 분석

Author : Daeguen Lee

(Any action violating either copyright laws or CCL policy of the original source is strictly prohibited)

 

※ 영문 버전은 다음 링크에서 보실 수 있습니다 : http://iyd.kr/348


 


1. 서론

지금 여러분이 사용하고 있는 램의 사양을 설명하려면 어떤 수치를 언급해야 할까요?

가장 먼저 생각나는 단위는 램의 용량일 것이고, 그 밖으론 램의 규격, 작동속도... 사실 여기까지 언급했다면 더 자세한 수치를 동원하지 않아도 여러분의 램이 어느 수준인지 효율적으로 설명할 수 있습니다. 그렇지만 여기에서 더 나아가자면 필연적으로 램의 세부적인 작동을 결정짓는 '램 타이밍'이란 항목을 만나게 됩니다.

흔히 메모리 제조사에서는 위에서 언급한 용량, 규격, 작동속도 외에도 램 타이밍 항목 중 유명한 몇몇 값을 미리 알려주는데 아마 여러분은 "CL"이란 단어나 9-9-9-24 따위의 네 마디 숫자열을 본 기억이 있으실 겁니다.

보통 9-9-9-24 같은 네 마디 숫자열은 맨 왼쪽 마디의 "CL"값을 필두로, 각각 tRCD-tRP-tRAS라는 램 타이밍의 값을 나타냅니다. 즉 CL-tRCD-tRP-tRAS는 비교적 널리 알려진 램 타이밍 항목이라 할 수 있죠. 하지만 이들 네 항목만이 존재하느냐 하면 그건 아닙니다. 앞의 네가지보다 훨씬 더 많은 세부 항목이 존재하고, 각각이 나름의 비중으로 램 성능에 영향을 주고 있죠.

이 벤치에서는 우리가 흔히 접하는 네가지 램 타이밍 외에도 잘 알려지지 않은 (하지만 메인보드상에서 설정 가능한) 세부 항목까지, 각 램 타이밍 값의 변화가 어떻게 성능에 영향을 미치는지 알아보도록 하겠습니다.


2. 테스트 내용

테스트 대상은 위에서 언급한 네가지 램 타이밍(CL-tRCD-tRP-tRAS)에 아래의 네가지를 포함합니다.

- Command Rate
- tRC
- tRFC
- tREF

각 램 타이밍 항목이 의미하는 것에 대해선 나중에 따로 설명하는 포스팅을 작성하도록 하겠습니다^^;
오늘은 각 항목의 변화가 어떻게 전체 성능을 변화시키는지만을 알아보도록 하죠.
여러분에게 친숙한 Super PI, Everest, 그리고 간단한 비디오 인코딩을 통해

- 원주율(파이)값을 소수점 이하 3,200만 자리까지 계산하는 데 걸리는 시간
- 메모리 대역폭
- 메모리 레이턴시
- 인코딩 시간

등을 측정할 것입니다.


3. 테스트 시스템

테스트에 사용한 시스템은 아래와 같습니다.

- CPU: AMD Phenom II X6 1090T Black Edition @ 4.0GHz / NB 2.75GHz
- M/B: ASUS M4A89GTD PRO/USB3
- RAM: G.SKILL PIS DDR3 PC3-19200 CL9 2GB x 2EA @ 2.0GHz
- Storage: Intel X25-M G2 MainStream SATA SSD 80GB
- PSU: PC Power & Cooling Silencer 910W 80PLUS SILVER



램 타이밍 값은 해당 램 타이밍 항목을 테스트하지 않는 동안은 아래와 같이 설정해 두었습니다.


CL 6 / tRCD 9 / tRP 6 / tRAS 24 / Command Rate 1 / tRC 40 / tRFC 90ns / tREF 7.8ms

이 점 참고하시면서 아래의 테스트 결과들을 봐 주시기 바랍니다.


4. 테스트 결과

1) Super PI 32M

가. CL 테스트



▲ 십여분이 걸리는 연산시간에 비해 불과 '몇 초'가 갈리는 결과이니만큼 매직 그래프에 양해 부탁드립니다^^;
CL값이 변함에 따라 연산시간도 비교적 균일한 차이로 변하고 있습니다.

나. tRCD 테스트


▲ 대조군이 적어 그래프가 썰렁하지만^^; 역시 tRCD값의 변화에도 연산시간은 또렷하게 변화하고 있습니다.
CL만큼 연산시간에 미치는 영향이 크지는 않지만 tRCD값 하나로 약 2~3초의 연산시간 변화를 이끌어 냅니다.

다. tRP 테스트


▲ 앞에서 본 두 램 타이밍 항목보다 훨씬 미미한 수준의 영향입니다.
그래도 약한 추세로나마 tRP값과 연산시간 사이에 양의 상관관계가 있음을 눈으로 확인할 수 있습니다.
(※ 양의 상관관계: 통제변수 값이 줄면 종속변수도 줄고, 통제변수 값이 늘면 종속변수도 늠)

라. tRAS 테스트


▲ 바로 위의 tRP보다는 더 크고, CL / tRCD보다는 적은 정도로 연산시간에 영향을 주고 있습니다.
tRAS값이 3씩 줄어들 때마다 연산시간은 약 1~2초씩 줄어드는 모습입니다.
(※ tRAS는 특성상 CL / tRCD / tRP 세 값의 합과 비슷한 값으로 설정되므로, 최소 단위를 3으로 잡았습니다)

마. Command Rate 테스트


▲ 옵션이 1 / 2 밖에 없어 그래프가 심심하군요. Command Rate 3을 설정할 수 있는 메인보드도 있다는데...
그래도 단일 램 타이밍 항목으로써 연산시간에 기여하는 정도는 상당히 큰 편입니다.
Command Rate 값을 2에서 1로 변화시키자 연산시간이 2.886초 더 짧아졌습니다.

바. tRC 테스트


▲ 이 테스트에서 얻은 결과만으로 보면 tRC 설정값과 연산시간 사이엔 어떤 상관관계가 없어 보입니다.
tRC란 항목이 램의 작동에 어떤 역할을 담당하는지 모르겠지만 최소한 Super PI와는 거리가 멀어 보이는군요.

사. tRFC 테스트


▲ 지금 보실 tRFC와 뒤에 나올 tREF는 지금까지의 램 타이밍 항목들과는 성격이 약간 다릅니다.
이 둘은 램이라는 전자 제품의 전기적인 특성과 관련된 항목인데, 램은 일종의 콘덴서인 '셀'의 집합체로 가만히 두면 서서히 방전되는 성질이 있기 때문에 일정 주기마다 셀에 저장된 값을 다시 써줘야 합니다.
tRFC는 셀에 '다시 쓴' 이후 램이 다시 액세스 가능한 상태로 활성화되기까지의 시간을 지정합니다.
즉 '시간'에 관련된 항목이다 보니 여타 램 타이밍 항목들이 클럭 사이클을 단위로 갖는 데 비해 tRFC와 tREF는 직접 시간 값(나노초 / 밀리초)을 단위로 갖는 것이 특징입니다.

아무튼 tRFC의 테스트 결과를 보면, 우선 옵션들 사이의 값 차가 커서인지 연산시간 결과도 큰 차이가 납니다.
특히 tRFC 160ns와 300ns 사이의 결과가 큰 편인데, 이 사이에서 무려 18초나 되는 연산시간 차이가 났습니다.
이 사이의 값을 제외하더라도 tRFC 설정값이 변할 때마다 연산시간이 약 3~4초 가량 변화하고 있습니다.

아. tREF 테스트


▲ 위에서 본 tRFC가 램이 '셀에 다시 쓴' 때로부터 해당 셀이 활성화되기까지의 시간이라면 tREF는 바로 그 '다시 쓰기'를 얼마만에 한번씩 할 것인지를 지정하는 항목입니다. 셀에 데이터를 다시 쓰는 동안은 액세스가 불가능하기 때문에 다시 쓰는 간격이 멀수록 성능에 유리합니다. 따라서 tREF만큼은 다른 램 타이밍 항목과 달리 설정값이 클수록 성능이 좋은 것이죠.
제 메인보드에서는 3.9ms / 7.8ms 두 값밖에 설정할 수 없었지만 15.6ms를 지원하는 메인보드도 있다는군요.

디폴트인 tREF 7.8ms를 3.9ms로 줄여 보니 연산시간이 약 7초 정도 늘어났습니다. 이는 단일 램 타이밍 항목으로는 tREF가 연산시간에 가장 큰 영향을 미치는 결과입니다.

지금까지 살펴본 결과를 토대로, 각 램 타이밍 항목별로 설정값 '한 단계'의 변화가 Super PI 연산시간에 미치는 영향을 그래프로 그래 보면 아래와 같습니다.


▲ 일단 '유명한' 램 타이밍인 CL-tRCD-tRP-tRAS 순으로 성능에 영향을 주지 않는다는 점이 흥미롭습니다.
비록 가장 영향을 많이 주는 항목조차도 연산시간에 미치는 영향은 1% 미만으로 작은 편이지만, 각 램 타이밍 항목 간의 우열은 뚜렷하게 나타나고 있는 편입니다.
특히 잘 알려지지 않았던 tREF와 tRFC가 나머지와 큰 차이를 벌리며 각각 1, 2위를 차지한 것이 눈에 띕니다.


2) Everest: 메모리 대역폭

가. CL 테스트


▲ 쓰기(Write) 대역폭을 제외하면 CL값의 변화에 따라 대역폭도 거의 선형적으로 변화하고 있습니다.
읽기(Read) 대역폭은 CL값이 하나 줄 때마다 약 200MB/s, 복사(Copy) 대역폭은 약 100MB/s씩 늘어납니다.

나. tRCD 테스트


▲ tRCD도 CL만큼은 아니지만 꽤 뚜렷한 경향성으로 그 값이 줄어듦에 따라 대역폭이 오르고 있습니다.
CL 테스트에서는 거의 변화가 없던 쓰기 대역폭이 여기서는 작게나마 상관관계를 보인다는 점이 눈에 띕니다.
또한 tRCD값 감소에 따른 복사 대역폭의 상승폭도 CL 테스트에서보다 더 높은 편입니다.

다. tRP 테스트


▲ 앞의 두 테스트보다는 훨씬 약한 상관관계이지만, tRP값이 줄어들 때에도 대역폭은 대체로 올라갑니다.
특히 읽기 / 쓰기 대역폭보다 복사 대역폭이 좀 더 선형적인 상관관계를 보여주고 있습니다.

라. tRAS 테스트


▲ 읽기 / 쓰기 / 복사 대역폭 모두 tRAS값의 변화와는 별 상관관계가 없어 보입니다.

마. Command Rate 테스트


▲ 가장 큰 차이를 보이는 읽기 대역폭은 Command Rate 1 / 2 사이에서 240MB/s 차이를 내고 있고, 복사 대역폭도 48MB/s 가량 차이를 보이고 있습니다. 반면에 쓰기 대역폭은 거의 차이가 없습니다.
Command Rate 테스트에서 그래프상의 대조군이 적어 차이가 없어 보일 수 있지만, 사실 설정값이 단 둘임을 감안하고 보면 각 설정값 사이의 성능차이는 오히려 상당히 큰 편입니다.

바. tRC 테스트


▲ 우선 쓰기 / 복사 대역폭은 각 대조군에 걸쳐 거의 완벽한 직선을 그리고 있습니다. (= 상관관계 없음)
읽기 대역폭이 조금 들쭉날쭉한 편인데, 이것 역시도 유의미한 상관관계를 찾기는 어려워 보이는군요.

사. tRFC 테스트


▲ tRFC값이 줄어듦에 따라 모든 대역폭이 골고루 상승하는 모습을 보이고 있습니다.
여기에서도 tRFC 160ns와 300ns 사이의 성능 차이가 비교적 큰 편이고, 타 램 타이밍 테스트에서는 그다지 의미있는 상관관계를 보이지 않던 쓰기 대역폭이 tRFC 테스트에서는 뚜렷한 음의 상관관계를 보여줍니다.

아. tREF 테스트


▲ 쓰기 대역폭은 요지부동이지만 tREF값에 따라 읽기 / 복사 대역폭이 상당히 큰 폭으로 변화합니다.
앞서 tREF는 설정값이 클수록 좋다고 했는데 대역폭에 있어서도 3.9ms보다 7.8ms가 더 좋은 모습입니다.
tREF가 3.9ms에서 7.8ms로 오를 때 읽기 대역폭은 232MB/s, 복사는 무려 372MB/s가 증가했습니다.

그럼 여기까지 얻은 결과를 토대로 각 램 타이밍 항목을 한 단계 조절했을 때 읽기 / 쓰기 / 복사 대역폭이 변하는 비율을 그래프로 그려 보겠습니다.


▲ 우선 읽기 대역폭에 대해서는 Command Rate, tREF, CL, tRFC 네 항목이 비슷하게 영향을 주고 있습니다.
이들보다 절반 정도의 영향력을 주고 있는 tRCD까지가 그나마 유의미한 램 타이밍 항목이라 할 수 있고, tRC 및 tRAS는 전혀 읽기 대역폭에 영향을 미치지 않는 항목이라고 봐도 무방할 것 같습니다.


▲ 쓰기 대역폭은 램 타이밍 항목을 막론하고 미치는 영향이 0.5% 미만으로 매우 미미한 편입니다.


▲ 복사 대역폭은 램 타이밍 간의 영향력이 상당히 벌어지는 편인데, tREF가 압도적으로 1위를 차지했습니다.
tREF와 조금 격차를 두고 tRFC가 그 뒤를 잇고 있고, 다시 tRFC의 절반 정도인 CL과 tRCD가 나란히 3, 4위에 포진해 있습니다. 그 아래로 tRP-Command Rate, tRC-tRAS가 각각 비슷한 정도의 영향력을 겨루고 있지만 tRCD 밑으로는 거의 복사 대역폭에 영향을 주지 않는다고 봐도 무방할 것 같습니다.


3) Everest: 메모리 레이턴시

가. CL 테스트


▲ CL값이 하나 증가할때마다 레이턴시도 거의 1ns씩 선형적으로 증가하고 있습니다.

나. tRCD 테스트


▲ tRCD와 레이턴시 사이에도 양의 상관관계가 있어 보이지만, 그 정도는 CL보다 약한 편입니다.
tRCD값이 하나 증가할때마다 레이턴시는 0.3~0.4ns씩 증가합니다.

다. tRP 테스트


▲ 0~0.1ns 정도씩의 편차가 있지만 이 정도면 상관관계가 없다고 봐도 되겠죠?

라. tRAS 테스트


▲ 완벽한 일직선. tRAS값은 레이턴시에는 전혀 영향을 미치지 않습니다.

마. Command Rate 테스트


▲ Command Rate값이 한 단계 변할 때 레이턴시도 0.9ns 변했습니다. CL과 비슷한 영향을 주는군요.

바. tRC 테스트


▲ tRC값이 25일 때 유일하게 레이턴시가 35.5ns로 다른 값들에 비해 '튀어' 있는데 측정상의 오차인듯 합니다.
이것 또한 거의 일직선. 아무런 상관관계가 없습니다.

사. tRFC 테스트


▲ 설정값 자체 사이의 간격이 큰 tRFC 160ns와 300ns일 때의 레이턴시 격차가 1.5ns로 상당히 큰 편입니다.
물론 이 값을 제외하고 보더라도 tRFC는 레이턴시에 분명이 영향을 미치는 항목 중 하나입니다.
tRFC값이 한 단계 변화할 때 레이턴시는 0.3~0.9ns 사이에서 변화하는 모습입니다.

아. tREF 테스트


▲ 앞서 본 다른 테스트에서의 결과와 달리 tREF는 레이턴시엔 큰 영향을 미치지 못하는 것 같습니다.

지금까지 얻은 결과를 토대로 각 램 타이밍 항목 한 단계 변화가 레이턴시에 미치는 영향을 알아봅시다.


▲ CL, Command Rate가 2강을 형성한 가운데 tRFC와 tRCD가 각각 일정한 격차로 뒤따르는 모양입니다.
이들 4 항목을 제외한 나머지는 레이턴시에 거의 영향을 미치지 않는다고 봐도 무방합니다.


4) 인코딩 시간

가. CL 테스트


▲ CL값이 하나씩 늘어날 때마다 인코딩 시간도 조금씩 늘어나는 모습을 보이고 있는데, 그 양상이 선형적이지는 않고 CL값이 늘어남에 따라 인코딩 시간이 느는 비율 자체는 점점 줄어듭니다.
다만 일반적인 사용 세팅에서 CL 11이상을 설정할 일은 드물기 때문에 여기에서는 'CL값이 하나 늘어날 때 인코딩 시간이 대략 1초 늘어난다'라는 식의 선형적인 접근도 유효할 듯 합니다.

나. tRCD 테스트


▲ CL보다는 훨씬 미미한 정도이긴 하지만 tRCD의 경우도 설정값이 오름에 따라 인코딩 시간이 길어집니다.

다. tRP 테스트


▲ 분명 측정값들 사이에 편차가 있기는 한데, tRP의 변화와 거의 아무 상관관계가 없습니다.

라. tRAS 테스트


▲ tRAS값이 오름에 따라 인코딩에 걸리는 시간이 늘어나는데, 매우 미세한 수준입니다.

마. Command Rate 테스트


▲ Command Rate값이 1에서 2로 늘자 인코딩 시간이 무려 1.28초나 늘었습니다.
인코딩 벤치에서 지금까지의 램 타이밍 항목 중 '한 단계'변화가 가장 큰 영향을 준 모습입니다.

바. tRC 테스트


▲ 이 벤치를 통틀어 가장 의외였던 부분인데, 앞선 Super PI, Everest 테스트에서는 성능에 거의 영향을 미치지 않던 tRC가 여기에서만큼은 미세하게나마 인코딩 시간과 뚜렷한 상관관계를 보여주고 있습니다.

사. tRFC 테스트


▲ 각 설정값 사이의 차이가 큰 tRFC는 그에 따른 인코딩 시간의 변화도 선명한 추세를 보입니다.
특히 tRFC 160ns와 300ns 사이의 인코딩 시간 차이가 큰 편인데, 이 값을 제외하고 보더라도 tRFC값과 인코딩 시간 사이엔 뚜렷한 양의 상관관계가 존재합니다.

아. tREF 테스트


▲ 단일 램 타이밍 항목으로는 가장 큰 '한 단계 변화시의 인코딩시간 변화'를 이끌어 냈습니다.
tREF 기본값인 7.8ms를 3.9ms로 줄이자 인코딩 시간이 '무려' 2초 가까이 늘어났습니다.
기회가 되면 tREF 15.6ms를 인가할 수 있는 보드로 테스트해 보고 싶어지는군요.

지금까지의 결과를 바탕으로, 각 램타이밍 항목이 한 단계 변화할 때의 인코딩 시간의 변화율을 보겠습니다.


▲ 일단 항목을 막론하고 램타이밍이 인코딩 성능에 미치는 영향은 1% 미만으로 미미한 편입니다. 그 중에서 0.5% 이상 영향을 미치는 항목은 tREF와 Command Rate 뿐이고, 나머지 중에서도 하위권과 비교해서 유의미한 수준의 영향력을 유지하는 항목은 tRFC와 CL 정도밖에 없는 것 같습니다.


5. 결론

일단 각 테스트 항목별로 각 램타이밍 항목이 성능에 미치는 영향을 한 눈에 들어오도록 요약해 봅시다.


▲ 그래프를 해석하는 건 여러분이 저보다 더 잘 하실 테고... :-)

각 테스트 항목을 카테고리별로 묶어, 램 타이밍 항목별 성능 기여도를 그래프로 나타내 보았습니다.
※ 기여도 산출 공식: {Super PI + (읽기 + 쓰기 + 복사 대역폭) ÷ 3 + 레이턴시 + 인코딩} ÷ 3
※※ 위의 공식에서 각 테스트 항목의 이름으로 언급된 항은 '각 테스트 항목에서 해당 램 타이밍이 성능에 미친 영향 (%)'을 의미합니다.


▲ 이번에도, 그래프를 해석하고 받아들이는 것은 여러분의 몫으로 남겨 두겠습니다.


끝으로... 몇 가지 말을 덧붙이자면,

테스트 항목에 따라 다르지만, 용량이나 작동 속도 차원의 변화 없이 오로지 램 타이밍 조절만으로 최대 2~3%에 달하는 성능향상을 꾀할 수 있다는 점은 분명 램 타이밍 오버의 매력 중 하나입니다.

우리가 흔히 접해 온 램 타이밍 항목들이 반드시 성능에 많은 영향을 주는 순서대로 적혀 있는 건 아니라는 점, 심지어 우리가 존재조차 모르던 옵션들로 인해 시스템 성능이 오르거나 더 떨어질 수도 있다는 점을 알고 가시게 되었다면 이 벤치의 작성자로써 제 보람은 충분합니다.

또한 메모리 모듈의 특성에 따라 어떤 모듈은 CL값이 잘 조여지고, 어떤 모듈은 tRCD값이 잘 안 조여지는 등 많은 다른 특징이 존재하는데 그동안은 이들 램을 일대일로 비교하기 어려웠지만 이 벤치가 그런 모듈간의 비교에도 어느 정도 참고자료로써 역할을 수행할 수 있으면 저로써는 더 바랄 바가 없을 것 같습니다.

가령 (같은 클럭에서) 램타이밍이 7-7-7-21이 들어가는 램과 6-9-6-24가 들어가는 램 중 어떤 게 더 성능이 좋은지 알고 싶을 때, 이 벤치의 마지막 그래프를 인용해 "CL값이 하나 줄어든 게 tRCD가 두개 늘어난것보다 더 큰 영향을 미치니 6-9-6-24인 램이 성능이 더 좋을 거야" 정도의 분석을 할 수 있게 된다면 이 벤치는 유용하게 자신의 소임을 다하게 되는 것 아닐까요 ;-P

이 벤치를 통해 여러분이 한층 더 골치아프고(!) 재미있는 오버클럭을 즐기셨으면 좋겠습니다 :-D

 

//

 

(아래 위젯은 티스토리의 크라우드펀딩 시스템인 '밀어주기' 위젯입니다. 100원부터 3000원까지의 범위 내에서 글쓴이에게 소액 기부가 가능합니다. 사견으로는 이러한 형태의 펀딩이야말로, 성공적으로 정착될 경우 이해관계자로부터 독립된 벤치마크가 지속가능해지는 원동력이 될 것이라 생각합니다. 제가 작성한 글이 후원할만한 가치가 있다고 여기신다면 밀어주기를 통한 후원을 부탁드립니다. 물론 글을 '가치있게' 쓰는 것은 오롯이 저의 몫이며, 설령 제 글이 '후원할 만큼 가치있게' 여겨지지는 못해 결과적으로 후원을 받지 못하더라도 그것이 독자 여러분의 잘못이 아니란 건 너무 당연해 굳이 언급할 필요도 없겠습니다. 저는 후원 여부와 관계없이 제 글을 읽어주시는 모든 독자분께 감사합니다.)