90년대 컴퓨터 공학 이야기 (5) — cache

이전의 두 단어 ( trade-off , orthogonal ) 이후에 그 뒤로도 아마 많은 이야기를 들었겠지만, 다른 류의 대학 생활과 섞이면서 오히려 뒤의 기억들은 흐릿한데, 커리어를 관통할 것으로 소개해 주신 세번째 그리고 기억 속의 마지막 단어는 'cache'. 첫번째 단어인 trade-off 의 연장선 상에서 아주 잘 정의된 예제이기도 하고, 담당 교수님의 전공 분야이기도 했었다. 어린 마음에 computer architecture 에 대한 매력을 느끼게 되었던 결정적인 부분이기도 하다. 아래는 연관된 몇가지 기억들.

 

Locality ( 지역성? )

시간적 지역성 ( temporal locality ) 와 공간적 지역성 ( spatial locality ) 를 이용해서 시스템 전체의 실행 속도를 올리는 아주 잘 정의된 요구사항들과 software / hardware 로 구현하기. 그로 인한 극대화되는 효율. 당시 교수님께서는 '아름답다'는 말을 종종 하셨는데, benchmark 를 통한 여러 기법들까지 이해할 부분이 많았던 당시에는 아름답다는 걸 이해하지 못했더랬다.

CPU 안에 만들어진 것들을 구현하기 위해서는 hardware가 logic구현하고 있다는 사실에 놀랐었고, 이후 Operating system, file system 등을 깊게 들어갈 수 있는 용기와 무모함을 얻게 되었다. 그리고 당시 compiler 에게 hint를 주는 여러 기법등의 세심함과 집요함까지.. 이를 구현해 보기 위해 GCC 같은 것을 고치고 실패하고 등등 여러 좌절을 겪기도 했었다. 조금의 인내심이 더 있었으면 다른 미래가 펼쳐졌을 수도 있었을 텐데 싶긴 하다.

다른 memory들

학부 때 새로운 컴퓨터로 Intel Pentium 이라는 게 나오면서 L2 cache 라는 말을 이제 이해할 수 있게 되었고, 한편으로는 뭐 무조건 많고 비싸면 좋은 거 아닌가 등의 단순한 생각이긴 했었다. 그리고 이후 SRAM 같은 다양한 형태의 RAM, NOR/NAND Flash memory, SSD 등 메모리 입장에서만 해도 폭발적으로 변화하는 세상에서 본의든 아니든 다양한 걸 알게 되어야 했었다.

나야 뭐 맛보기만 경험했었지만, 민교수님과 대학원 선후배님들은 언제나 그 중심에서 여러 일들을 하셨고, compiler , OS, controller 등을 섭렵하면서 같은 개념을 그대로 혹은 개선해서 구현하는 걸 보면서, 마음 한 편에서는 이 급변하는 세상에 수년이 지나도 관통한다는 게 이런 건가 싶은 깨달음을 얻기도 하었다. 한편으로는 예전의 compiler 에게 hint를 준다거나, application-aware 등의 아기자기함은 이제 논문이나 이야기 속에서만 존재하기도 하지만 그런 것들이 아마도 기반을 닦아 나갔을 것이다..

밖에서도 cache

컴퓨터 구조를 배우면서 소위 '정통파'에서 시작했다지만, 밖에서 만나는 모든 개념들도 여기 닿아 있고, 이제는 너무나 다들 자연스럽게 쓰는 용어가 되어 버렸다. https://en.wikipedia.org/wiki/Cache_(computing) 에도 hardware cache, network cache, software cache 등... 실제로 buffer(혹은 memory) 가 터졌을 때의 아기자기함(?)들과 관련된 사건사고등도 기억나기도 하지만, 점점 managed service 를 쓰는 입장으로 많이 바뀌면서 어떻게 구현하는지보다는 어떻게 사용하는지에 더 관심을 두며 지내 오게 되었다.

몇몇 시스템디자인 인터뷰에서는 그냥 '캐쉬 앞에 붙이면 좋아져요', '돈으로 기계 사면 되요' 등의 무지성 대답도 하거나 들을 수 있게 되었고, 한편으로는 실전에서는 또 그렇게 인정하며 쓰는 습관들도 되어 버렸다. Memoization, CDN, Cloud storage gateway 모두 같은 개념이라 하겠고, 앞으로도 계속 그러하겠다.

ps. 민상렬 교수님

석사까지밖에 인연이 없었지만 돌아가신 교수님은 여전히 애증의 감정으로 기억한다. 분명 졸업 때는 미운 감정도 꽤 있었던 기억인데, 부족함이 많아 많은 것들을 더 배우지 못했고, 나중에 철이 들면서 이해를 하게 된 부분도 많고, 지금은 닮고 싶은 혹은 닮고 싶었던 어른의 모습에 가장 가깝다 하겠다. 특히 선함과 아름다움을 추구하는 마음가짐 등에 대해서는 깨달음이 늦었다는 게 많이 아쉽고, 16년 전 구글에 합격했다는 인사를 드렸을 때 환하게 웃어 주셨던 게 마지막 면담이 되었던 게 지나고 보니 특히 아쉽다.

아래는 과학동아에 인용된 인터뷰들 중 발췌..

---

민 교수는 연구원들에게 항상 전체 시스템을 이해하라고 강조한다. 그래서 학부에서 하드웨어를 공부한 사람은 소프트웨어 연구를, 소프트웨어를 다뤄본 사람은 하드웨어 연구를 할 것을 제안한다.

“과거 어떤 쪽을 미리 연구했는가 보다는 전체 시스템을 잘 이해하고 문제를 적극적으로 풀어나가는 능력이 중요하기 때문입니다. 2007년에 개발한 플래시메모리의 핵심 부품도 원래 소프트웨어를 다루던 연구원이 설계했습니다. 그리고 관련 기업에서도 전체 시스템을 잘 이해하는 연구원을 높게 평가하고, 필요로 합니다.”

...

“99%의 완성도를 만드는 것은 쉽습니다. 하지만 100%의 완성도를 가진 아름다운 제품을 만들기 위해선 그때까지 들었던 노력의 5~10배를 들어야 합니다. 그 1%를 만들기 위한 노력이 한국 플래시메모리의 미래를 결정할 것입니다.”

하지만 민 교수는 현재 우리나라의 교육 여건에서 이런 완성도 있는 제품을 만들 인재가 나오기 힘들다고 지적한다. 어렸을 때부터 아름다운 것을 본 적이 있나? 라고 묻습니다. 하지만 한 명도 대답하지 못하더군요. 다양한 분야의 책을 읽거나. 곳곳을 여행하고, 이성도 만나면서 아름다움을 경험할 시기에 입시에만 빠져 지내는 청소년들을 보면 아쉽습니다.“

댓글을 작성해보세요.