컴퓨터 아키텍처(구조)를 어떻게 공부할 것인가?

Intro

컴퓨터 공학, 그 중에서도 컴퓨터 아키텍처를 전공하고 있는 대학원생으로서, "컴퓨터 아키텍처" 분야는 매후 흥미롭고 설레는 분야입니다. 건축을 비유로하면 구조물을 직접 지는 것이 아닌, 새로운 건축물을 설계하고, 새로운 아이디어를 시도해보고, 평가하고, 건축을 감독하는 것 등이 아키텍처의 Job에 해당합니다. 그래서 영어로도 "Computer Architect" 라고 하는 것 같아요. 새로운 컴퓨터를 직접 설계해보고 싶지는 않으신가요?

 

학부 3학년 때 처음 컴퓨터 구조 수업을 듣고나서 막연한 관심만 생겼던 저는 무작정 관련 랩실 학부 연구생을 시작했고, 구글링을 해봐도 정리된 공부 자료, 로드맵이 없어서 무엇을 공부해야 할지 몰라 막막했던 시절도 있었습니다. 그래서 도서관에가서 닥치는대로 이 책 저 책 다 빌려보고, 강의도 들어보고 그랬었죠. 

 

그래서 컴퓨터 아키텍처를 학습하기 위해서 제가 시도했던 방법들 중 추천할만한 방법들을 소개하고, 어떻게 공부하면 좋을지 설명 드리려고 합니다.

 

강의 (Lectures)

컴퓨터 아키텍처를 맨 처음 배우는 제일 좋은 방법은 "강의"를 듣는 것입니다. 컴퓨터 아키텍처 과목을 맨땅에 해딩으로 독학하는 것은 어렵기도 하고, 분량이 방대해서 모든 내용에 중요도를 같게 두고 공부를 할 수는 없습니다. 강의를 들으면, 중요한 부분에 더 시간을 쏟게 되고 핵심을 추려서 배울 수가 있죠.

 

1) 대학에 재학중이시라면, 학교에 개설된 컴퓨터 구조 강의(컴퓨터공학과 or 전자공학과) 를 들으시는 것을 추천드립니다.

 

2) Digital Design and Computer Architecture, ETH Zurich, by Onur Mutlu

 

Link: https://www.youtube.com/@OnurMutluLectures

 

현 세대 컴퓨터 아키텍처 학계의 대가인 "Onur Mutlu" 교수님께서는 수업하시는 강의들을 유튜브에 올려주시는데, 학부 강의(Digital Design and Computer Architecture)와 대학원 강의(Computer Architecture)가 매년 올라옵니다. 영어에 익숙하시다면 가장 추천드리는 방법이며, 수업 자료 또한 모두 무료로 사용 가능합니다. 

 

대학에서 이미 수업을 들었더라도, Mutlu의 강의를 들으며 복습해도 좋고, 필요한 주제들만 골라 들어도 좋습니다. 이 수업을 따라간다면 컴퓨터 아키텍처의 기본을 다지기 충분합니다.

 

서적 (books)

1) 컴퓨터 구조 및 설계 - David A. Patterson, John L. Hennessy 

Link: https://www.yes24.com/Product/Goods/102716854

 

컴퓨터 아키텍처를 공부한다면 기초로 봐야하는 교재입니다. 다양한 대학에서 강의 교재로 사용할 것이고, 저도 책상에 두고 가끔 필요한 내용이 있다면 찾아 보기도 합니다. 1장에서는 아키텍처의 트렌드나 기본 연구 방법을 다루는데, 옛날에는 가볍게 읽으며 넘어갔지만, 연구를 하는 대학원생인 지금은 다시보니 피가되고 살이되는 내용이라고 느껴지네요. 이 책은 아키텍처를 공부하는 사람이라면 가지고 있어야 하지 않나, 생각합니다.

 

2) 프로세서를 지탱하는 기술 - Hisa Ando

Link: https://www.yes24.com/Product/Goods/5903582

 

이 책은 현재 단종되어 구매할 수 없지만(재출간 예정도 없습니다), 다른 경로로 구할 수 있다면 구하시는 것을 추천드립니다. 저는 도서관에서 빌려서 봤고, 1)의 책은 전공 도서의 딱딱한 느낌이라면, 이 책은 시중 도서처럼 캐쥬얼하고 좀 더 수월하게 읽히는 책입니다.

 

굉장히 다양한 주제를 폭넓게 다루고있고, 전공책만큼 깊이가 있진 않지만 그렇다고 마냥 간단한 책도 아닙니다. 서술해야할 내용들은 충분히 서술하고 있으며 읽기 쉽게 쓰여져 있기 때문에 저는 공부를 시작한 초반에는 이 책을 2~3번 읽은 것 같습니다. 내용도 재미있고, 구할 수 있다면 1)의 책보다 먼저 읽는 것도 추천드립니다. 하지만, 강의나 전공 교재로 충분히 공부하였거나, 구하기 어렵다면 꼭 이 책을 보지 않아도 괜찮습니다.

 

번외) 같은 저자의 GPU 아키텍처를 다루는 책이 있어서 관심있으신 분은 읽어보면 좋을 듯 싶습니다.

  • 머신러닝과 블록체인을 떠받치는 GPU의 모든 기술 - Hisa Ando

Link: https://www.yes24.com/Product/Goods/59678575

 

영상 (Videos)

1) Intel - Architecture All Access

Season1: https://www.youtube.com/watch?v=_PELtLdh87Y&list=PL8t1FdN2Tj3ZVAzTY-FvsS0qy-mEfRdoj&index=1  Season2: https://www.youtube.com/watch?v=MaODME0N4oI&list=PL8t1FdN2Tj3ZMAgGXn3yVxPg0XHvS91_8

 

예전에 유튜브에서 Computer Architecture 를 검색하다 우연히 찾게된 영상인데, 인텔에서 다양한 주제의 아키텍처를 기초부터 자세한 기술들 까지 설명해주는 영상들이 있더라구요. 대기업답게 그래픽 편집을 빡세게 해서그런지 그냥 글로 배우는 것보다 더 이해하기가 수월했습니다. 영상 길이가 길지도 않고 재미있게 볼 수 있으니 시간날 때 보면 도움이 많이 될 것 같습니다.

 

학습 TIP

컴퓨터 아키텍처를 심도 있게 공부하기 위해서는 위와 같이 "컴퓨터 아키텍처" 자체 말고도 다양한 주제를 공부해야 합니다. 결론적으로 "컴퓨터 시스템"을 향해 나아가는 길 위에 아키텍처 외, OS/커널/컴파일러/네트워크/병렬처리/AI 등의 다양한 주제들이 있고, 어느정도는 폭넓게 공부를 해야 그림이 맞춰지는 느낌이 들 것입니다.

 

특히 운영체제와는 거의 쌍둥이격이고, 운영체제 이론 뿐 아니라, 실제 리눅스 시스템의 작동 방식까지도 차차 알아가면 좋습니다. 

 

이 모든 것들을 한 번에 공부하기는 어렵고, 보통 아키텍처를 공부하고 싶거나, 이 글을 찾아오신 분들이라면 대학원에 관심이 많으실텐데 꼭 대학원에 가지 않더라도, 관련 연구실에서 학부 연구생/석사 하시면서 하나씩 익혀나가는 것을 추천드립니다.

 

배운 내용들을 직접 사용 해야 머릿속에서 정리도 되고, 금방 실력이 늘으니까요. 

 

저는 컴퓨터 아키텍처 중에서도, 메모리 시스템 분야에 대해서 연구를 하고 있고, 다음 글에서는 나아가 메모리 시스템을 중심으로 어떻게 공부하면 좋을 것인지 소개하도록 하겠습니다.