컴퓨터 내부 구조(2)
컴퓨터 하드웨어는 어떻게 구성되는가
5. 마지막 설계
- 마지막 설계는 CPU의 구체적인 구현을 위한 과정이다. 마지막 설계는 명령어 레지스터, 데이터 경로와 제어 신호, 데이터 흐름 제어로 구분된다.
5-1. 명령어 레지스터
- 명령어 레지스터는 CPU에서 현재 실행하는 명령어를 저장하는 레지스터이다. 명령어 레지스터는 연산 코드 필드와 피연산자 필드로 구성된다.
- 연산 코드 필드는 명령어의 종류를 나타내는 비트이다. 연산 코드 필드의 크기는 명령어 집합의 개수에 따라 결정된다.
- 피연산자 필드는 명령어의 대상이 되는 데이터를 나타내는 비트이다. 피연산자 필드의 크기와 내용은 주소 지정 모드에 따라 결정된다.
- 명령어 레지스터의 크기는 명령어의 길이에 따라 결정된다. 명령어 레지스터의 크기는 CPU의 단어 길이와 일치하거나, 그보다 작거나, 그의 배수여야 한다.
5-2. 데이터 경로와 제어 신호
- 데이터 경로는 CPU에서 데이터가 이동하는 경로이다. 데이터 경로는 레지스터, ALU, 시프트, 버스, 멀티플렉서 등의 구성 요소로 이루어진다.
- 제어 신호는 CPU에서 데이터 경로의 구성 요소들의 작동을 제어하는 신호이다. 제어 신호는 명령어 해독기에서 생성되며, 제어 장치에서 전달된다.
- 데이터 경로와 제어 신호는 CPU의 구조와 성능을 결정한다. 데이터 경로와 제어 신호의 설계는 다음과 같은 요소를 고려해야 한다.
- 데이터 경로의 너비: 데이터 경로의 너비는 한 번에 전송할 수 있는 비트의 수를 결정한다. 데이터 경로의 너비는 CPU의 단어 길이와 일치하거나, 그보다 작거나, 그의 배수여야 한다.
- 데이터 경로의 병렬성: 데이터 경로의 병렬성은 동시에 전송할 수 있는 데이터 경로의 수를 결정한다. 데이터 경로의 병렬성이 높을수록 CPU의 성능이 향상된다.
- 제어 신호의 개수와 종류: 제어 신호의 개수와 종류는 CPU가 제어할 수 있는 데이터 경로의 구성 요소들의 수와 종류를 결정한다. 제어 신호의 개수와 종류가 많을수록 CPU가 더 다양하고 정밀한 제어를 할 수 있지만, CPU의 구현이 복잡해지고, 제어 신호의 전달이 어려워진다.
- 제어 신호의 전달 방식: 제어 신호의 전달 방식은 CPU가 제어 신호를 생성하고 전달하는 방식을 결정한다. 제어 신호의 전달 방식에는 하드와이어드 제어와 마이크로프로그램 제어가 있다.
- 하드와이어드 제어는 제어 신호를 논리 회로로 구현하는 방식이다. 하드와이어드 제어는 제어 신호의 생성과 전달이 빠르고 안정적이지만, 유연성이 떨어지고, 수정이 어렵다.
- 마이크로프로그램 제어는 제어 신호를 마이크로 명령어로 구현하는 방식이다. 마이크로프로그램 제어는 제어 신호의 생성과 전달이 유연하고 수정이 쉽지만, 속도가 느리고, 오버헤드가 발생한다.
5-3. 데이터 흐름 제어
- 데이터 흐름 제어는 CPU에서 데이터가 이동하는 순서와 타이밍을 제어하는 과정이다. 데이터 흐름 제어는 CPU의 성능과 신뢰성에 영향을 미친다.
- 데이터 흐름 제어는 다음과 같은 요소를 고려해야 한다.
- 데이터 의존성: 데이터 의존성은 한 명령어의 결과가 다른 명령어의 입력으로 사용되는 경우를 나타낸다. 데이터 의존성이 있으면 데이터가 준비될 때까지 명령어의 실행을 지연시켜야 한다.
- 데이터 충돌: 데이터 충돌은 여러 명령어가 동시에 같은 데이터를 사용하거나 변경하려고 하는 경우를 나타낸다. 데이터 충돌이 있으면 데이터의 일관성을 유지하기 위해 명령어의 실행 순서를 조정해야 한다.
- 데이터 전달 방식: 데이터 전달 방식은 CPU에서 데이터를 전송하고 저장하는 방식을 결정한다. 데이터 전달 방식에는 로드/스토어 방식과 레지스터-메모리 방식이 있다.
- 로드/스토어 방식은 데이터를 전송할 때 레지스터와 메모리 사이에서만 이루어지는 방식이다. 로드/스토어 방식은 명령어의 형식이 간단하고, 데이터 충돌이 적지만, 데이터 전송이 빈번하고, 명령어의 수가 많다.
- 레지스터-메모리 방식은 데이터를 전송할 때 레지스터와 메모리, 레지스터와 레지스터 사이에서 이루어지는 방식이다. 레지스터-메모리 방식은 데이터 전송이 적고, 명령어의 수가 적지만, 명령어의 형식이 복잡하고, 데이터 충돌이 많다.
6. RISC와 CISC 명령어 집합
- RISC (Reduced Instruction Set Computer)와 CISC (Complex Instruction Set Computer)는 CPU의 명령어 집합을 분류하는 방식이다. RISC와 CISC는 CPU의 성능과 복잡도에 영향을 미친다.
- RISC는 명령어의 개수와 종류를 줄이고, 명령어의 길이와 형식을 고정하고, 피연산자의 개수와 위치를 단순하고, 주소 지정 모드의 개수와 종류를 적게 하는 명령어 집합이다.
- RISC의 장점은 명령어의 해독과 실행이 빠르고, 파이프라이닝이 가능하고, CPU의 구현이 간단하다는 것이다. RISC의 단점은 명령어의 수행 효율이 낮고, 메모리 접근이 빈번하고, 컴파일러의 최적화가 어렵다는 것이다.
- CISC는 명령어의 개수와 종류를 늘리고, 명령어의 길이와 형식을 가변하고, 피연산자의 개수와 위치를 다양하고, 주소 지정 모드의 개수와 종류를 많게 하는 명령어 집합이다.
- CISC의 장점은 명령어의 수행 효율이 높고, 메모리 접근이 적고, 컴파일러의 최적화가 쉽다는 것이다. CISC의 단점은 명령어의 해독과 실행이 느리고, 파이프라이닝이 어렵고, CPU의 구현이 복잡하다는 것이다.
7. GPU
- GPU (Graphics Processing Unit)는 컴퓨터에서 그래픽을 처리하는 장치이다. GPU는 CPU와 병렬로 작동하며, CPU의 부하를 줄이고, 그래픽의 품질과 속도를 향상시킨다.
- GPU는 그래픽 파이프라인이라는 단계별로 그래픽을 처리하는 구조를 가진다. 그래픽 파이프라인은 입력 단계, 변환 단계, 조명 단계, 클리핑 단계, 래스터화 단계, 텍스처 매핑 단계, 프래그먼트 단계, 출력 단계로 구성된다.
- GPU는 CPU와 달리 명령어 집합이 표준화되어 있지 않다. GPU는 벤더별로 다른 명령어 집합을 가지며, 그래픽 API를 통해 프로그래밍할 수 있다. 그래픽 API에는 OpenGL, DirectX, Vulkan 등이 있다.
- GPU는 그래픽 외에도 과학 계산, 인공 지능, 비디오 인코딩 등의 분야에서도 사용된다. GPU는 이러한 분야에서 CPU보다 더 빠르고 효율적으로 병렬 연산을 수행할 수 있다. GPU를 이용한 범용 프로그래밍을 GPGPU (General-Purpose GPU)라고 한다. GPGPU를 위한 프로그래밍 언어에는 CUDA, OpenCL, TensorFlow 등이 있다.
출처
(1) 제어공학 1장 개회로 제어계, 폐회로 제어계 (자동 제어계의 기본 ….
(2) [시스템] ③ 컴퓨터 시스템 구성요소(CPU, I/O, 버스) 및 CPU 제어 ….
(3) 실시간 신호제어시스템 (COSMOS)의 구성, 사용되는 변수, 연동 ….
(4) 51. 제어반 배선의 주역 급인 신호선이 갖는 중요한 역할 : 네이버 ….