기계어로 계산기 만들기

김민준·2023년 8월 12일
0
  1. 기계어와 회로

공부하며 느낀 점
참조한 사이트

1. 기계어와 회로

기계어는 곧 회로라고한다.

기계어는 컴퓨터가 이해할 수 있는 2진법으로 이루어진 저레벨의 언어이다
논리 회로는 논리 게이트와 전기적 구성요소로 입력 신호를 받고 출력 신호를 내보내는 것이다.

입력 신호가 논리 회로를 흐르고, CPU는 그것을 기계어로 해석하여 논리 게이트와같은 다양한 하드웨어를 다룬뒤 출력 신호를 내보낸다.

이하의 내용은 해당 영상의 내용을 한국어로 정리한 것이다.

근육은 근섬유 다발로 이루어져있고, 근섬유 다발은 근섬유로 이루어져있듯이, 컴퓨터도 트랜지스터라는 스위치로 이루어져있다.

트랜지스터는 base, collector, emitter, semiconductor (반도체 소자) 로 이루어져 있다.

collector 는 전자를 모으고
emitter 는 전류를 방출한다.
base 와 collector 의 전류의 합으로 증폭이 된다.
base semiconductor 는 스위치 on/off의 역할이다.
전류가 흐르면 True = 1
흐르지 않으면 False = 0

트랜지스터 둘 이상을 직렬로 연결하면 AND-Gate 가 된다.
둘 다 1 이어야지 전류가 흐른다.

원본 이미지에 문제가 있어서 직접 수정하였다.

트랜지스터 둘 이상을 병렬로 연결하면 OR-Gate 가 된다.
하나의 값이라도 1이면 전류가 흐른다.

emit에서 흐르는 전류를 훔치면 NOT-Gate가 된다.
신호의 값을 반대로 바꾼다.

XOR-Gate는 신호의 값이 같으면 False, 다르면 True를 내보낸다.

추상화 abstraction 는 트랜지스터들을 간단한 논리 회로로 나타내는 것을 말한다.

위와같은 2진수를 더하려면 어떤 트랜지스터들을 조합해야할까?

AND 와 XOR 게이트라고한다.
추상화하면 아래와 같다.

HA는 Half Adder의 약자이다.

만약 11 + 11 같은것을 계산하려면 아래와 같이 구성해야한다.

이것을 FA Full Adder라고 한다.

8자리의 2진법 숫자를 더하면 아래와 같다.

낮은 자리 수 부터 왼쪽의 HA부터 오른쪽의 FA로 계산한다.
그리고 다시 뒤집는다.

3*5 는 5를 세번 더하기 (5 + 5 + 5)
7/2 는 몫과 나머지로 표현한다. (3R1)

그때 그때 새로운 회로를 만들면 너무 힘드므로 Subtract 이라는 것이 존재한다.

CPU의 심장인 Arithmetic Logic Unit를 만들기 위해 필요하다.
Arithmetic : 산술, 계산

ALU는 Opcode에 따라 두 개의 2진수의 더하기, 빼기, 1더하기, 1빼기, AND 로직, OR 로직, XOR 로직 등을 수행할 수 있다.
Opcode : operation code 연산[명령] 코드
R : result 와 S : satus [Zero, Negative, Overflow] 를 내뱉는다.
또한 8자리를 초과하면 오버플로우를 내뱉는다.
예) 100000000 + 100000000
→ R : 00000000
→ S : Zero, Overflow

위쪽의 과정을 다 거치면 아래의 형태로 RAM에 정보를 저장하고, CPU에 명령을 내린다.

명령을 순서대로 이행하면, A+B의 값은 B에 저장되고, 1011 : store_b 를 1101 : 13 번 메모리 주소에 넣는다.

공부하며 느낀 점

  1. 하나하나 쪼개니까 이제 이해가 겨우 간다.
  2. 대체 왜 A + B 의 값이 B에 저장되는지 모르겠다.
    그냥 그렇게 만든건가? 어짜피 B의 메모리 주소에 넣는게 아니니까 사실 상관 없을지도 모르겠다.

참조한 사이트

How computers understand programs: From transistors to a CPU (1/3)

[반도체소자] 트랜지스터(Transistor)란 무엇인가

Micro Computer [2] Abstraction in Hardware design

Arithmetic, halt - 네이버 영어 사전

operation code

profile
node 개발자

0개의 댓글

관련 채용 정보