티스토리 뷰
「CPU의 캐시는 L1이 32KB, L2가 256KB, L3가 2MB라는 식으로 다층으로 나눠져 있는데 왜 32KB+256KB+2MB처럼 하나로 된 L1 캐시는 사용하면 안 될까?」
위 질문에 대한 간단한 버전의 대답은 「각각의 캐시에는 따로 정해진 역할이 있으니까」 입니다. 살짝 추가하자면 캐시는 용량이 클 수록 데이터 전송 속도가 느려지고 기억 밀도가 높으며 전력을 절약하는 성질이 있기 때문에 필요에 따라서 다른 종류의 캐시를 나눠서 사용하는 것이 유리하니까 라는 대답이 나올 것입니다.
어느 정도 지식이 있고 두뇌가 명석한 사람이라면 위와 같은 간단한 버전의 대답으로 이해할 수도 있을 겁니다. 하지만 아무런 지식이 없는 사람이라도 알기 쉽도록 회사원을 비유로 하여 각각 다른 캐시의 역할을 설명하겠습니다.
당신이 1960년대의 관료적인 체제 속의 화이트컬러 회사원이라고 상상해 봅시다. 물론 그 당시에는 컴퓨터 등은 존재하지 않았고 필요한 자료는 종이를 기반으로 하여 파일 케이스에 넣어서 관리했습니다.
당신은 「자기 전용 책상」(「L1 캐시」의 비유)에서 작업을 하는데 자주 사용하거나 나중에 사용할 가능성이 높다고 생각되는 자료는 파일 케이스에 넣어 책상 위에 놓아둡니다. 파일 케이스에는 다양한 자료가 포함되어 있는데 설사 사용할 자료가 1장의 종이라고 해도 파일 케이스에서 찾아내기 위해서 속의 자료를 꺼내서 찾아야 합니다.
사무실에는 대량의 자료를 보관하는 「캐비닛」(「L2 캐시」의 비유)도 있습니다. 캐비닛에는 최근 사용했지만 지금 즉시는 사용하지 않을 자료가 배치되어 있습니다. 그리고 업무를 효율적으로 하기 위해서는 책상 위에 있는 자료 중에서 사용하지 않는 것은 캐비닛 케이스에 넣어버리는 습관이 있습니다. 물론 캐비닛의 자료를 다시 사용할 수는 있지만 자리에서 일어나 가지러 가야 하니 번거롭긴 합니다. 또한 인덱스를 의지하여 수많은 자료 속에서 원하는 자료를 찾아내기 위해 시간이 걸리는데 이건 책상 위에 있는 파일 케이스 속의 자료를 찾는 것과는 비교가 되지 않을 정도로 귀찮은 일입니다.
그래서 캐비닛의 자료를 사용하는 데 도움을 주는 「버스터」(「버스의 호출」의 비유)라는 작업원이 등장합니다. 책상의 파일 케이스에 있는 자료 중에서 사용하지 않게 된 것은 버스터에게 맡깁니다. 버스터는 수령한 자료를 카트에 넣습니다. 버스터는 사무실을 돌아다니면서 캐비닛 정리를 원하는 사람이 있는지 확인합니다. 물론 캐비닛에서 꺼낸 파일이 어디 있는지 알고 있는 사람은 버스터입니다.
때로는 누군가가 캐비닛에는 없는 자료를 버스터에게 요구하곤 하는데 해당 자료가 캐비닛이 아닌 다른 사람의 책상에 있는 상황이 일어날 수 있습니다. 그런 상황에서 버스터는 아무 말 없이 책상에 있는 그 자료를 차지할 수는 없습니다. 버스터는 책상의 주인에게 그 자료를 사용하는지 여부를 확인하고 자료의 빌려줄 수 있을지에 대해서 협의합니다.
자료를 쌓아두는 캐비닛은 항상 가득 차 있습니다. 이것은 버스터가 회수한 자료를 캐비닛으로 되돌려 놓지 않음을 의미합니다. 여기에서 버스터가 해야 할 업무는 캐비닛에 공간을 만드는 것입니다. 그래서 버스터는 캐비닛의 자료를 사무실 지하에 있는 자료보관고(「L3 캐시」의 비유)로 갖고 갑니다.
지하 자료보관고에 있는 자료는 골판지 상지에 꽉꽉 채운 후 선반에 보관하고 있습니다. 사무실 직원인 당신은 지하의 자료보관고에 들어갈 수 없습니다. 지하의 자료보관고와 사무실을 버스터가 왔다 갔다 함으로써 필요에 따라서 필요한 장소로 자료를 이동시키는 구조입니다.
이것이 「CPU」라는 「사무실」이 들어간 빌딩 속 이야기입니다. 사무실 근무자가 일하기 쉽도록 빌딩은 입지가 좋은 장소에 있지만 당연히 임대료는 비쌉니다. 그 때문에 지하에 있는 자료보관고 공간에도 한계가 있어, 수많은 자료를 사무실에 모두 갖고 있기란 불가능합니다. 그래서 모두 보관할 수 없는 자료를 어떻게 하는가 하면 회사는 사무실에서 30분 정도 떨어진 교외의 창고(메인 메모리인 「DRAM」의 비유)를 준비해서 그곳에 보관하고 있습니다.
버스터의 역할은 지하에 있는 자료보관고를 관리하는 일까지로, 교외에 있는 창고와의 자료 교환은 다른 창고관리자가 담당합니다. 만일에 교외의 창고에 있는 자료를 사무실 노동자가 필요로 할 경우에는 우선 버스터에게 필요한 파일을 전달하고, 버스터는 지하 자료보관고에 자료가 있는지 없는지를 확인하고 창고관리자에게 원하는 자료를 가르쳐 주고 창고관리자가 창고로 가서 자료를 꺼내와서 다시 사무실로 돌아와서 버스터에게 자료를 전달한 다음 버스터가 사무실 근무자에게 자료를 전달하는 흐름이 되므로 굉장한 오랜 시간이 걸리게 됩니다.
따라서 「CPU의 캐시는 L1이 32KB, L2가 256KB, L3가 2MB라는 식으로 다층으로 나눠져 있는데 왜 32KB+256KB+2MB로 구성된 L1 캐시는 사용하면 안 되는가?」라는 질문을 사전에 검토하면 이 질문자가 제시한 대체안은 폭 150미터 짜리 책상을 사용하는 것과 같음을 알 수 있습니다. 또한 이러한 책상은 너무나 거대해서 필요한 자료를 잡기 위해서 50미터나 걸어 가야 하는 상황이 벌어질 수 있습니다. 즉, 「손을 뻗을 필요 없는 ,즉시 닿는」 접근성이 중요하며 지나치게 큰 책상, 즉 여러 캐시 레벨이 한 덩어리여선 안 되는 것입니다.
또한 큰 책상이 아닌 작은 책상에서 한 사람이 작업한다는 (캐시를 공유하지 않는 ) 것도 매우 중요한 포인트입니다. 거대한 책상이라도 4명이 공유할 경우에는 혼자만 자료를 사용할 수는 없습니다. 자료를 전달하는데 시간이 걸려 순서를 기다려야 할 경우도 있습니다. L1 캐시는 자신만이 독점할 수 있는 개별 책상이란 점에서 중요하다고 볼 수 있겠죠.