티스토리 뷰
의문의 시작
하드디스크에 달린 메모리는 '캐시'일까 '버퍼'일까? 이 메모리는 하는일이 뭘까? 캐시랑 버퍼는 하드디스크에만 달려있을까?
다나와같은 상품정보 사이트에 가보면 두 단어를 구분없이 쓰는걸 볼수있는데, 그렇다면 캐시와 버퍼는 같은 의미일까?
다나와에서는 버퍼.
HGST도 버퍼.
시게이트는 캐시.
도시바는 버퍼.
웨스턴디지털은 캐시.
개판
캐시와 버퍼는 무엇이며 어디에 쓰이는지, 이번엔 이것들에 대해서 알아보자.
//보조메모리의 유래
먼저, '캐시'와 '버퍼'가 등장하게 된 이유는 큰 틀에서 보자면 유사하다. 작동속도에 차이가 발생하는 두 장치의 사이에서 '완충역할'을 담당하고 있다.
컴퓨터가 좀더 부드럽게 운영되도록 하는 부분이다. 하지만 이들이 맡고있는 임무를 자세히 살펴보면 정반대의 방식으로 '역할'을 수행하는걸 알수있다.
캐시(Cache) : 처리속도를 최대한 올리기 위한 기술. 주로 빠른속도의 장치편에서 보조한다.
느린속도의 장치로부터 특정데이터를 선별하여 미리 가져온다. 특정데이터는 캐시알고리즘에 따라 다르며, 이때문에 캐시적중율(Hit-rate)이란게 등장한다.
미리가져온 특정데이터가 이후에 제대로 들어맞아서 사용이 되면 성능이 올라가고, 예측실패(Miss-rate)가 발생하여 이용되지 못하면 성능에 도움이 되지 못한다.
버퍼(Buffer) : 처리속도가 떨어지는걸 방지하는 기술. 주로 느린속도의 장치편에서 보조한다. 노짱이 가졌어야했던 머스트해브 아이템
빠른속도의 장치로부터 모든데이터를 미리받아서 느린속도의 장치로 끊김없이 전송한다. 빠른장치가 아무리 빨라도 전송작업 이외의 다른일이 있다면
느린장치로의 데이터전송이 잠시 끊어질수도 있는데, 버퍼가 이들 사이에서 데이터를 미리 받아놓고 지속적으로 전달하여 데이터흐름이 끊어지지 않도록한다.
이것이 대략적인 개념설명이다. 이러한 특성때분에 캐시는 읽기부분에, 버퍼는 쓰기부분에 적용하는게 일반적이다.
따라서, '쓰기캐시'라거나 '읽기버퍼'라는 표현은 틀렸다고 볼수있다. 물론 예외도 있어서 항상 틀린건 아니므로 아래에서 설명한다.
//사용되는 장치들
CPU(프로세서) : 캐시
프로세서의 입장에서 볼때는 시스템메모리(RAM)도 느리다. 그래서 연산에 중점적으로 이용되는 작은크기의 데이터는 자신이 가지고있는 캐시메모리로
미리 불러들여서 저장해두고 처리한다. 그 옛날, 펜티엄2 시절에 나왔던 초창기 코빙턴코어 셀러론에는 원가절감을 위해 L2캐시가 빠졌었는데 그때문에
극악의 성능을 자랑하는 물건이 되버렸다. 아무리 저가형이라도 지나치게 떨어지는 성능때문에 이후부터는 펜티엄모델의 1/4크기로 캐시를 달고 출시함.
GPU(그래픽카드) : 캐시
위의 CPU와 비슷한 이유다. 그래서 기판에 달고있는 VRAM외에 GPU코어에 소량의 캐시가 내장되어있다.
HDD/SSD : 캐시
보조메모리 붙어있는 위치가 자기자신(HDD/SSD)이라 많은 사람들이 버퍼로 알고있는데 그게아니다. 프로세서와 시스템메모리를 보조하는 캐시메모리다.
역할은 HDD나 SSD나 동일한데, 쓰는작업을 보조하는 버퍼가 아니라 빠른접근을 위한 데이터 캐싱이다.(알고리즘에 따라 쓰기작업도 일부 보조할 수 있음)
CPU나 RAM이 볼때는 HDD는 말할것도 없고 SSD마저도 한없이 느려터진 장치이기 때문에, 둘 사이에 완충작용을 하기위해 존재하는 것이다.
SSD제품군에서 원가절감을 위해 D램캐시를 제거하는 경우가 있는데, 이런 제품들의 4k/QD32성능이 떨어지는 것은 다름아닌 D램캐시의 부재때문이다.
NIC(랜카드) : 버퍼
수백바이트 수준의 아주작은 버퍼메모리를 탑재하고 있다.
사운드카드(AC97/HDA 등 메인보드 내장형 오디오코덱 포함) : 버퍼
소리가 실시간으로 나오는것 같지만 실은 버퍼가 존재한다. 버퍼를 강제로 사용하지 못하게하면 프로세서에서 점유율문제로 처리가 조금만 지연되도
마치 주파수가 늘어지듯이 거칠게 깨져나오는 현상이 발생한다. 윈도9x시절에 음악을 틀어놓고 Ctrl+Alt+Del키를 눌러서 작업강제종료창을 띄웠을때
약 1초정도의 짧은 구간의 음이 계속 반복되는 현상을 경험해봤을텐데, 윈도9x시절 작업관리자(작업강제종료 기능밖에 없음)가 실행되면 컴퓨터의
모든 프로세스가 일시정지하도록 되어있는데 그때문에 음악재생 프로그램이 사운드카드 버퍼에 출력해야할 음원을 리필해주지 못해서 발생하는 것이었다.
사운드칩셋은 버퍼내용을 출력하는 능력만 있어서, 버퍼내의 데이터가 갱신되고 있는지 오류때문에 멈췄는지 구분하는 능력은 없고 그저 출력만 할뿐이다.
CD/DVD/BLU-RAY 등의 광학매체(ODD) : 캐시/버퍼 동시역할
일반적인 읽기작업시에는 캐시의 역할을 수행한다. RW미디어로 기록작업을 수행할때는 버퍼의 역할을 수행한다.
ROM으로써 읽기기능만 가진 제품은 1MB도 안되는 작은크기의 '캐시'만을 탑재하며, RW로써 기록기능도 가진 제품은
8~16MB의 비교적 대용량 메모리를 달아놓고 캐시/버퍼의 역할을 읽기/쓰기 등 제품구동에 따라 구분해서 이용하도록 되어있다.
미디어를 구울때 시스템에서 RW의 버퍼에 다음데이터를 지속적으로 리필해줘야 하는데, 일시적으로 이 흐름이 끊어졌을때 버퍼의 내용까지 소진되버리면
추억의 그이름 '버퍼 언더 런'오류가 발생한다. 요즘은 버퍼가 비어버리면 레코딩을 일시중지하는 기술이 있어서 버퍼 언더 런 오류는 추억으로 남게되었다.
기계가 아닌것들 : 소프트웨어적 측면에서의 이용
기계들 이외에 소프트웨어로 시스템메모리를 비슷한 역할을 하도록 만들어서 이용하기도 한다.
캐시로써 : 각종 램디스크류 프로그램들과 삼성전자SSD제품 한정으로 래피드모드가 있겠다. 래피드모드는 일부 쓰기가속도 수행하지만 본 역할은 캐싱이다.
버퍼로써 : 네트워크 미디어 플레이의 거의모든 행위들이 이에 해당된다. 리얼미디어, ASF, WMV, 유튜브 등에서 항상 체감하고 볼수있는 버퍼링이 그것이다.
//세줄요약
1. 캐시와 버퍼는 시스템이 효율적으로 구동되도록 보조하기 위해 태어났다.
2. 역할은 같지만 원리는 캐시는 더 빠르게, 버퍼는 느려지지 않게하는 상호보완의 관계다.
3. 관절의 연골과도 같은 부드러운 컴퓨팅 라이프를 위한 특별한 존재다.
닮은듯 아닌듯 오묘한 그분들, 캐시와 버퍼에 대해서 알아보았다.