비트란 무엇일까

아마 컴퓨터 과학에 관련한 책을 들춰보면 제일 먼저 배우는 것이 비트가 아닐까 싶다.
전공자들은 어떨지 모르겠으나, 비전공자인 내 입장에서 비트는 전구가 꺼짐 켜짐 또는 참 거짓으로 다가왔는데 그래서 이런 것들이 과연 어떤 의미를 가지는지 근본적인 의문이 들기 시작하였다.

논리 연산자는 왜 필요할까

AND연산자든, OR이든 NOT이든 뭐가 되었든 논리연산자들의 출발은 전기의 흐름이다.
나처럼 이 부분에 대해서 간과하고 지나가면 이것들이 문장으로는 와닿으나 그래서 뭐 어쩌라고 싶은 마음이 분명히 들 것이다.
간단하게 설명하고 넘어가자면 0과 1은 사실 전구를 켜고 끔 그러니까 전기가 오느냐 마느냐로를 기준으로 의미를 부여받게 된다.
그리고 cpu아키텍처들은 명령어 집합을 정의하고 해석하는데, 이때 사용되는 것이 바로 전기신호를 조절하는 논리 게이트들의 조합이다.

논리 게이트는?

논리 게이트는 전기가 흐르느냐 마느냐에 따라서 입력을 처리하고 출력을 생성한다.
이 과정에서 AND게이트를 통해 두 입력에 대해 모두 전기 신호가 들어올 때에만 출력을 할 것이냐, OR게이트를 통하여 두 입력 중 하나 이상에 신호가 들어왔을 때에도 출력을 할 것이냐 등등을 정하게 된다.
그리고 이러한 0과 1의 묶음들을 모아 하나의 동작을 만들면 이를 명령어 인스트럭션이라고 부르게 된다.
유의점은 0과 1을 엮어 어떤 특정 규칙에 따라 만들어놓은 언어를 기반으로 하나의 동작을 만드는 것으로 대표적인 예시로는 load명령어가 있다.

트랜지스터와의 관계

트랜지스터는 전자장치의 한 종류로 전기의 흐름을 제어하는 역할을 한다.
우리가 load명령어나 스토어 명령어를 만들 때에 편의상 0과 1로 디자인하는 것 역시 기본에서부터 바라보면, 전기의 흐름을 어떻게 할 것인가를 정한 뒤 그것을 해석하는 것이나 마찬가지이다.
즉 트랜지스터가 컨트롤하는 전기의 흐름의 유무에 따라 우리는 그것을 0과 1이라는 비트로 표현하기로 사회적 약속을 하였으며 이 비트는 데이터를 표현할 수 있는 가장 작은 단위인 것이다.

워드와 비트

워드는 cpu상에서 한번에 처리 가능한 가장 작은 데이터 단위이다.
따라서 비트처럼 모든 cpu에서 천편일률적으로 같은 크기를 가르키는 것이 아니라, 어떤 아키텍처를 썼느냐에 따라서 변동되는 것이다.

cpu 아키텍처

ARM기반 아키텍처를 예시로 들어보자면, cpu를 자기가 디테일한 설계를 했을 때 모든 전기 신호에 대해 내가 어떤 의미를 부였는가를 설명하려면 수십시간이 걸릴 수도 있다.
그래서 자신이 만든 부분에 대해 체계화를 하고 구조적으로 약간의 광고성을 섞어서 표현하는 것이 바로 cpu아키텍처이다.
나도 이 부분에 대해서는 잘 와닿지 않아 임베디드 개발자에게 지인 찬스를 써본 결과, 모든 세부사항을 설명하려면 굉장히 오랜 시간이 걸리기에 아키텍처는 핵심적인 부분을 강조함과 동시에 설계자 자신이 강조하고자하는 특징 및 장점에 기반하여 설명하는 경향이 있다고 한다.

댓글남기기