상세 컨텐츠

본문 제목

컴퓨터 동작원리 (진공관, 트랜지스터, 튜링머신, 폰 노이만)

Computer Science/OS

by Yongari 2023. 5. 1. 20:52

본문

트랜지스터(Transistor)
{트랜스퍼 레지스터(transfer resistor)의 합성어}

출처 :  https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%9E%9C%EC%A7%80%EC%8A%A4%ED%84%B0

 

출처 : https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_(%EB%8B%A8%EC%9C%84)

 

사전 지식 

진공관 상식 - 삼성뉴스룸

진공관 나무위키

비트

트랜지스터에 대해 참고한 블로그

이진법

 


 

 

비트의 탄생과 트랜지스터 개념

 

트랜지스터{트랜스퍼 레지스터{transfer resistor)의 합성어}는 연산을 수행하는 가장 기본이 되는 소자이고  CPU, 메모리, 그래픽 카드등에 사용된다. 

그리고 성질이 다른 2가지 실리콘 N형과 P형을 겹쳐 만든다.(NPN형이 있고 PNP형이 있다.) 예를 들어 NPN 트랜지스터는  N형 실리콘 사이에 P형 실리콘을 넣어서 만든다. 그래서 가운데 P형 부분을 베이스(Base)라 부르고 양쪽을 이미터(Emitter), 콜렉터(Collector)라고 부른다.

 

예시))

 


컴퓨터 : 수없이 많은 트랜지스터를 사용해 연산함


E : Emitter - 무엇을 내보낸다는 뜻으로 NPN에서는 전자를 내보내고, PNP에서는 정공을 내보냅니다.

C : Collector - 무엇을 모은다는 뜻으로 Emitter에서 나온 전자 또는 정공을 모읍니다.
B : Base - 기초라는 뜻입니다.


요약

1. NPN : 컬렉터에서 베이스쪽으로 전류가 흘러 들어와야지 컬렉터에서 이미터로 전류가 흐른다.
2. PNP : 이미터에서 베이스쪽으로 전류가 흘러 나가야지 이미터에서 컬렉터 쪽으로 전류가 흐른다.

 

 

위의 왼쪽 그림에 있는 전구에는 불이 들어오지 않는다. 그 이유는 트랜지스터의 베이스 영역인 P형 실리콘이 전하의 흐름을 방해하기 때문이다. 그러나 오른쪽 그림과 같이 베이스에 건전지를 연결해 전압을 가하면 전하의 흐름을 방해하던 베이스의 역할이 사라지면서 전류가 흘러 전구에 불이 들어온다.

 

이와 같이 전압을 가하면 전류가 흐르고, 전압을 가하지 않으면 전류가 흐르지 않는다. 이게 마치 스위치를 켜고 끄는 것과 같아서 스위치 기능이라고 말한다. 전구가 꺼진 상태를 0,  켜진 상태를 1이라고 하면 트랜지스터를 이용해서 0과 1 두숫자를 표현할 수 있다. 컴퓨터는 0과 1만 있다고 한 말은 여기서 나온 말이며 0과 1  둘 중 하나의 숫자값을 나타내는 공간을 1비트라고 한다.

 

 

진공관과 트랜지스터의 특징

 

진공관 

- 부피가 크고 무겁다.

- 가격이 비싸다

- 전기를 많이 먹는다.

 

트랜지스터

- 나노사이즈로 만듬 (10^-9)

- Si 규소 = 흙으로 만들었으며 흙을 구워서 만들어서 단단하다. 

- NPN 트랜지스터는 실리콘으로 구성되어있다. 

- 다리를 base라고 부르며 이미터, 콜렉터 등 다리가 3개가 있다. 

-> 실리콘에서 -, +가 있어서 전기가 흐른다. 

-> 도체 : 전기가흐름(물,금, 구리)  / 부도체 : 전기가 안 흐름(고무, 세라믹) / 도체였다가 부도체였다가 하는 것 : 반도체 

-> 전기가 들어오면 1, 전기가 안 들어오면 0, 트랜지스터끼리 연결해서 스위치를 만들 수 있다. 

-> 987을 대충 111001 111000 110111 1010 이런식으로 표현도 가능하다. 

-> 이진법 11011이라는  숫자를 표현하려면 트랜지스터가 총 5개 필요하다.
트랜지스터 하나로 2진법으로 한 자릿수를 표현하는 것을 1비트(bit)라고 한다. 

 

바이트 단위표 

1바이트 8비트
1KB 1,024 바이트
1MB 1,024 KB
1GB 1,024MB
1TB 1,024GB
1PB 1,024TB
1ZB 1,024PB

 

 

논리소자와 트랜지스터

트랜지스터를 이용해서 계산기를 만들려면 논리소자를 알아야한다. 논리소자는 입력에 따라 특정 결과를 반환하는 대표적인 전기회로다. 대표적으로 AND, OR, XOR, NOT이 있다.



AND

두 입력이 모두 1이면 1을, 하나라도 0이면 0을 반환한다. 

입력 A 입력 B 출력
0 0 0
0 1 0
1 0 0
1 1 1

 

OR

두 입력 중 하나라도 1이면 1, 모두 0이면 0을 반환한다. 

입력 A 입력 B 출력
0 0 0
0 1 1
1 0 1
1 1 1

 

XOR
XOR : 둘 다 같으면 0, 둘 다 다르면 1
NOT:   반대 0을 넣으면 1, 1을 넣으면 0

OR : 입력 2개가 다 0이면 0 입력 2개 중 하나라도 1이 있으면 1, 입력 2개가 다 1이면 1 

 

입력 A 입력 B 출력
0 0 0
0 1 1
1 0 1
1 1 0

 

 

NOT

입력이 하나고 0이면 1을, 1이면 0을 반환한다.

입력  출력
0 1
1 0

 

 

1비트 가산기는 그러면 어떻게 만들까?? 
입력 A와 입력 B를 가지고 다음과 같은 가산기를 만들어보자.

0 + 0 = 0

1 + 0 = 1 

0 + 1 = 1 

1 + 1 = 10 (1+1 = 2 // 2는 2진법으로 10이다. >>  2^1 + 2^0 ), 2진법에 대해 안다면 다음 10이 어떤 뜻인지 알 수 있다. 

입력A 입력B 결과
자리 올림수(AND와 같다.) 합의 결과(XOR과 같다.)
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

AND > 자리올림수

XOR > 합의결과 


1비트 가산기란 입력 A와 입력 B를 받고 AND와 XOR 연산을 실행하는데 위 표와 같은 결과를 가진다.

가산기가 가능하면 곱셈이 가능하고 곱셈이 가능하면 나눗셈이 가능하다. 따라서 가산기+감산기+곱셈+나눗셈 기능을 만들어서 계산기를 만들 수 있다.


위 표를 통해 트랜지스터로 논리 소자를 만들고 논리소자로 계산기를 만드는 전체 흐름을 알 수 있다.


 

그렇다면 간단한 질문을 보자.

 

그렇다면 계산기는 컴퓨터인가? 

아니다. 계산기와 컴퓨터는 다르다!

차이는 무엇인가?

계산기는 프로그래밍을 할 수 없고, 컴퓨터는 프로그래밍을 할 수 있다.

 

프로그램이란 그러면 무엇인가?

정해진 연산을 정해진 순서대로 실행하는 것

 

컴퓨터는 명령을 입력받는다. 어떤 명령을 입력받는가?? 

명령을 opcode로만 이해할 수 있다. 

opcode는 다음과 같은 코드를 말한다. (op = operation의 약자)

ADD = 0011 과 같이 숫자로 지정한 명령어 코드

더보기

 

어셈블리어 등장 

ADD = 3, 4  >> 3이랑 4 더해라 이런 뜻

SUB = 5, 3  

Mov CX ,1  >> CX 레지스터에 1을 복사해라 이런 뜻

MOv AX, 0 


초창기에는 천공카드로 프로그래밍을 했다고 하는데 어떤 방식으로 했는가? 

종이카드에 구멍을 뚫어서 사용하는 천공카드 다발을 사용해서 컴퓨터에 프로그램 명령어들을 제공했다. 

 

 


 

계산기에서 컴퓨터로 진화하다. 튜링머신과 폰노이만 구조

 

최초의 상상속 컴퓨터 : 튜링머신

설명 : 튜링머신  2차세계대전 승리에 크게 기여했으며 2차 세계대전에서 천재 과학자 앨런튜링이 고안한 현대컴퓨터의 시조, 앨런 튜링이 죽고나서 이 튜링 머신에 기초해서 컴퓨터가 만들어짐 앨런 튜링은 이 기계를 a-machine라고 불렀다. (a는 automatic의 준말)
동작방식 : 명령어줄이 있으면 중앙처리장치 즉 상태기계가 해독해서 명령을 실행하고 

다음 명령줄로 포인터가 넘어가는 방식

참고 :애니그마라는 암호를 해독한 튜링 머신




폰 노이만 구조

오늘날 컴퓨터는 튜링머신에 기초하여 폰 노이만 기계를 거쳐 완성한다. 


중앙에 연산을 담당하는 중앙처리장치 : CPU(Central Processing Unit), 명령을 수행함

1. CPU에서 제어장치의 기능은 다음과 같다. 

  1. 명령어 해독(Instruction Decoding)
  2. 명령어 실행(Instruction Execution)
  3. 인터럽트 처리(Interrupt Processing)
  4. 예외 처리(Exception Processing)
  5. 분기 처리(Branch Processing)
  6. 제어 신호 발생(Control Signal Generation)

2. CPU에서 산술/논리장치는 다음과 같다. 

  1. 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈) : ALU는 주로 정수형 데이터를 대상으로 산술 연산을 수행합니다.
  2. 논리 연산(AND, OR, NOT, XOR) : ALU는 논리 연산도 수행할 수 있습니다. 논리 연산은 CPU에서 다양한 용도로 사용됩니다. 예를 들어, 조건 판별, 비트 조작, 보안 기술 등에 사용됩니다.
  3. 비교 연산(==, !=, <, >, <=, >=) : ALU는 비교 연산도 수행할 수 있습니다. 이러한 연산은 조건 판별과 분기 처리에 사용됩니다.


기억 장치 : 메모리
입출력 장치 : 마우스, 키보드, 모니터(디스플레이)
프로그램 정의 : 메모리에 올라가서 CPU에 명령어를 순차적으로 제공하는 명령어 묶음 

컴퓨터: 단순한 명령을 빠르게 수행하는 기계
참고링크 - CPU링크

 

결국 컴퓨터는 다음과 같은 방식으로 동작한다.

1. 한 줄의 명령어를 읽는다.

2. 명령을 수행한다.

3. 다음 줄로 전진한다.

 

 

컴퓨터 동작원리

 

컴퓨터 구성

1. 중앙처리장치 : CPU
2. 메모리 : 휘발성 메모리, 비휘발성 메모리 (각각을 편의상 램 메모리와 하드디스크로 설명)
3. 램 메모리 : 하드디스크보다 데이터 읽기/쓰기가 빠르지만 전원 공급이 중단되면 데이터가 사라지고 휘발성 특징을 가진다.
4. 하드 디스크 : 전원 공급이 끊겨도 사라지지 않는 비휘발성 특징을 가진다.

 

 

프로그램 동작구조

1. 하드디스크에서 프로그램을 로드한다.

2. 램 메모리에서 데이터 로드를 한 뒤 메모리에서 연산에 필요한 데이터를 캐시로 복사한다. CPU 장치에  캐싱을 하고 데이터를 캐싱할 때 주변 데이터도 같이  캐싱한다. (이 때 캐시되지 않은 데이터를 호출하면 캐시미스라고 부르며 이럴 때는 다시 데이터를 

가져온다.)

3. CPU는 데이터를 캐시에서 레지스터로 명령어를 가지고 온다. 그리고 실제로 연산하는 곳은 레지스터인데 이곳에서 

프로그램을 실행한다. (CPU 레지스터 크기는 32비트 컴퓨터에서는 32비트 = 4바이트고, 64비트 컴퓨터에서는 64비트 = 8바이트다. 그래서 64비트 컴퓨터는 한 번에 8바이트씩 연산을 수행할 수 있어서 32비트 컴퓨터에 비해 연산속도가 빠르다.)
4. 프로그램을 종료할 때까지 1~3 반복



프로그램이 컴퓨터에서 동작하는 것을 음식을 만드는 것을 비교하면 다음과 같다.

마트 (HDD) : 속도도 느리고 재료는 여기서 가져온다.

냉장고 : (메모리 (RAM)) : 속도도 빠르고 데이터를 가져올 때 주변에서 데이터도 갖고온다. 그리고 캐싱한다.
이 때 캐싱되지 않은 데이터가 있으면 다시 CPU에서 호출하는 데 이를 캐시미스라 부른다.

도마 : 캐싱으로 쓸 것  같은 데이터를 가져온다. 요리재료등을 가져온다. 

요리사가 있는 곳 : (레지스터, 실제 요리하는 곳) 

레시피 : 요리법, 방법이 적힌 문서 >> 문서는 프로그램이다. 

 

 

참고:

https://www.youtube.com/watch?v=CIyLurz-Ius&list=PLy-g2fnSzUTBHwuXkWQ834QHDZwLx6v6j&index=3 

 

'Computer Science > OS' 카테고리의 다른 글

리눅스 커널 컴파일  (0) 2023.01.01
리눅스 커널 구조  (0) 2022.12.21

관련글 더보기