우리가 디지털 회로를 설계하거나 프로그램을 짤 때 착각하는게
변수를 읽는 건 별거아니고 변수에 계산을 하는 건 비싸다는 착각이다.
과거 CPU의 계산능력이 미천할 때는 그게 맞았지만 이젠 아니다.
현대에 있어 컴퓨팅에 가장 비싼 건 변수를 읽고 쓰는 거다.
그래서 CPU 설계자들은 계산은 공짜고 메모리는 비싸고
(메모리) 통신은 끔찍하게 비싸다라는 격언을 인용한다.
여기서 메모리 통신은 CPU와 메모리가 간의 데이터 이동을 말한다.
현재 CPU 의 성능을 제약하는 요소는 전력소모 (=열방출) 인데
32비트 정수덧셈 : 0.1 pJ (피코 줄 (10의 -15승 줄 )= 에너지 단위 )
32비트 실수덧셈 : 0.9 pJ
32 비트 정수 곱셈: 3.1 pJ
32 비트 캐시 읽기 : 5 PJ
32 비트 DRAM 읽기: 640 pJ
이러니 캐시 미스로 DRAM 한번 읽는게 얼마나 비싼 댓가를 치르는지 잘 보여준다.
요즘은 웬만한 어플들의 프로그램 텍스트는 캐시에 한번에 다 들어 간다.
그래서 옛날에는 프로그램 지역집중을 높이기 위해 배열 단위로 계산하는 것도
이제는 배열의 한 원소를 읽으면 최대한 가공한 후에 다음 원소를 처리하는게 좋다.
이제 CPU 등의 계산 ALU 를 늘이는 건 아무것도 아니다.
DRAM 의 레이턴시를 줄이고 대역폭을 늘여야 성능을 올릴 수 있다.
DDR 램의 시대는 점차 종말이 다가오고 있다.
DDR 램의 낮은 레이턴시에도 불구하고 DDR 램의 메모리 뱅크나
fast page 로 burst 접근으론 감당할 수 없고
256-512 비트 단위로 캐시 플러시와 리필에 최적화된 GDDR 램이 득세할 것이다.