마이크로프로세서라고도 하는 CPU는 컴퓨터의 심장 및/또는 두뇌입니다. 컴퓨터 프로그램을 효율적으로 작성하는 데 도움이 되도록 컴퓨터의 핵심을 자세히 살펴보겠습니다.
"도구는 일반적으로 기계보다 간단합니다. 일반적으로 손으로 사용하지만 기계는 동물이나 증기의 힘으로 자주 움직입니다."
– 찰스 배비지
컴퓨터 기계 입니다. 대부분 전기로 구동되지만 유연성과 프로그래밍 가능성은 도구의 단순성을 달성하는 데 도움이 되었습니다.
CPU 컴퓨터의 심장 및/또는 두뇌입니다. 제공된 명령을 실행합니다. 주요 임무는 산술 및 논리 연산을 수행하고 명령을 함께 조정하는 것입니다. 주요 부분을 살펴보기 전에 CPU의 주요 구성 요소와 역할에 대해 살펴보겠습니다.
프로세서의 두 가지 주요 구성요소
- 제어 장치 — CU
- 산술 및 논리 단위 — ALU
제어 장치 — CU
제어 장치 CU는 명령 실행을 조정하는 데 도움이 되는 CPU의 일부입니다. 해야 할 일을 알려줍니다. 지침에 따르면 ALU를 포함한 컴퓨터의 다른 부분에 CPU를 연결하는 전선을 활성화하는 데 도움이 됩니다. . 제어 장치는 처리 명령을 받는 CPU의 첫 번째 구성 요소입니다.
제어 장치에는 두 가지 유형이 있습니다.
- 고정 배선 제어 장치 .
- 마이크로 프로그래밍 가능(마이크로 프로그래밍) 제어 장치 .
하드와이어 제어 장치는 하드웨어이며 마이크로프로그래밍 가능으로 작동하는 위치를 수정하려면 하드웨어 변경이 필요합니다. 제어 장치는 동작을 변경하도록 프로그래밍할 수 있습니다. 유선 CU는 명령어 처리 속도가 빠르지만 마이크로프로그래밍이 더 유연합니다.
산술 및 논리 단위 — ALU
이름에서 알 수 있듯이 산술 및 논리 단위 ALU는 모든 산술 및 논리 계산을 수행합니다. ALU는 더하기, 빼기와 같은 연산을 수행합니다. ALU는 이러한 작업을 수행하는 논리 회로 또는 논리 게이트로 구성됩니다.
대부분의 논리 게이트는 두 개의 입력을 받아 하나의 출력을 생성합니다.
Bellow는 두 개의 입력을 받아 결과를 출력하는 반가산기 회로의 예입니다. 여기서 A와 B는 입력, S는 출력, C는 캐리입니다.
저장소 — 레지스터 및 메모리
CPU의 주요 임무는 제공된 명령을 실행하는 것입니다. 대부분의 경우 이러한 명령을 처리하려면 데이터가 필요합니다. 일부 데이터는 중간 데이터이고 일부는 입력이고 다른 일부는 출력입니다. 이러한 데이터는 지침과 함께 다음 저장소에 저장됩니다.
등록
레지스터는 데이터를 저장할 수 있는 작은 장소 집합입니다. 레지스터는 래치의 조합입니다. . 래치 슬리퍼 라고도 함 논리 게이트의 조합입니다. 1비트의 정보를 저장합니다.
래치에는 두 개의 입력 와이어, 쓰기 및 입력 와이어와 하나의 출력 와이어가 있습니다. 쓰기 와이어를 활성화하여 저장된 데이터를 변경할 수 있습니다. 쓰기 와이어가 비활성화되면 출력은 항상 동일하게 유지됩니다.
CPU에는 출력 데이터를 저장하는 레지스터가 있습니다. 메인 메모리(RAM)로 보내는 것은 중간 데이터이기 때문에 느립니다. 이 데이터는 BUS로 연결된 다른 레지스터로 전송됩니다. . 레지스터는 명령, 출력 데이터, 저장 주소 또는 모든 종류의 데이터를 저장할 수 있습니다.
메모리(RAM)
Ram은 더 많은 데이터를 저장할 수 있도록 최적화된 방식으로 정렬되고 압축된 레지스터 모음입니다. RAM(Random Access Memory)은 휘발성이며 전원을 끄면 데이터가 손실됩니다. RAM은 데이터를 읽고 쓰는 레지스터의 집합체이기 때문에 RAM은 8bit 주소를 입력받아 실제 데이터를 저장하기 위한 데이터 입력을 받고, 마지막으로 래치처럼 동작하는 읽기/쓰기 인에이블러(Enabler)를 읽습니다.
지침이란 무엇입니까
명령은 컴퓨터가 수행할 수 있는 세분화된 수준의 계산입니다. CPU가 처리할 수 있는 명령에는 다양한 유형이 있습니다.
지침에는 다음이 포함됩니다.
- 추가와 같은 산술 및 빼기
- 및과 같은 논리 명령어 , 또는 , 그리고 아님
- 이동과 같은 데이터 지침 , 입력 , 출력 , 로드 및 저장
- goto와 같은 제어 흐름 지침 , 만약 ... goto , 전화 , 및 반환
- 프로그램이 종료되었음을 CPU에 알립니다. 중지
명령어는 어셈블리 언어를 사용하여 컴퓨터에 제공되거나 컴파일러에 의해 생성되거나 일부 고급 언어로 해석됩니다.
이 명령어는 CPU 내부에 내장되어 있습니다. ALU는 제어 흐름이 CU에 의해 관리되는 산술 및 논리를 포함합니다.
한 시계 주기에서 컴퓨터는 하나의 명령을 수행할 수 있지만 최신 컴퓨터는 둘 이상의 명령을 수행할 수 있습니다.
컴퓨터가 수행할 수 있는 명령 그룹을 명령어 세트라고 합니다. .
CPU 시계
시계 주기
컴퓨터의 속도는 클럭 주기에 의해 결정됩니다. 시계 주기 의 수입니다. 초당 컴퓨터가 작동합니다. 단일 클록 사이클은 약 250 * 10 * -12 초와 같이 매우 작습니다. 클럭 사이클이 높을수록 프로세서가 빨라집니다.
CPU 클록 주기는 GHz(기가헤르츠)로 측정됩니다. ). 1GHz는 10 ⁹ Hz(헤르츠 ). 헤르츠는 초를 의미합니다. 따라서 1Gigahertz는 초당 10⁹ 사이클을 의미합니다.
클록 주기가 빠를수록 더 많은 명령 CPU 실행할 수 있습니다. 클록 주기 =1/클록 속도CPU 시간 =클록 주기 수 / 클록 속도
이는 CPU 시간을 개선하기 위해 CPU에 제공하는 명령을 최적화하여 클럭 속도를 높이거나 클럭 주기 수를 줄일 수 있음을 의미합니다. 일부 프로세서는 클록 주기를 증가시키는 기능을 제공하지만 물리적 변화이기 때문에 과열 및 연기/화재까지 발생할 수 있습니다.
명령이 실행되는 방식
지침은 RAM 에 저장됩니다. 순서대로. 가상 CPU 명령어는 OP로 구성됩니다. 코드(운영 코드) 및 메모리 또는 레지스터 주소 .
제어 장치 명령 레지스터(IR) 내부에는 두 개의 레지스터가 있습니다. 명령어의 OP 코드와 명령어 주소 레지스터를 로드합니다. 현재 실행 중인 명령어의 주소를 로드합니다. CPU 내부에는 명령어의 마지막 4비트 주소에 저장된 값을 저장하는 다른 레지스터가 있습니다.
두 개의 숫자를 더하는 명령어 집합의 예를 살펴보겠습니다. 다음은 설명과 함께 지침입니다.
1단계 — LOAD_A 8:
명령어는 초기에 <1100 1000>과 같이 RAM에 저장됩니다. 처음 4비트는 연산 코드입니다. 이것은 명령을 결정합니다. 이 명령은 가져옵니다. IR 제어 장치의. 명령은 디코드입니다. load_A는 A를 등록하기 위한 명령어의 마지막 4비트인 주소 1000에 데이터를 로드해야 함을 의미합니다.
2단계 — LOAD_B 2
위와 유사하게 메모리 주소 2(0010)의 데이터를 CPU 레지스터 B로 로드합니다.
3단계 — BA 추가
이제 다음 명령은 이 두 숫자를 더하는 것입니다. 여기서 CU는 ALU에 추가 작업을 수행하고 결과를 레지스터 A에 다시 저장하도록 지시합니다.
4단계 — STORE_A 23
이것은 두 개의 숫자를 더하는 데 도움이 되는 매우 간단한 지침 세트입니다.
두 개의 번호를 성공적으로 추가했습니다!
버스
CPU, 레지스터, 메모리 및 IO 장치 간의 모든 데이터는 버스를 통해 전송됩니다. 방금 추가한 메모리에 데이터를 로드하기 위해 CPU는 메모리 주소를 주소 버스에 입력하고 합산 결과를 데이터 버스에 입력하고 제어 버스에서 올바른 신호를 활성화합니다. 이러한 방식으로 데이터는 버스의 도움으로 메모리에 로드됩니다.
캐시
CPU는 또한 캐시된 명령을 프리페치하는 메커니즘을 가지고 있습니다. 우리가 알고 있듯이 프로세서가 1초 안에 완료할 수 있는 명령은 수백만 개입니다. 이는 RAM에서 명령어를 실행하는 것보다 명령어를 가져오는 데 더 많은 시간이 소요된다는 것을 의미합니다. 따라서 CPU 캐시는 실행이 빨라지도록 명령과 데이터의 일부를 미리 가져옵니다.
캐시와 운영 메모리의 데이터가 다른 경우 데이터는 더티 비트로 표시됩니다. .
명령 파이프라이닝
최신 CPU는 명령 파이프라인 을 사용합니다. 에 대한 명령 실행의 병렬화. 가져오기, 디코딩, 실행. 한 명령어가 디코드 단계에 있을 때 CPU는 가져오기 단계를 위해 다른 명령어를 처리할 수 있습니다.
이것은 한 명령어가 다른 명령어에 의존할 때 한 가지 문제가 있습니다. 따라서 프로세서는 종속되지 않고 다른 순서로 명령을 실행합니다.
멀티 코어 컴퓨터
기본적으로 다른 CPU이지만 캐시와 같은 공유 리소스가 있습니다.
성능
CPU의 성능은 실행 시간에 따라 결정됩니다.Performance =1/실행 시간
프로그램이 실행되는 데 20ms가 걸린다고 가정해 봅시다. CPU의 성능은 1/20 =0.05ms상대 성능 =실행 시간 1/실행 시간 2
CPU 성능을 고려하는 요소는 명령 실행 시간과 CPU 클럭 속도입니다. 따라서 프로그램의 성능을 높이려면 클럭 속도를 높이거나 프로그램의 명령어 수를 줄여야 합니다. 프로세서 속도는 제한되어 있으며 멀티 코어가 있는 최신 컴퓨터는 초당 수백만 개의 명령을 지원할 수 있습니다. 그러나 우리가 작성한 프로그램에 많은 지침이 있으면 전체 성능이 저하됩니다.
빅오 표기법 주어진 입력으로 성능이 어떻게 영향을 받을지 결정합니다.
CPU에서 가능한 한 더 빠르고 성능을 높이기 위해 많은 최적화가 이루어졌습니다. 프로그램을 작성하는 동안 우리는 CPU에 제공하는 명령의 수를 줄이는 것이 컴퓨터 프로그램의 성능을 얼마나 향상시킬지 고려해야 합니다.
Milap Neupane 블로그에도 게시됨:CPU 작동 방식