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 99891
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [9] 유스티스 18/05/08 120735
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 168482
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 202806
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 252606
176002 [질문] 법알못이 법조인 분들께 질문드립니다. [1] 유러피언드림536 24/04/29 536
176001 [질문] 이 PC 반본체 어떻게 보시나요? [8] 길갈667 24/04/29 667
176000 [질문] 공용 와이파이를 이용한 카카오톡 감찰 가능한가요? [6] 956 24/04/29 956
175999 [질문] 발목골절 일은 언제부터 할 수 있을까요? [5] 정공법704 24/04/29 704
175998 [질문] (ABS 관련)9이닝 전부 류현진이 던지고, 모든 타석에 황재균이 들어오면 [5] 수지짜응1483 24/04/29 1483
175997 [질문] 주차된 오토바이 마후라에 동네 아이가 상처를 입은 경우 책임? [19] 같이걸을까1782 24/04/29 1782
175996 [질문] 영어학원 오픈. 여러분들의 선택은? [11] 교자만두1017 24/04/29 1017
175995 [질문] 시스템에어컨 분해청소 주기가 어떻게 되나요? [5] Mikopap696 24/04/29 696
175994 [질문] 외국계 회사 줌 인터뷰를 보는데 회사 정보가 없을 때 [5] Alfine661 24/04/29 661
175993 [질문] 어플이 국가인식을 이상하게 할때 시도해볼 방법? 아빠는외계인344 24/04/29 344
175992 [질문] 코로나 후유증 후각 과민해지신분들 있나요 [13] 늅늅이630 24/04/29 630
175991 [질문] 상처 났을때 흉안질려면 어떻게 해야할까요? ​ [6] 그때가언제라도474 24/04/29 474
175989 [질문] 마크다운 문서에서 특정 표시한 부분만 모아볼 수 있는 툴이 있을까요? 른밸263 24/04/29 263
175988 [질문] 사무용 삼성노트북 추천 요청드립니다. [4] jjohny=쿠마401 24/04/29 401
175987 [질문]  챔스 준결승 경기 시청 + 창원국제사격장 체험 [6] 학교를 계속 짓자360 24/04/29 360
175986 [질문] 강아지 사료 추천 부탁드립니다. [13] Dončić422 24/04/29 422
175985 [질문] 노이즈캔슬링(갤럭시버즈 등) 질문입니다. [7] wook98450 24/04/29 450
175984 [질문] 혼인신고 후 1년미만인경우 위자료나 재산분할은 어떻게 되나요? [17] 기술적트레이더2906 24/04/29 2906
목록 이전 다음
댓글

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