Master Piece of jun/컴퓨터구조

ISA(Instruction Set Architecture)와 Machine Dependent

JUNFUTURE 2023. 1. 26. 21:38

컴퓨터 구조나 개론 수업을 듣다보면
컴퓨터마다 다르다. 머신 디펜던트 하다.
라는 말을 듣는 경우가 많다.

이 글은 Machine Dependent(기계 종속성, 의존성)가

무엇인지, 컴퓨터 수업에서 이러한 표현이 무슨 뜻인지 이해하기위해 작성되었다.

 

Dependent 하다

우선, '무엇인가가 어떠한 것에 의존적(Dependent)이다.' 라는 개념을 정의하려고한다.
'A는 B에 의존적이다.' 라는 표현은

A는 B가 변경되면 반드시 변경된다는 것을 의미한다.

 

어떻게 변경되는지(A가 어떻게 변경? B가 어떻게 변경?)는 헷갈리니 고려하지말고
B에 변경이 발생하면 A도 반드시 변경되어야한다는 사실에 주목하자.

예를 들어보면
학교의 칠판을 화이트보드로 바꾼다고 생각해보자

 

칠판에는 분필을 이용해 판서를 하고

화이트보드에는 보드마카를 이용해 판서를 한다.

 

만약 학교의 칠판을 화이트보드로 바꾼다면

강의자가 사용하는 펜도 반드시 그에 맞게 변경되어야한다.

칠판에는 보드마카를 쓸 수 없고
화이트보드에는 분필을 쓸 수 없기 때문이다.

칠판에는 꼭 분필로만 써야한다.

화이트보드에는 꼭 보드마카로만 써야한다.

라는 개념이 중요한 것이 아니라

 

칠판이 화이트보드로 바뀌면 사용해야하는 펜이 분필인지 보드마카인지 모르겠는데

어찌되었던 그에따라 사용하는 펜이 바뀌어야한다는게 '의존성(Dependent)'의 핵심이다.

 

Machine Dependent 하다

결론부터 이야기하면 여기서의

Machine은 PC(Personal Computer)가 아니다.
내 컴퓨터 네 컴퓨터가 다르니 달라진다가 아니다!

Machine에 따라 다르다는 것은 CPU 종류에 따라 다른 것이다.

여기서 CPU 종류는 CPU 회사가 결정한다.

 

intel, AMD, Samsung 같은 회사말이다.

 

intel은 x86-32라는 이름의 ISA(Instruction Set Architecture)를 개발하여
본인들이 개발한 CPU에 적용했고

 

AMD는 AMD64라는 이름의 ISA(Instruction Set Architecture)를 개발하여

본인들이 개발한 CPU에 적용했다.

정리해보면, Machine Dependent에서 Machine이란 CPU고

따라서 Machine Dependent 하다는 것은 CPU 종류에 따라 달라진다는 것이다.

 

ISA(Instruction Set  Architecture)

CPU의 종류에 따라 무엇이 달라질까?무엇이 Machine Dependent 할까?

 

바로 ISA(Instruction Set  Architecture)이다.

ISA는 CPU에 Dependent하다.

ISA는 Machine Dependent하다.

 

ISA이 뭘까?

ISA는 기계어 코드로 CPU가 어떻게 동작하는지 정하는 방식이다.

정하는 방식(== 약속, 규칙, 방법, 프로토콜..)임에 집중하자.

instruction.. 소스코드.. 어셈블리어.. 기계어.. 바이너리..

다 생각하지말고 개념만 우선 이해해보자.

 

CPU가 일을 하려면

CPU에게 명령을 줘야한다.

 

컴퓨터 안에 저장되는 모든 값들은 0101로 저장되기때문에

당연히 CPU에게 명령을 시키기위한 명령문도 0101로 되어있다.

 

예를들어

 

01011011

 

이라는 기계어 명령문이 있을때

 

CPU가 이 명령문을 만나면,
1. 메모리에서 값을 꺼내오게하자
2. 메모리에 값을 넣게하자

3. 덧셈을 하게하자

4. 뺄셈을 하게하자

5. 점프를 하게하자

등등..

 

해당 기계어 명령문 한 줄에
그 명령을 받았을때 CPU가 해야할 일을

무수히 많이 대응시킬 수 있다.

 

예를들어

A CPU 회사는 저 01011011 이라는 기계어 명령어를 만나면

1. 메모리에서 값을 꺼내오게하자
라는 동작을 수행하는 CPU를 만들었고

 

B CPU 회사는 저 01011011 이라는 기계어 명령어를 만나면

4. 뺄셈을 하게하자
라는 동작을 수행하는 CPU를 만들었다.

 

이 차이가 바로 CPU 종류에 따른 ISA의 차이이다.

 

A 회사의 CPU는 01011011 이라는 기계어 명령어를 만나면

메모리에서 값을 꺼내오는데, 기계어 명령어 01011011을 입력했으니
뺄셈을 할거라는 기대를 할 수가 없다는 것이다.

 

즉, A회사의 CPUA회사의 ISA에 Dependent하다.

 

결론

CPU는 ISA에 Dependent하고

ISA는 CPU에 Dependent하다.

 

CPU 종류가 바뀌면 ISA가 바뀌어야하고

ISA가 바뀌면 CPU 종류가 바뀌어야하기때문에

서로 Dependent한 관계이다.

 

하지만 CPU는 Machine Dependent하다.

라는 표현은 어색하다.

 

Machine이 CPU 그 자체이기 때문이다.

 

이해되었으면하는 두문장

- ISA는 Machine Dependent하다.

- CPU와 ISA는 서로 Dependent하다.