0. Nintendo Gameboy

윤상면·6일 전
post-thumbnail

학부 시절 가장 재밌게 들었던 전공은 컴퓨터 아키텍쳐 수업이었다. 학부 아키텍쳐는 컴퓨터가 어떻게 구성되어 있고 어떻게 동작하는지를 CPU 및 메모리에 집중하여 가르치는 과목이다.

컴퓨터는 가장 아래 계층인 소자 수준에서 부터 가장 상위 계층인 응용 프로그램까지 다양한 계층으로 구성되어 있다. 너무 복잡하다 보니 계층을 나누어 엔지니어들이 자신의 계층에만 집중할 수 있게 만들게 되었고 이를 abstraction이라고 부른다.

내가 가장 흥미를 느낀 계층이 바로 아키텍쳐였다. 아키텍쳐는 컴퓨터가 어떻게 동작하는지(=functionality)에 관한 일종의 약속을 정하고, 이를 위/아래의 계층에 알려주는 역할을 한다. 자동차를 예로 들면 엑셀을 밟으면 앞으로 나아가고, 브레이크를 밟으면 자동차가 멈춘다는 사실은 제조사와 운전자 모두에게 이미 약속된 사항이다. 엑셀을 어느 정도의 힘으로 밟아야 60km/h에서 100km/h로 올라가는지는 아키텍쳐의 영역을 벗어난다. 이는 자동차 엔진의 스펙 등을 고려해야 하는 마이크로아키텍쳐의 영역이다.

즉 아키텍쳐란 컴퓨터 시스템의 개념적인 구조 및 동작을 프로그래머 입장에서 묘사하는 것을 의미하고, 실제 컴퓨터 시스템이 어떻게 구현되어 있는지와는 무관하다.

LG 그램에서는 돌아가는 게임이 애플 M2 맥북에서는 지원되지 않는 경우를 들어본 적이 있을 것이다. 이는 근본적으로 두 컴퓨터의 아키텍쳐가 다르기 때문이다.

위 사진을 보면 Ubuntu를 설치할 때 Intel or AMD 아키텍쳐인지 ARM 아키텍쳐인지에 따라 선택지가 나뉘어있는 것을 알 수 있다. 일반적으로 Windows에서는 Intel 아키텍쳐를, 애플 실리콘은 ARM 아키텍쳐를 사용한다. 아키텍쳐가 다르다는 것은 자동차로 치면 운전하는 방식이 아예 다르다는 것이다. 그렇기에 Intel 아키텍쳐에서 돌아가는 프로그램이 애플 실리콘에서 돌아갈리가 없는 것이다.

앞으로 아키텍쳐 수업을 들으며 정리한 내용들을 예시 아키텍쳐인 Nintendo Gameboy를 통해 설명하려고 한다.

게임보이는 1989년 일본에서 출시한 콘솔 게임기다. 역사가 오래 되었기 때문에 게임보이의 아키텍쳐는 잘 정리가 되어 있고, 정리된 아키텍쳐를 기반으로 에뮬레이터를 제작할 수 있기 때문에 게임보이를 선정하였다. 에뮬레이터를 잘 구현하여 포켓몬스터 레드 버전을 플레이하는 것이 궁극적인 목표다.

0개의 댓글