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 105482
공지 [질문] [삭제예정] 카테고리가 생겼습니다. [10] 유스티스 18/05/08 127896
공지 [질문] 성인 정보를 포함하는 글에 대한 공지입니다 [38] OrBef 16/05/03 176130
공지 [질문] 19금 질문은 되도록 자제해주십시오 [8] OrBef 15/10/28 209483
공지 [질문] 통합 공지사항 + 질문 게시판 이용에 관하여. [22] 항즐이 08/07/22 260309
178833 [질문] 열혈강호 요즘 어떤가요? [4] OcularImplants232 24/11/30 232
178832 [질문] 플로어스탠딩 스피커 vs 사운드바 [3] 그때가언제라도374 24/11/29 374
178831 [질문] 스팀에 있는 테니스 게임 추천 좀 받습니다. (잡담 포함) Love.of.Tears.527 24/11/29 527
178830 [질문] 발더스게이트3 스토리만 봐도 재밌나요? [11] EnergyFlow1028 24/11/29 1028
178829 [질문] 가상자산(코인) 세금 유예에 대한 의견 [12] 8figures1283 24/11/29 1283
178828 [질문] 차가 지하에 있는데 냉각수 누수인거 같습니다 [7] 하카세1456 24/11/29 1456
178827 [질문] 발더스 게이트 3 최적화충이 해도 재미있을까요? [15] 잘생김용현1328 24/11/29 1328
178826 [질문] 롤러코스터 타이쿤 류의 게임에 흥미가 생겼습니다. [5] 카페알파979 24/11/29 979
178825 [질문] 삿포로+니세코 12월 방문 질문 [2] Scour695 24/11/29 695
178824 [질문] (재질문)컴퓨터 느려짐 현상 질문입니다. [6] 가진자883 24/11/29 883
178823 [질문] 구글 스프레드시트에서 '조건부 서식'만 잠글 수 있나요? [1] 앗흥605 24/11/29 605
178822 [질문] 내년 10월에 연구실에 있는 윈10 컴퓨터는 어떻게 될까요? [6] 해시택995 24/11/29 995
178821 [질문] 컴퓨존에서도 업그레이드 서비스 해주나요 [1] ShamanRobot803 24/11/29 803
178820 [질문] 한글 프로그램 블록 저장 질문입니다. [2] 아르키메데스450 24/11/29 450
178819 [질문] 법인 장기미수채권 채권추심업체 의뢰 문의드립니다 [5] 유유할때유485 24/11/29 485
178818 [질문] 집에 놓기에 jbl bar 사운드바 어떤거 골라야할 까요? [4] 그때가언제라도1400 24/11/28 1400
178817 [질문] 얼굴 피부를 좋게 하는 방법이 있을지요...? [16] nexon2109 24/11/28 2109
178816 [질문] 어렸을때 보던 아버지와 어른이 됐을때 아버지 모습 [4] 틀림과 다름1695 24/11/28 1695
목록 이전 다음
댓글

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