컴퓨터는 어떻게 작동합니까?


40

나는 몇 년 동안 컴퓨터 대단했다. 나는 몇 가지 언어로 프로그래밍 할 수 있고 심지어 그것들을 만들 수도 있습니다. 나는 다른 날 친구와 앉아서 컴퓨터가 실제로 전기를 사용하고 무언가를하는 방법을 물었고, 우리는 그것을 알아낼 수 없었고, 구글도 그다지 도움이되지 않았습니다.

내 말은, 컴퓨터가 어떻게 일정한 전기 흐름을 가져 와서 1과 0으로 바꾸고 실제로 1과 0으로 무언가를 15 초 동안 켜 놓는 것입니까?

나는 게이트 (AND, OR, NOR, NAND, NOT)와 다이오드 , 저항트랜지스터 에 대해 조금 이해 하지만 이것이 진정한 평신도 용어로 설명하기에 완벽한 장소라고 생각했습니다!

아무도 올바른 방향으로 나를 가리켜 주거나 간단한 설명을 해 줄 수 있습니까?


8
"박테리아는 어떻게 작동합니까?"를 물을 수도 있습니다. 이것은 매우 광범위한 질문입니다. 간단한 프로세서 아키텍처 (예 : MIPS ; 우리는이 클래스에서이 기술을 배웠습니다)를보고 아래에서 위로 작업하는 것이 좋습니다. 그 과정에서 직면 한 질문은 아마도이 질문보다 스택 교환에 훨씬 더 적합 할 것입니다.
Raphael

3
나는 박테리아가 어떻게 작동하는지 알고 있습니다. 그것의 컴퓨터는 제가 lol을 얻지 못합니다
Christian

14
엘프. 작은 마술 요정.
JeffE


1
컴퓨터가 실제로 가장 낮은 수준에서 작동하는 방법을 배우는 가장 좋은 방법은 fpga 또는 Nand 게이트에서 수동으로 간단한 마이크로 컨트롤러를 설계하는 것입니다. 나는 "컴퓨터 아키텍처"수업에서이 작업을 수행했으며 실제로 눈을 뜨게되었습니다. 모든 것을 최소한으로 유지하고 추가, 비트 조작 및 조건부 점프가있는 4 비트 컨트롤러를 설계하면 어렵지 않습니다. 또는 간단하게 튜링 머신을 구현하는 하드웨어. 흠,이 쥬 트는 나에게 아이디어를 주었다. 좋은 통찰력을 줄 것입니다.
vsz

답변:


47

이것은 쉬운 대답이없는 광범위한 질문입니다. 전자가 구리선을 따라 튀어 나와 Firefox에서 웹 사이트를 렌더링하는 데까지 먼 길입니다. 나는 당신에게 개요를 아래에서 위로 제시하고 당신이 올바른 것들을 찾아 보도록 노력할 것입니다.

인코딩 번호

기본 동기는 산술 ¹과 같이 사물을 계산하는 것입니다. 가장 먼저 볼 것은 숫자를 나타내는 방법입니다. 십진수 또는 삼항을 사용하는 많은 접근 방식이 있었으며 8 진 시스템조차 생각하지만 결국 이진이 나왔습니다. 이제 우리는 두 가지 값을 처리하는 장치를 만들어야한다는 것을 알고 있습니다. 과 이라고합시다 .101

이진수로 숫자를 인코딩하는 방법에는 여러 가지가 있습니다. 첫 번째 프로세서를 구축 한 후 특정 방식으로 작업을 수행 할 때의 이점을 알게됩니다. 널리 사용되는 예는 두 개의 보완IEEE float 입니다. 우선, 일반 자연수로 제한하십시오.

게이츠

바이너리 인코딩을 사용한다고 가정하자. 초등학교에서 추가배운 방법을 생각 하고 이진수에 대해서도 똑같이 적으십시오. 부울 대수 의 빌딩 블록 은 이미 당신을 위해 존재합니다; 로직 게이트를 사용하여 기본 가산기 (및 기타 산술 함수)를 쉽게 구축 할 수 있습니다 .

이러한 문을 만드는 방법은 컴퓨터 과학의 범위를 벗어납니다. 전자 공학 은 예를 들어 튜브 또는 트랜지스터를 사용하여 여러 솔루션을 제공했습니다 . 이에 대한 질문은 전기 엔지니어링 스택 교환 으로 이동하십시오.

시계와 상태

모든 게이트가 똑같이 빠르지는 않으며 계산의 모든 부분에 동일한 수의 게이트가있는 것은 아닙니다. 따라서 우리는 개별 작업이 서로를 추월하지 않도록 특별한주의를 기울여야합니다. 전역 시계 를 사용하는 것이 유용한 것으로 입증되었습니다 . 주어진 게이트 네트워크의 결과는 사이클이 끝날 때 출력 와이어의 상태입니다 (게이트가 개별 최종 상태를 향해 계단식으로 배열하는 동안 격렬하게 변경 될 수 있음).

즉, 루프를 연결하는 경우와 같이 다음 사이클이 시작될 때까지 한 사이클의 결과를 저장해야 할 수도 있습니다. 다양한 효과에 사용할 수있는 여러 가지 기본 요소가 있으며 모두 게이트에서 구성됩니다. 일부는 플립 플롭 이라고 합니다. 그것들은 필요에 따라 많은 클럭 사이클 동안 숫자를 저장하는 요소 인 레지스터 를 빌드하는 데에도 사용됩니다 .

아키텍처 및 명령

이제 수많은 디자인 선택이 가능합니다. 프로세서는 어떤 산술 연산을 제공합니까? 당신의 명령은 어떻게 생겼습니까? 초기 설계가 다른 설계에 비해 쉬운 MIPS 아키텍처 를 살펴 보는 것이 교육적 일 수 있습니다 . 계획을 살펴보십시오 .

MIPS 싱글 스테이지
http://ube.ege.edu.tr/~erciyes/CENG311의 원본

기본적으로 명령, 레지스터 세트, ALU 및 제어를 가져오고 분해합니다 . 명령은 어떤 피연산자에 대해 수행 할 ALU 연산 (보유 된 레지스터 수에 따라), 프로그램 카운터 조작 방법 또는 메모리에서로드 / 저장할 레지스터를 ³ 인코딩합니다.

추가 고려 사항

이제 메모리를 구축하는 방법과 명령을 공급하는 방법을 알아 냈다고 가정하면 현대식으로 작동하는 프로세서가 있습니다. 현대 기계로가는 길에는 많은 선택이 필요합니다. 여기 몇 가지가 있습니다 :

대안

위의 내용은 역사가 어떻게 나타 났는지에 크게 영향을받습니다. 마음이 다른 세계에서는 컴퓨터가 다르게 작동 할 수 있습니다. 실제로, 많은 계산 모델이 있으며 , 그 중 일부는 많은 경우 실제 기계에 대한 추상화로 유용하게 만드는 장점이 있습니다. 또한 뇌가 작동하는 방식, 즉 신경 컴퓨팅 을 가능하게 하거나보다 일반적으로는 DNA양자 컴퓨팅 과 같이 자연 에서 관찰되는 문제 해결 및 정보 저장 전략 을 활용 하려는 시도를 모방하려는 시도가 있습니다 .

아마도 위의 정보는 50 년에서 100 년 후의 모든 고대 역사 일 것입니다.


  1. 오늘날 컴퓨터로하는 모든 멋진 일은 프로세서가 하나씩 실행하는 많은 작은 산술 작업으로 나뉩니다.
  2. 모델에서 프로그램이 제어 흐름을 조작 할 수 있도록 허용하면 프로세서가 다음 명령을받는 메모리 주소가됩니다. 테이프와 같은 고정 된 명령 세트 만 읽는 기계를 생각할 수도 있습니다. 실제로 초기 구현은 그렇게했습니다. 점프가 없다는 것은 루프가 없다는 것을 의미합니다. 프로그램은 데이터에 따라 완전히 풀리거나 펼쳐진 일련의 명령이었습니다. 분명히 여러 입력 데이터에 동일한 프로그램을 사용할 수있는 것이 더 강력합니다.
  3. 당신이 기억이 있다고 가정; 프로세서는 제대로 작동하지만 한 번에 너무 많은 값만 처리 할 수 ​​있습니다. 초기 컴퓨터는 테이프에서 모든 데이터를 읽고 레지스터에 보관했습니다. 오늘날 우리가 알고 있듯이 쓰기 가능한 영구 스토리지는 물론 메모리도 없었습니다.

와! 박수를받을 자격이 있습니다. 대단한 읽기였습니다. 공유해 주셔서 감사합니다. 나는 확실히 무언가를 배웠다. 비록 그것을 읽은 후에, 내가 알고 싶은 것은 그것이 물리적으로 전기를 제어하는 ​​방법에 관한 전기 공학의 기본이라고 생각합니다. 오늘도 같은 질문을 그 그룹에 게시하겠습니다. 감사합니다!
Christian

1
아마도 "기계 부분에 대한 대화"를 포함시켜야했을 것입니다. 즉, 인간이 효율적으로 작업 할 수있는 언어를 설계하고이를 컴파일러와 함께 지정한 명령 세트로 번역 할 수 있습니다. 이것들은 컴퓨터 과학 의 핵심 주제이며 제 대답의 자료는 대부분 컴퓨터 공학 입니다.
Raphael

나는 그것이 빠른 대답이 아니라고 생각합니다. 언젠가는 기본 원리가 작동하는 방식으로 마더 보드 또는 휴대 전화와 같은 것을 만드는 컴퓨터 엔지니어에게 돈을 지불합니다. 즉, 컴퓨터가 실제로 5 초 동안 빛을 계산하거나 켜는 방법. 스위치 및 커패시터와 많은 관련이 있다고 생각합니다.
Christian

@Christian 돈을 절약하려면 트랜지스터가 포함 된 EE 실험 상자 (예 : 어린 이용)를 구입하는 것이 좋습니다. 조명을 바꾸거나 작은 가산기를 만드는 것이 일반적으로 포함됩니다. (다시 말해서, 전기 공학 사람들은 아마 더 많은 것을 알고있을 것입니다.)
Raphael

25

완전한 그림은 상당히 복잡합니다. 서로 전압 층 위에 높은 수준의 추상화를 총괄적으로 구현하는 층이 많이 있습니다. 특히 지난 50 년 동안 컴퓨터 하드웨어와 소프트웨어가 급격히 발전했다는 점을 고려하면 모든 것이 어떻게 구성되는지에 대한 간단한 설명은 없습니다.

모든 것이 어떻게 구성 되어 있는지 알고 싶다면 NAND 게이트로 시작하고 컴파일러와 운영 체제 위에 Tetris의 작동 구현을 점진적으로 구축하는 책인 The Elements of Computing Systems 를 확인하십시오. 당신도 빌드합니다. 각 컴퓨터는 이전 컴퓨터를 기반으로하므로 모든 것이 어떻게 작동하는지 확인할 수 있습니다.


완벽한 출발점 인 것 같습니다. 거기서부터 시작합니다. 대단히 감사합니다 :)
Christian

2
Charles Petzold의 CODE도 읽는 것이 좋습니다.
ybakos

7

팟 캐스트 보안! 기본 원리부터 컴퓨터 작동 방식에 대한 시리즈를 수행했습니다.

  • 233- 컴퓨터 디자인 (1 부)
  • 235- 기계어
  • 237- 간접 : 포인터의 힘 (기술적으로 시리즈의 일부가 아님)
  • 239- 스택, 레지스터 및 재귀
  • 241- 하드웨어 인터럽트
  • 247 -은 "멀티"-verse
  • 250- 운영 체제
  • 252 -RISCy 비즈니스
  • 254- 속도를 위해 무엇을 할 것인가

숫자의 격차는 다른 모든 에피소드가 리스너 피드백 에피소드이기 때문에 시청할 수도 있기 때문입니다. 또한 241에서 247 사이에 CA가 CA에 루트 인증서를 제공하도록 강요 한 국가에 대한 뉴스 속보로 인해 SSL에 대한 몇 가지 에피소드를 작성했습니다.

또한 EP. 248 은 "휴대용 개 살인자"로 개를 죽이지 않고 스티브가 아이로 스스로 만든 소닉 빔 무기로 울타리 선까지 올라가지 않고 보도에서 사람들을 공격하지 않도록 가르치고 있습니다. .


흥미로운! 공유해 주셔서 감사합니다. 나는 볼 것이다.
Christian

4

컴퓨터는 일관 되고 정의 된 방식으로 에너지 기울기 (1과 0으로 해석)를 조작하여 작동합니다 . 컴퓨터를 정의하는 것은 일관성 이며 다른 프로세서를 구분하는 정의 입니다.

또한 두 개의 논리 게이트 (OR 및 AND)만으로도 범용 컴퓨터를 구축하기에 충분한 구성 요소가 무엇인지 알아보십시오. Danny Hillis와 Tinkertoy 컴퓨터도 참조하십시오.


TinkerToy, 특히 그것이 항상 이긴다는 사실에 대한 흥미로운 기사였습니다! ( science20.com/brain_candyfeed_your_mind/… )
Christian

그러나 컴퓨터가 어떻게 '생각'하는지에 대한 좋은 통찰력을 제공하지만, 이전에 주어진 다음 답변을 찾을 수있는 모든 조합과 메커니즘을 제공함으로써 실제로 컴퓨터를 만드는 방법에 대한 원래의 질문에 대답하지는 않습니다. 기본 비트 (트랜지스터, 저항, 커패시터, 게이트 등)를 구입하고 매우 기본적인 컴퓨터를 갖도록 구성하기 위해 로컬 전기 하드웨어 상점 (모든 것을 갖추고 있음)으로 향한다고 가정하면 무엇이 필요합니까? 결국, 첫 번째 컴퓨터는 비트와 와이어가있는 창고 크기 였으므로 가능해야합니다!
Christian

@Christian : haha, 알았어. 기본 메모리 저장을위한 몇 가지 기본 논리 게이트 (AND / OR / NOT) 일부 플립 플롭을 빌드하면 두 개의 4 비트 숫자를 추가 할 수있다.

슬리퍼가 있어요! 실제로 두 쌍.
Christian

3

컴퓨터는 큰 동기식 논리 시스템 이므로

  • 0/1
  • (매우 빠른) 클럭으로 작동하므로 일관성을 보장하기 위해 모든 신호가 개별 순간에 샘플링됩니다.

0/1

컴퓨터에 전원이 공급되는 동안 (RAM, 대량) 정보를 유지하는 특수 회로가 있습니다. 이진 산술을 수행하는 특수 회로가 있습니다 (실제로 비트는 그룹으로 (일반적으로 8의 배수로) 정수로 표시됨) 처리됩니다. 또한 메모리 주소를 기반으로하는 특수한 라우팅 기능이 있으며 이는 정수에 지나지 않습니다.

마지막으로, 현대 컴퓨터에는 RAM으로 저장된 프로그램이 있습니다.이 프로그램은 정수로 코딩 된 명령어 목록으로, 순차적으로 실행되며 일반적으로 메모리에서 데이터를 가져오고 일부 산술을 수행하고 결과를 메모리로 다시 보냅니다.

시나리오에서 경과 시간이 RAM 어딘가에 저장되고 프로그램이 지시하는 구현을 생각할 수 있습니다.

  • 경과 시간 값을 가져옵니다.
  • 가산기로 증분
  • 비교기를 사용하여 사전 정의 된 지연과 비교하십시오.
  • 불평등 (예 : "루프")의 경우 시작 프로그램 주소로 돌아 가기
  • 그렇지 않으면 RAM이 아닌 외부 스위치로가는 특수 신호를 설정하십시오.

오늘날 이러한 모든 요소는 고도의 정교함을 달성하며,이 간단한 개요의 모든 문장은 몇 의 설명이 필요합니다.


-1

지연 기능을 수행하거나 이진 데이터를 십진 데이터 또는 신호 강도로 변환하는 방법에는 여러 가지가 있습니다. "15"값을 입력하면 컴퓨터에 숫자 15의 비트 맵 이미지가 화면에 표시됩니다. 이것은 실제로 이진 값입니다. 현재 키보드의 이진 코드도 CPU에 전송되었습니다. 데이터를 파싱 한 다음 코드를 ALU (산술 논리 장치) 처리 장치로 전환하여 펄스에서 DAC 칩으로 변환합니다. 아날로그 신호는 이제 플립 플롭 회로의 주파수 (khz에서 hz까지의 주파수)를 제어하고 있습니다. 이제 주파수 출력은 RAM으로 보내지고 데이터가 "1111"인 경우 CPU 읽기 RAM이 일치합니다. 4 초입니다.


이것이 어떻게 질문에 대답하는지 잘 모르겠습니다.
Yuval Filmus

컴퓨터 깜박임이 15 초 동안 어떻게 진행되는지 물었고 컴퓨터가 루프에서 사용할 두 번째 값을 만드는 방법을 설명합니다.
Lan ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.