본문 바로가기
전공백서/전기정보공학부

전기정보공학부: 컴퓨터조직론

by STEMSNU 2023. 12. 26.

안녕하세요, 공우 14기 전기정보공학부 한동민입니다! 오늘은 전기정보공학부의 전선필 중 하나인 컴퓨터조직론에 대해 알아보려고 합니다.

1. 과목에서 배울 수 있는 내용

 컴퓨터 구조에 대한 거의 모든 내용을 다룹니다. Computer Architecture Microarchitecture에 대해 배우고, CPU의 작동 원리를 배우며, Cache를 비롯한 메모리 시스템 및 GPU까지 다루었습니다. 이론 자체는 처음 들으면 상당히 난해한 편에 속하는데, 교재를 함께 봐야 이해가 잘 되는 부분도 없지 않아 있습니다. RISC-V ISA, 혹은 MIPS ISA를 기반으로 수업이 진행될 것입니다. 

 Computer Architecture, 흔히 아키텍처라고 불리는 분야는 하드웨어 레벨(회로)과 소프트웨어 레벨 그 사이에 있는 분야입니다. 주어진 소프트웨어 workload에 대하여 하드웨어가 올바르게 작동되도록 하고, 그 작동 방식에 대한 규약을 정하는 것이 바로 아키텍처 분야라고 보시면 될 것입니다. 우리가 일상생활에서 매일 같이 사용하는 컴퓨터가 정확히 어떻게 구성되어 있으며, CPU라는 장치가 어떻게 연산을 처리하고 명령을 수행하는지 배우는 것이 상당히 흥미롭게 다가왔습니다.

 과제는 Verilog 혹은 C++를 사용하여 다양한 CPU 하드웨어들을 직접 구현하게 되며, 아마 대부분의 학생들이 논리설계 및 실험에서 Verilog를 사용해보고 올라올 것이기 때문에 하드웨어 코딩에 대한 어느 정도 지식은 갖춘 상태로 수강하게 될 것입니다. 저 같은 경우에는 논리설계 및 실험에서 Verilog를 사용하지 않았어서 컴퓨터조직론에서 처음으로 Verilog를 접했는데, 관련 자료들과 영상들도 업로드해주시고 튜토리얼도 잘 진행해주셔서 언어에 적응하는 데 큰 무리는 없었습니다.

 아키텍처와 CPU 관련 논문들도 수업 시간 및 과제에서 꽤나 접하게 되는데, 그 예시로 Perceptron Branch Predictor를 구현할 때 Perceptron 관련 논문을 읽고, 그 내용을 적용하여 설계해야 하는 신기한 경험을 할 수 있습니다. Term project는 없지만 Lab 하나하나가 적게는 2~3, 길게는 일주일 넘게 시간을 온전히 투자해야 하기 때문에 실제로 체감되는 로드는 절대 3학점이 아닙니다. Lab도 모두 개인으로 진행되기 때문에 온전히 혼자서 RTL 코딩을 해내야 합니다. 그러나 그만큼 빡세게 공부하고 랩 구현을 하다 보면, 배워 가는 점은 정말 많은 수업입니다. 저 같은 경우는 컴퓨터조직론 수강 경험이 하드웨어 관련 분야로 진로를 설정하는 데 큰 도움을 주었습니다.

 위 그림[1]은 컴퓨터조직론에서 다루는 Pipelined CPU Block diagram입니다. CPU에서의 data  instruction flow를 집중적으로 학습하게 될 것이며, Lab을 구현하다 보면 위 그림을 안 보고 그릴 수 있을 경지에 다다르게 될 것입니다.

 

2. 선배의 조언

 수업 슬라이드가 교재와 겹치는 부분이 꽤 많았어서, 슬라이드를 보고 수업을 들은 후에 제대로 이해가 가지 않는다면 교재를 적극적으로 활용하는 것도 좋은 방법입니다. Patterson & Hennessy Computer Organization and Design, The Hardware/Software Interface: RISC-V edition을 교재로 사용하였는데, 상당히 디테일하고 친절하게 설명되어 있어 부족한 개념을 보충하는 데 큰 도움이 됩니다. 개념을 아는 대로 모두 서술하는 문제들도 있고, 수업시간에 배운 알고리즘들을 실제 상황에 적용해보는 문제들도 출제되기 때문에 슬라이드를 꼼꼼히 이해하고 암기하는 것이 중요하며, 이를 적용하는 연습을 스스로 해보시길 권장드립니다.

 전기과에서 컴퓨터조직론과 분야가 겹치는 과목은 논리설계 및 실험, 디지털 시스템 설계 및 실험 정도가 있으며, 이 중 논리설계 및 실험은 2-2 전필이고 컴퓨터조직론은 3-1 전선필이기 때문에 거의 대부분의 경우 논설을 수강한 후 컴조를 수강하게 됩니다. 논리설계 및 실험에서 배웠던 FSM 관련 개념, 그리고 gate 관련 개념들을 바탕으로 해서 수업이 진행되고, Lab 또한 Verilog로 진행되기 때문에 논설을 충실히 수강하셨다면 도전해 볼만한 과목입니다. 또한 컴퓨터조직론에서 Verilog로 열심히 코딩 경험을 쌓은 후 3-2 전선필인 디지털 시스템 설계 및 실험을 수강한다면 컴조를 미리 듣길 잘했다…” 하는 생각이 드실 것입니다.

 컴퓨터공학부의 컴퓨터구조와 거의 비슷한 내용을 다루며, 서로 호환된다고 생각하시면 됩니다. 

 Verilog라는 언어의 특성상, 구현보다 디버깅에 훨씬 더 많은 시간을 투자하게 됩니다. Verilog는 오류를 띄워줄 수 없기 때문에, testbench를 통과하지 못하면 waveform을 보면서 어느 부분에서 오류가 발생하였는지 일일이 찾는 수밖에 없습니다. 이 과정이 처음 접해보면 상당히 고통스럽고 벽이 느껴지는데, 익숙해지다 보면 어느 signal들을 위주로 봐야 하고, 어느 부분에서 예상치 못한 결과가 나온 것인지 직관적으로 짐작할 수 있게 됩니다. 디버깅이 어렵기 때문에 처음 구현할 때 한번에 완벽하게 구현하는 것이 가장 중요한데, 사실 작성해야 할 코드의 양이 몇천 줄에 육박하기 때문에 거의 불가능하긴 합니다. 다만 최대한 예외 사항들을 잘 고려해야 하고, 특히 변수들을 잘 initialize해주는 것이 굉장히 중요합니다. 코딩하면서 오류가 난다면 initialize issue를 잘 확인해보는 것이 꿀팁 아닌 꿀팁입니다. 

 

3. 진로 선택에 도움 되는 점

 본 과목은 전기과의 컴퓨터 테크에서 대표적인 전선필 과목으로, 하드웨어와 소프트웨어 사이의 interface Architecture 및 Microarchitecture를 다룹니다. 전기과의 컴퓨터 테크는 High-Level Software보다는 Low-Level Hardware에 조금 더 집중된 경향을 보이는데, 컴퓨터조직론이 Hardware 분야의 대표적 과목이라고 보면 됩니다. 요즘 정말 핫한 분야인 AI Accelerator, NPU 등을 제작하는 데에 필수불가결한 지식을 배우며, 실제로 전기과에서 컴퓨터조직론을 가르치시는 교수님 두 분께서도 모두 NPU 관련 연구를 메인으로 진행하고 계십니다.

 현재 우리나라에도 사피온, 퓨리오사, 뉴블라 등 많은 AI 반도체 설계 스타트업이 생겨나고 있으며, AI가 모든 산업의 중심이 된 이상 Computer Architecture  NPU 설계는 매우 유망한 분야라고 확신할 수 있습니다. 다만 분야가 핫한 만큼 도전하는 사람들도 많고, 경쟁자도 많기에 어느 정도 레드 오션이라는 점은 감안해야 합니다.

 전기과 졸업프로젝트에서도 꽤나 많은 주제들이 AI accelerator 관련으로 개설되는데, 이런 경우 대부분 선이수과목에 컴퓨터조직론과 디지털 시스템 설계 및 실험이 포함됩니다. 컴퓨터 테크를 탄다면 거의 필수적으로 갖고 있어야 할 지식들을 다루기 때문에 그 중요도는 전필에 맞먹는다고 생각합니다. 

 

4. 맺음말

 수강신청 변경 기간에 별 생각없이 잡은 과목이지만, 전기과 과목들 중에 가장 challenging했고, 동시에 가장 인상 깊은 수업이었습니다. 결국 진로도 하드웨어와 아키텍처 분야로 설정하는 계기가 된 과목입니다. 하드웨어 RTL 코딩은 C++, Python과 같은 소프트웨어 코딩과 그 감성이 많이 다릅니다. 과감히 도전하시고, 하드웨어의 매력을 느껴보시길 바랍니다.


[1] D. A. Patterson, J. L. Hennessy: “Computer Organization and Design, The Hardware/Software Interface: Risc-V Edition”, Morgan Kaufmann Publishers, 2018

댓글