홈페이지 » 어떻게 » HTG는 실제로 CPU가 실제로 작동하는 방법을 설명합니다.

    HTG는 실제로 CPU가 실제로 작동하는 방법을 설명합니다.

    컴퓨터의 대부분은 이해하기가 비교적 간단합니다. RAM, 저장소, 주변 장치 및 소프트웨어가 모두 작동하여 컴퓨터 기능을 수행합니다. 그러나 시스템의 핵심 인 CPU는 많은 기술자들 에게조차 마술처럼 보입니다. 여기, 우리는 그것을 무너 뜨리기 위해 최선을 다할 것입니다..

    이 기사의 대부분의 연구는 J. Clark Scott의 "How Do It Know?"에서 나온 것입니다. 환상적인 읽기이며,이 기사보다 훨씬 더 깊이 들어가고 아마존에서 몇 달러의 가치가 충분합니다..

    시작하기 전에 한 가지 참고 사항 : 현대 CPU는 여기에 설명 된 것보다 훨씬 복잡한 명령입니다. 한 사람이 10 억 개가 넘는 트랜지스터를 가진 칩의 모든 뉘앙스를 이해하는 것은 거의 불가능합니다. 그러나 그것이 모두 맞는 방법의 기본 원칙은 동일하게 유지되며 기본 원리를 이해하면 현대 시스템에 대한 더 나은 이해를 얻을 수 있습니다.

    작게 시작

    컴퓨터는 바이너리로 작동합니다. 그들은 단지 두 가지 상태를 이해합니다 : 켜짐과 꺼짐. 바이너리로 계산을 수행하기 위해 트랜지스터라고하는 것을 사용합니다. 트랜지스터는 게이트를 가로 지르는 전류가 존재하는 경우에만 소스 전류가 소스 전류를 통해 드레인으로 흐르게합니다. 본질적으로 이것은 바이너리 스위치를 형성하여 두 번째 입력 신호에 따라 전선을 차단합니다..

    최신 컴퓨터는 수십억 개의 트랜지스터를 사용하여 계산을 수행하지만 최저 수준에서는 게이트로 알려진 가장 기본적인 구성 요소를 구성하기 만하면됩니다.

    로직 게이트

    몇 개의 트랜지스터를 적절히 쌓아두면 논리 게이트라고 불리는 것이 있습니다. 로직 게이트는 두 개의 바이너리 입력을 받아 연산을 수행하고 출력을 반환합니다. 예를 들어, OR 게이트는 입력 중 하나가 참이면 참을 리턴합니다. AND 게이트는 두 입력이 모두 참인지 확인하고, XOR은 입력 중 하나만 참이고 N 변형 (NOR, NAND 및 XNOR)이 기준 게이트의 반전 된 버전인지 확인합니다.

    게이츠로 수학하기

    두 게이트 만 있으면 기본 이진 추가를 할 수 있습니다. 위의 다이어그램은 로직 게이트 용 무료 온라인 놀이터 인 Logicly를 사용하여 생성 된 하프 가산기를 보여줍니다. 입력 중 하나만 켜져 있으면 XOR 게이트가 켜지지만 둘 다 켜지지 않으면 여기에서 XOR 게이트가 켜집니다. AND 게이트는 두 입력이 모두 켜지면 켜지지만 입력이 없으면 꺼져 있습니다. 따라서 두 가지가 모두 켜져 있으면 XOR은 꺼지고 AND 게이트가 켜지 며 2의 정답으로옵니다.

    이것은 우리에게 3 가지 출력 (0, 1, 2)이있는 간단한 설정을 제공합니다. 그러나 1 비트는 1보다 높은 값을 저장할 수 없으며이 기계는 가능한 가장 단순한 수학 문제 중 하나를 해결하기 때문에 유용하지 않습니다. 그러나 이것은 단지 절반 가산기 일 뿐이며, 두 개의 입력을 다른 입력과 연결하면 전체 가산기가됩니다.

    전체 가산기에는 3 개의 입력이 있습니다. 추가 할 두 개의 숫자와 "자리 올림"이 있습니다. 마지막 숫자가 단일 비트에 저장할 수있는 것을 초과하면 올림이 사용됩니다. 전체 덧셈기가 체인에 연결되고 캐리가 한 가산기에서 다음 가산기로 전달됩니다. 캐리는 전반부 가산기의 XOR 게이트 결과에 더 해지고, 두 가지 경우를 모두 처리 할 수있는 여분의 OR 게이트가 있습니다..

    두 입력이 모두 켜지면 캐리가 켜지고 체인의 다음 전체 가산기로 보냅니다.

    그리고 이것은 부가적인 것만큼이나 복잡합니다. 근본적으로 더 많은 비트로 이동한다는 것은 더 긴 체인에서 더 많은 전체 덧셈기를 의미합니다..

    대부분의 다른 수학 연산은 추가로 수행 할 수 있습니다. 곱셈은 ​​그냥 반복 덧셈이며, 빼기는 멋진 비트 반전으로 할 수 있고, 나눗셈은 그냥 반복되는 빼기입니다. 현대의 모든 컴퓨터는 복잡한 작업 속도를 높이기 위해 하드웨어 기반의 솔루션을 사용하지만 기술적으로는 전체 가산기로 모두 수행 할 수 있습니다.

    버스 및 메모리

    바로 지금, 우리 컴퓨터는 나쁜 계산기 일뿐입니다. 이것은 아무것도 기억할 수 없기 때문이며 출력물에는 아무런 영향을 미치지 않기 때문입니다. 위의 그림은 그 모든 것을 할 수있는 메모리 셀입니다. 내부적으로 많은 NAND 게이트를 사용하며 실제로 실제 저장 기술에 따라 상당히 다를 수 있지만 기능은 동일합니다. 당신은 그것에게 약간의 입력을주고, '쓰기'비트를 켜고, 입력을 셀 안에 저장할 것입니다. 이것은 메모리 셀이 아니라 정보를 읽을 수있는 방법이기도합니다. 이는 메모리의 각 비트에 대한 AND 게이트 모음으로, 모두가 다른 입력 인 "읽기"비트에 연결되는 인 에이 블러로 수행됩니다. 쓰기 및 읽기 비트는 종종 "설정"및 "활성화"라고도합니다.

    이 전체 패키지는 레지스터라고 알려진 것으로 묶여 있습니다. 이 레지스터는 모든 구성 요소에 연결된 전체 시스템에서 실행되는 전선 묶음 인 버스에 연결됩니다. 현대 컴퓨터에도 버스가 있지만 멀티 태스킹 성능을 향상시키기 위해 여러 개의 버스가있을 수 있습니다..

    각 레지스터에는 여전히 쓰기 및 읽기 비트가 있지만이 설정에서 입출력은 동일한 것입니다. 이것은 실제로 좋다. 예를 들어. R1의 내용을 R2에 복사하려면 R1의 읽기 비트를 켜면 R1의 내용이 버스로 전송됩니다. 읽기 비트가 켜져있는 동안 R2의 쓰기 비트를 켜면 버스 내용이 R2로 복사됩니다..

    레지스터는 RAM을 만드는데도 사용됩니다. RAM은 종종 그리드에 배치되며 전선은 두 가지 방향으로 진행됩니다.

    디코더는 이진 입력을 받아 해당 번호의 와이어를 켭니다. 예를 들어, "11"은 이진수가 3이고 2 비트가 가장 높기 때문에 디코더는 가장 높은 전선을 켭니다. 각 교차로에는 레지스터가 있습니다. 이들 모두는 중앙 버스 및 중앙 쓰기 및 읽기 입력에 연결됩니다. 읽기 및 쓰기 입력은 레지스터를 가로 지르는 두 개의 와이어가 켜져있는 경우에만 켜지고 효과적으로 쓰기 및 읽기에서 레지스터를 선택할 수 있습니다. 다시 말하지만 현대 RAM은 훨씬 복잡하지만이 설정은 여전히 ​​작동합니다..

    시계, 스테퍼 및 디코더

    레지스터는 모든 곳에서 사용되며 CPU에서 데이터를 이동하고 정보를 저장하는 기본 도구입니다. 그래서 그들에게 주변을 움직이게하는 것은 무엇입니까??

    클럭은 CPU 코어의 첫 번째 구성 요소이며 설정된 간격 (Hz 또는 초당 사이클)으로 켜지고 꺼집니다. 이것은 CPU와 함께 광고되는 속도입니다. 5GHz 칩은 초당 50 억 사이클을 수행 할 수 있습니다. 클럭 속도는 종종 CPU가 얼마나 빠른지에 대한 아주 좋은 척도입니다.

    클록에는 세 가지 상태가 있습니다. 기본 클록, 활성화 클럭 및 설정 클록입니다. 기본 시계는 반주기 동안 켜지고 나머지 절반은 꺼집니다. 이네 이블 클럭은 레지스터를 켜는 데 사용되며 데이터가 활성화되어 있는지 확인하는 데 오랜 시간 동안 켜져 있어야합니다. 설정 클럭은 항상 활성화 클록과 동시에 켜져 야하며 그렇지 않으면 잘못된 데이터가 기록 될 수 있습니다.

    시계는 스테퍼에 연결되어 있으며, 1에서 최대 단계까지 카운트되며 완료되면 다시 초기화됩니다. 클럭은 CPU가 쓸 수있는 각 레지스터의 AND 게이트에도 연결됩니다.

    이 AND 게이트는 다른 구성 요소 인 명령 디코더의 출력에도 연결됩니다. 명령 디코더는 "SET R2 TO R1"과 같은 명령어를 취해 CPU가 이해할 수있는 것으로 디코딩합니다. 현재 작업이 저장되는 "명령어 레지스터"라는 내부 레지스터가 있습니다. 이것이 정확히 얼마나 정확한지는 당신이 실행하고있는 시스템에 달려 있지만 일단 디코드되면 정확한 세트를 켜고 올바른 레지스터의 비트를 활성화 시키면 시계에 따라 발사됩니다.

    프로그램 지침은 RAM (또는 최신 시스템의 L1 캐시, CPU에 더 가깝게)에 저장됩니다. 프로그램 데이터는 다른 모든 변수와 마찬가지로 레지스터에 저장되므로 프로그램을 돌아 다니기 위해 즉석에서 조작 할 수 있습니다. 이것은 루프와 if 문을 사용하여 프로그램이 구조를 얻는 방법입니다. 점프 명령은 명령 디코더가 다른 위치에서 읽는 메모리의 현재 위치를 설정합니다.

    그것이 모두 함께 오는 방법

    이제 CPU 작동 방식에 대한 과도한 단순화가 완료되었습니다. 메인 버스는 전체 시스템에 걸쳐 있고 모든 레지스터에 연결됩니다. 전체 가산기는 일련의 다른 연산과 함께 산술 논리 단위 또는 ALU에 저장됩니다. 이 ALU는 버스에 대한 연결을 가지며 작동중인 두 번째 번호를 저장하기위한 자체 레지스터를 갖습니다.

    계산을 수행하기 위해 프로그램 데이터가 시스템 RAM에서 컨트롤 섹션으로로드됩니다. 컨트롤 섹션은 RAM에서 두 개의 숫자를 읽고 ALU의 명령 레지스터에 첫 번째를로드 한 다음 버스에 두 번째 숫자를로드합니다. 한편, ALU에게 명령 코드를 보내 무엇을해야하는지 알려줍니다. 그런 다음 ALU는 모든 계산을 수행하고 CPU가 읽을 수있는 다른 레지스터에 결과를 저장 한 다음 프로세스를 계속 진행합니다.

    이미지 크레딧 : Rost9 / Shutterstock