일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 티스토리챌린지
- 구조론
- dfs 백트래킹
- 내란수괴 윤석열
- 분할정복
- Python
- DP
- union find
- 하버-보슈법
- 내란죄
- BFS
- 프림
- 백준
- 내란수괴
- 알고리즘
- 왈왈왈
- 비상계엄
- ccw
- 국민의 힘 뿌리
- 윤석열
- Prim
- 유니온 파인드
- 오블완
- 재귀함수
- dfs
- LCA
- 파비우스 전략
- 다익스트라
- 이분 탐색
- 투 포인터
- Today
- Total
Toolofv 님의 블로그
컴퓨터는 어떻게 동작이 가능할까? 본문
컴퓨터는 0과 1, 이진법을 이용하여 입력 - 저장 - 제어 - 연산 - 출력의 싸이클을 핵심으로 동작하는 장치이다.
현대에는 위 절차가 복합적으로 이루어져 있으며, 입력기기(키보드, 마우스, 마이크, 터치스크린 등)와 출력기기(모니터, 프린터 등), CPU와 저장장치(트랜지스터와 논리회로)의 작동 원리는 개별적으로 올려보고자 한다.
어떻게 해서 컴퓨터가 동작하는지 논리부분을 중점으로 대략적으로 큼지막하게 알아보도록 하자.
논리 부분에서 동작이 가능하다면, 현대의 PC처럼 꼭 전기망, 전자회로을 이용해 구성하지 않을 수도 있다는 말이 된다.
수력을 이용한 컴퓨터도 만들 수 있을 것이다.(중력을 기반으로 한 수로를 이용하는 방법. 물론 효용성은 없을 것이다.)
1. 트랜지스터
트랜지스터를 이용한 회로에 전류가 흐르거나, 안 흐르거나로 0, 1의 신호를 구현할 수 있다.
(트랜지스터, 다이오드는 진공관 시절부터 있었던 것으로 보이며, 해외전화 수신기의 음성 신호를 증폭시키려는 연구에서 시작해 소형 트랜지스터가 개발되었다. 곧 NPN, PNP 트랜지스터에서 중간에 일정 전압을 인가시키거나, 안하는 형태로 스위치로 이용할 수 있다는 것을 알게 되었다. 이 후 집적회로, 마이크로프로세서의 등장으로 개인용 컴퓨터가 나올 수 있는 토대가 되었다.)
2. 논리회로의 조합과 연산장치
0, 1을 구분할 수 있다는 것은 논리회로(AND, OR, NOT, NAND, NOR, XOR 등)의 조합을 이용해서 전가산기(덧셈계산기)를 구현할 수 있다는 말이 된다. 덧셈을 구현할 수 있다면 곧 뺄셈(2의보수를 이용)도 구현이 가능하고, 곱셈, 나눗셈도 가능하다는 말이 된다. 물론 소수점계산은 조금 다른 장치 및 약속을 필요로 하지만 일단 컴퓨터를 구동시키는 핵심 위주로 보면 이 전가산기를 만들고, 메모리 장치만 있다면 컴퓨터를 구현할 수 있는 연산, 저장이 가능하다는 말이 된다.
3. 저장장치와 연산자, 피연산자 구조
또 플립플롭을 이용한 전자회로안에 데이터 저장과 출력이 가능함에 따라 캐시, 레지스터, 메모리, 하드디스크(자기나 빛을 이용해 실제 디스크에 씀), SSD, USB 등의 저장장치를 둘 수 있게 되었고, 프로그램카운터 레지스터(다음 실행할 명령어를 저장해둔다.)로 명령어를 구분, 기억하여 순서대로 실행(연산)하고, 결과를 메모리나 SSD에 저장할 수 있게 되었다. (현대에는 예측실행, 비순차처리, 다중 파이프라인도 가능하다.) 주소를 저장하고 찾아가는 시스템도 전용 레지스터를 이용한다.
위 저장장치의 차이는 독서에 비유를 하면 쉽게 알 수 있는데, 머리에 잠깐 두느냐, 책상에 두느냐, 보는 시점이 드문드문하면 책장에 두느냐, 혹은 더 손이 안가는 정보면 서재에 두느냐 같은 우선순위에 따른 것이라고 보면 된다.
모니터 등의 출력도 이진수로 이루어진 입력을 각 픽셀에 해당하는 출력의 약속(컨트롤러)으로 구현할 수 있고, 문자도 유니코드라는 표준을 두어 구현할 수 있게 된다. (아마 모스부호 전신 시스템 등에 따라 영향받았을 듯. 인터넷도 여기에서 모티브를 얻었을 수 있다.) 여러 표준과 디바이스에 대한 표현 약속, 많이 쓰는 기능, 효율적인 컴퓨터 자원 관리(CPU, 저장장치의 효율적인 분배 및 작동) 등을 조절하는 운영체제 또한 만들어지게 되었고, 프로그래밍 언어 등이 기계어(0, 1)에 가까운 언어에서 조금더 사용자 친화적이게 되고, 여러 개별 프로그램들이 개발되었다. 이후 인터넷의 등장으로 엄청난 변화가 이루어졌고, 현재는 AI에 의한 대변혁을 앞두고 있다.
<CPU 작동 관련 유튜브 영상(출처 : bRd 3D) - 정말 잘만들었다... 강추>
정말 잘 만든 영상인데, 가끔 컴퓨터의 동작원리가 헷갈릴 때는 보고는 한다. 추천.
결국 입력 - 저장 - 제어 - 연산 - 출력 이 가능해짐에 따라 현대 우리가 이용하고 있는 컴퓨터가 존재하게 된 것이다.