PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2020/07/15 20:18:43
Name 박수갈채
Subject [질문] 컴퓨터는 어떻게 작동하는건가요…?
엄청 뜬구름 잡는 질문이고 대답하기 애매하고 유치한 질문이지만, 정말 모르겠습니다. 그리고 궁금합니다.

"컴퓨터는 어떻게 작동하는건가요?"

꼬꼬마 시절 워드프로세서 배울 때 하드디스크니 모니터니 스피커니 하는 것들도 배웠고 이후 조건문 and, or... 등등도 무슨 말인지 알겠습니다.

그런데 이런게 모여서 어떻게 계산을 하고 제 눈 앞에 결과물을 띄어놓는지는 모르겠습니다. 뭐라고 할까요, 사용설명서를 보고 물건을 고칠 줄은 알지만 정작 원리는 모르는 원시인이 된 기분이에요.

1.입력을 하면 회로를 통해 전자가 움직인다

2.(블랙박스)

3. 모니터와 스피커를 통해 영상과 소리가 출력된다

이 때 블랙박스 안에 무엇이 들어가나요? 무지렁이를 계몽시켜주실 선각자님들을 찾습니다...

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
아케이드
20/07/15 20:21
수정 아이콘
댓글로 간단히 설명드릴 정도는 당연히 아니고, 컴퓨터의 작동원리가 알고 싶으시다면 아래 서적을 추천드립니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=12207068
부기영화
20/07/15 20:27
수정 아이콘
https://book.naver.com/bookdb/book_detail.nhn?bid=7291158
비슷한 종류의 책들 보시는 걸 추천드립니다.
Earth-200
20/07/15 20:38
수정 아이콘
과거 그것은 알기 싫다 팟캐에서 컴퓨터의 역사를 소재로한 신인류 연대기 편이 있습니다. 에피가 대여섯개 되는데 느긋하게 알아보고 싶다면 추천드려요.
Cazellnu
20/07/15 22:46
수정 아이콘
8086 구조 같은걸 봐도 좋습니다.
20/07/15 23:18
수정 아이콘
1비트 합연산을 수행하는 full adder를 예로 들면, 이건 회로 전체로 보면 3개의 입력(보통 A, B, C_in으로 표시)을 받아서 2개의 출력(보통 S, C_out으로 표시)이 나가는 구조입니다.

입력이 셋 다 0 - 출력은 둘 다 0
입력 중 1이 하나만 존재 - C_out은 0, S는 1
입력 중 1이 두개 존재 - C_out은 1, S는 0
입력이 셋 다 1 - 출력은 둘 다 1

여러 로직게이트를 이용해서 구현하는데, 한두가지 방법만 존재하는 것은 아니고 만들기 나름입니다. 하나만 예를 들어보면, 입력A와 입력B를 XOR게이트(둘 중 하나만 1일 경우에 1이 출력되고, 둘 다 0이나 1이면 0이 출력하는 게이트)에 넣은 뒤, 거기서 나온 출력(A⊕B)과 C_in을 또 다른 XOR게이트에 넣으면 위와 같은 S 결과값을 얻을 수 있습니다. 두 단계를 풀어서 적어보면 아래와 같습니다.

A | B | A⊕B
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0

A⊕B | C_in | S (=C_in⊕(A⊕B))
0 | 0 | 0
1 | 1 | 0
1 | 0 | 1
0 | 1 | 1

C_out쪽도 구현하기 나름인데 하나만 예를 들어보면, 위 A⊕B와 C_in을 AND 게이트(입력이 둘 다 1이면 1이 나가고, 그 외 3가지 경우엔 0이 나가는 게이트)에 넣고, A와 B를 또 다른 AND 게이트에 넣은 뒤, 두 AND 게이트에서 나온 출력(A&B와 (A⊕B)&C_in)을 다시 OR 게이트(입력이 둘 다 0이면 0이 나가고, 그 외 3가지 경우엔 1이 나가는 게이트)에 넣으면 위와 같은 C_out이 나옵니다. 역시 풀어서 적으면 다음과 같습니다.

A | B | A&B
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1

A⊕B | C_in | (A⊕B)&C_in
0 | 0 | 0
0 | 1 | 0
1 | 0 | 0
1 | 1 | 1

A&B | (A⊕B)&C_in | C_out (=(A&B) OR ((A⊕B)&C_in))
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 1

왜 3개를 받아서 2개를 내보내느냐? 수기로 덧셈할 때를 생각해 보시면 알 수 있는데, 가령 아래 두개의 이진수를 더한다면,

0101
0011

맨 오른쪽부터 계산해서 합을 아래에 적고, 자릿수가 올라가는게 생기면 그 앞자리 윗부분에 적어서 세개를 더하는 식으로 순차 진행하죠. 여기서 아래에 적는 부분이 S가 되는 것이고, 앞자리 위에다 적는 부분이 C_out인데, 이 부분이 곧 다음 full adder 회로의 C_in이 됩니다. 즉 이런 회로를 32개 이어 붙이면 32비트 덧셈을 할 수 있고, 64개 붙이면 64비트 덧셈을 할 수 있습니다. 나머지 사칙연산도 기본적인 구현 방식은 같습니다. 저걸 구성하는 게이트 하나하나의 작동원리는 트랜지스터의 작동원리를 보시면 됩니다. 보통 몇개의 트랜지스터를 묶어서 하나의 게이트를 구현합니다(구현방법이 여러가지인 것은 여기서도 동일합니다).

실제 CPU에서 들어있는 연산유닛은 단순히 멀티비트 사칙연산을 수행하는 유닛이 아니라 다양한 연산(수기로 계산하면 하나만 계산하더라도 결과값의 정확성에 대한 자신감을 잃을만큼 복잡한 연산을 다수 포함합니다)을 동시에 비동기식으로 처리할 수 있는 훨씬 더 복잡한 유닛이고, 이런게 코어마다 여러개씩 들어있는데다 거기다 명령어를 뿌리고 자료를 불러오기 위한 구조가 매우 복잡해서 이런 식으로 풀어서 쓸 수는 없습니다. 예를 들어서 아래 다이어그램에 INT ALU라고 적힌 것과 그 지역에 있는 것들 하나하나가 방금 말한 '훨씬 더 복잡한 유닛'인데, 그럼에도 불구하고 이런 것 하나하나가 전체의 극히 일부를 구성하는 요소에 불과합니다. 구성요소 하나하나를 겉핥기 수준으로라도 보려고 해도 얼마나 복잡한지 느낌이 오실겁니다.
https://en.wikichip.org/w/images/thumb/7/7e/skylake_block_diagram.svg/1350px-skylake_block_diagram.svg.png

요즘 CPU를 도저히 설명할 수 없는 것은 물론이고, 석기시대 물건(60-70년대)이나 단순 사칙연산밖에 안 되는 단순 계산기에 들어가 있는 칩도 당연히 위 예시보다는 훨씬 복잡해서 하나하나 예시를 들어 적을 수 있을만한 레벨이 아닙니다. 위에 언급한 예시 덧셈회로는 5 게이트로 구성되어 있고, 8비트로 만들어도 40 게이트인데, 석기시대 4-8비트 CPU들도 보통 게이트 수가 수백-수천개에 수천-수만개의 트랜지스터를 달고 있어서, 예시를 드는건 분량상 불가능하고, 수식으로 표현하거나 그림으로 적더라도 구조를 정확하게 파악하려면 한참 들여다 봐야합니다.

그리고 컴퓨터의 작동에 영향을 미치는 것으로는 단순히 CPU 로직 부분만 존재하는 것이 아니고, 컴퓨터를 구성하는 각종 부품은 물론이고, OS나 네트워크 등 하드웨어와 소프트웨어가 반쯤 물린 부분, 그리고 순수 소프트웨어 부분까지 다 영향을 미치는데, 이런 요소 하나하나가 다들 얼추 비슷한 복잡성을 가지고 있습니다. 즉 관련 대기업의 연구원이나 엔지니어라고 하더라도, 컴퓨터 전범위에 걸쳐 겉핥기 수준으로라도 알고 있는 사람이 그리 많지 않습니다. 외우고 있지는 않지만 대강의 기억(=더 심한 겉핥기)은 있으면서 겉핥기 레벨 정도까진 금방 찾아보고 금방 알아먹는 정도만 되어도 중간은 훨씬 넘고, 사실 자기 회사에서 자기가 담당하는 분야로 한정하더라도 그 부품을 구성하는 여러 요소의 세부 작동원리에 대해서 하나하나 겉핥기가 가능한 수준이면 중간은 넘는다고 봅니다. 뭔지 잘 모르지만 하던거 한다 같은 타입의 근로자가 태반입니다. 이런 현상이 컴퓨터 쪽에서 상대적으로 심한건 맞는데, 시장규모가 큰 물건들(자동차 등)은 정도의 차이가 있을 뿐 대체로 이런 식입니다.
마술사
20/07/16 20:49
수정 아이콘
흔히 말하는 디지털 이라는게 0 과 1로 이루어진 데이터를 말하죠. 컴퓨터 회로안에서 전기가 흐르면 1, 전기가 안흐르면 0 으로 구분하는 방법으로 디지털 데이터를 저장하거나 연산할수 있어요. 이게 컴퓨터입니다.
박수갈채
20/07/16 22:18
수정 아이콘
답변주신 모든 분들 감사합니다!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
공지 댓글잠금 [질문] 통합 규정(2019.11.8. 개정) jjohny=쿠마 19/11/08 105368
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [10] 유스티스 18/05/08 127758
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 175948
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 209334
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 260157
178756 [질문] 인텔 CPU 안전한가요? [15] 적막932 24/11/25 932
178755 [질문] 블루투스 스피커 괜찮은거 추천 부탁드립니다 [1] 시무룩500 24/11/25 500
178754 [질문] 백종원의 예산시장 젠트리피케이션이 어떻게 가능한건가요? [4] 시드마이어1297 24/11/25 1297
178753 [질문] 1인 프로젝트 업무 하기가 너무 어렵습니다(업무모드 체인지?) [7] 장마의이름978 24/11/25 978
178752 [질문] 컴퓨터 느려짐 현상 질문입니다. [2] 가진자874 24/11/25 874
178751 [질문] 안경 쓰시는 분 겨울 눈시림 어떻게 해결하시나요? [3] 다이어트1102 24/11/25 1102
178750 [질문] 앤커 q35 보다 좋은 헤드폰은 어떻게 더 좋나요? [5] 그때가언제라도1119 24/11/24 1119
178749 [질문] 스위치 중고로 살 때 주의점(+ 다른 게임기도?) [5] 깃털달린뱀1299 24/11/24 1299
178748 [질문] 롤 봇전 난이도가 쉬워졌나요? [8] INTJ1636 24/11/24 1636
178747 [삭제예정] 가게에 불편한 친구가 계속 들어옵니다. [11] Croove2924 24/11/24 2924
178746 [질문] 그래픽카드를 업글하고 게임 프레임이 더 떨어졌습니다. [6] 쏘군1071 24/11/24 1071
178745 [질문] 요새 컴조립시 램(보드) 어떻게 사야 하는 건가요? [5] wook98811 24/11/24 811
178744 [질문] 삼산체육관 인근 맛집 추천 부탁드립니다 오징어개임789 24/11/24 789
178743 [질문] 해외여행시 통신사 로밍의 장점이 무엇인가요 [17] 종이컵1242 24/11/24 1242
178742 [질문] 해외여행을 알리고싶지 않을 때 로밍 해결방법 [4] 966 24/11/24 966
178741 [질문] 유치원생이 읽을만한 피아노교본 있을까요? [4] 아빠는외계인608 24/11/24 608
178740 [질문] 식재료가 오래 보관된다는 용기 써보신분들 계신가요? [8] INTJ1148 24/11/24 1148
178739 [질문] 내일 대장내시경이라 아침으로 죽 먹었는데 벌써 너무 배고파요 [3] 유랑974 24/11/24 974
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로