멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki
메모리와 디스크 지연시간을 실생활에 비유한 글을 올렸습니다. 오늘은 최근 급속도로 개발되고 있는 Solid State Disk (SSD)를 사용하는 경우를 생각해 보겠습니다.

삼성은 최근 256GB SSD를 이미 양산하기 시작했고. Dell에서 판매하는 노트북 컴퓨터에 이미 옵션으로 선택할 수 있습니다. 놀라운 것은 $300만 추가하면 500GB HDD에서 256GB SSD로 업그레이드가 가능하다는 것입니다. 애당초 초기 가격이 $1000정도 할 것이라는 예상을 뒤없고, 삼성은 시장 선점을 노려 Dell에 낮은 가격으로 납품을 시작한 것이 아닌가하는 추측을 낳게 합니다.

SSD와 관련된 상세한 벤치마크 데이터를 별로 찾을 수 없었으나 SanDisk사에서 발표한 프리젠테이션 에 따르면 latency는 약 0.10 ms에 불과 한 것으로 나와 있습니다. HDD는 원반 디스크가 회전하는 기계 장치로, 데이터를 읽기 전에 헤드를 움직이고 디스크를 회전시켜 원하는 위치로 움직이여야만 하는 seek time이라는 것이 존재합니다만, SSD는 이런 것이 없습니다. 게다가 HDD는 충격과 소음에 약해 쉽게 고장나고 내구성이 매우 떨어지고 전력소모량도 SSD에 비해 큽니다.

SSD를 추가한 latency 비유는 아래와 같습니다.(평균 latency를 0.10 ms라 가정한 것입니다.). 앞으로 4, 5년 이후 SSD가 서버분야 특히 데이터베이스 분야에도 엄청난 변화와 속도 향상을 가져올 것으로 보이는데, 여기에 삼성이 선두로 나가려 하고 있다는 점에서 자랑스럽기도 합니다.


메모리와 디스크 latency를 실생활에 비유한다면 다음과 같다.

1. L1 cache: 책상 위에서 종이 한 장을 잡기 (3초)

2. L2 cache: 책장에서 책 한 권을 꺼내기 (14초)

3. 메인 메모리: 복도로 걸어 나가 자판기에서 커피 한 잔을 뽑기 (4분)

4. 하드디스크: 건물을 나와서 1년 3개월 동안 세계일주 하기.

4. SSD: 3박 4일동안 국내 여행 떠나기.
크리에이티브 커먼즈 라이센스
Creative Commons License

위키에 "대역폭과 지연시간"에 관한 글을 쓰고 있었으나. 게으름을 피워 아직 완성이 되지는 않았습니다. 그런데, 오늘 Herb Sutter의 블로그에서 이와 관련된 흥미로운 프리젠테이션을 발견했습니다.

Herb는 이것을 모든 프로그래머가 꼭 보아야할 내용으로 추천하고 있으며, 아래와 같은 티저가 있군요.

CPU의 단 1%만이 실제 컴퓨팅에 사용되고 있고, 나머지 99%는 메모리 지연시간(Latency)을 숨기기 위해 사용된다.


특히, Herb는 여기서 Itanium CPU 칩을 현미경으로 확대해 보면, 99%의 면적이 결국 데이터를 읽거나 쓰는데 사용되며, L1, L2, L3와 같은 CPU 캐쉬 메모리가 CPU 전체 트랜지스터 개수의 85%를 차지한다는 사실을 보여주고 있습니다. 이것은 Patterson교수의 프리젠테이션 슬라이드로부터 참고한 내용들 입니다.

CPU의 집적도가 높아지고, 속도가 빨라질수록 그리고 코어의 개수가 증가할 수록, 결국 메모리  액세스 시간 혹은 지연시간 (Latency)을 단축시키는 것이 가장 중요하고, 또 가장 힘듭니다. 이것은 단순히 CPU 자체 설계의 문제가 아니라 프로그램의 성능에 직접적인 영향을 미치는 가장 중요한 요인이기도 합니다.

기술의 눈부신 발전으로 시간이 지나면 모든 것을 해결해 줄 것이란 믿음은 여기서 또 한 번 무너져 버리는 것을 느낄 수 있습니다. CPU가 발전될수록, 오히려 가장 기본적인 메모리 액세스가 더욱 중요해지며 이것은 빛의 속도라는 한계에 부딪히고 있는 것입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License