본문 바로가기
IT

컴퓨터 시스템의 성능 향상 기법

by EDMBLACKBOX 2021. 1. 8.
728x90

중앙처리장치의 구조 변화

명령어 세트와 명령어를 실행하는 중앙처리장치의 구조는 밀접한 관련이 있습니다. 중앙처리장치는 구조적 특성에 따라 복잡 명령어 세트 컴퓨터(CISC : Complex Instruction Set Computer)와 축소 명령어 세트 컴퓨터(RISC : Reduced Instruction Set Computer)로 구분할 수 있습니다.

복잡 명령어 세트 컴퓨터는 CISC라고 부르는데, 많은 수의 명령어와 다양한 주소 지정 모드를 제공하기 때문에 명령어 세트가 큽니다. 대표적인 예는 인텔 x86 호환 프로세서와 모토로라의 MC680x0(68K) 계열 프로세서입니다. CISC는 명령어 하나가 복잡한 기능을 수행하므로 적은 수의 명령어로 프로그램을 작성할 수 있습니다. 그러나 명령어 해독(Decode) 회로가 복잡하여, 생산 단가가 높고 명령어 해독 시간이 길어, 처리 속도가 늦고 전력 소모가 크다는 단점이 있습니다.

CISC는 많은 수의 명령어를 제공하지만 자주 사용하는 명령어는 10% 이하에 불과합니다. 그리하여 명령어 세트에 포함된 명령어 수를 줄여서 중앙처리장치의 구조를 단순화하고 성능을 향상시킨 축소 명령어 컴퓨터 세트 구조가 등장했습니다. 이를 RISC라고 부르며, RISC는 사용 빈도가 높은 명령어만 제공하며 대부분의 명령어에서 주소 지정 모드를 생략하여 CPU 구조를 단순화했습니다. 대표적인 예는 SPARC, MIPS, PowerPC 계열, Alpha, ARM 계열 프로세서입니다. RISC는 명령어가 단순하여 명령어 처리 속도가 빠르지만 복잡한 일을 수행하려면 다수의 명령어를 실행해야 하는 단점이 있습니다. RISC는 대부분의 중앙처리장치 설계에 채택되고 있으며 전력 소모가 적어 임베디드 프로세서(Embedded Processor)로도 사용됩니다. CISC와 RISC의 구조적 특징을 비교하면 아래의 표와 같습니다.

특징 CISC RISC
명령어 세트의 크기 명령어 수가 많음 : 약 100~250개 이상 레지스터 기반의 명령어들로서 명령어 수가 적음
명령어 형식 가변 형식 : 명령어당 16~64비트 고정 형식 : 32비트
주소지정 모드 복잡함 : 12~24개 간단함 : 3~5개
범용 레지스터 수 적음 : 8~24개 정도 많음 32~192개
CPU 제어 방식 제어 메모리(ROM) 사용 하드 와이어드(Hard-Wired) 방식 사용

 

파이프라인 기법

컴퓨터 시스템의 성능은 주어진 시간 내에 처리한 작업의 양을 나타내는 처리율(Throughput)로 계산합니다. 파이프라인(Pipeline) 기법은 하나의 작업을 다수의 단계(Stage)로 분할하여 시간적으로 중첩되게 실행함으로써 처리율을 높여 컴퓨터 시스템의 성능을 향상시키는 기술입니다.

보통 중앙처리장치는 다음의 4단계 명령어를 처리합니다.
1. 명령어 인출(FI : Fetch Instruction)
2. 명령어 해독(DI : Decode Instruction)
3. 피연산자 인출(FO : Fetch Operand)
4. 명령어 실행(EI : Execute Instruction)

중앙처리장치가 명령어를 순차적으로 처리할 경우 하나의 명령어 처리가 완료되어야 다음 명령어를 처리할 수 있습니다. 아래의 그림은 명령어를 순차적으로 실행하는 과정입니다.

명령어의 순차적 실행 예시, 출처 : Developer Help

파이프라인 기법은 단위시간 내 수행되는 명령어 수를 증가시켜 실행 시간을 단축시킨 것입니다. 아래의 이미지는 명령어를 파이프라인으로 실행하는 과정을 보여줍니다.

명령어 파이프라인 작업, 출처 : Chegg

 

병렬 처리 시스템

빠른 연산과 뛰어난 처리 능력이 활용되는 컴퓨터의 대표적인 분야에는 대규모의 복잡한 물리적 시스템 시뮬레이션, 일기 예보, 고해상도의 그래픽을 이용하는 CAD 등이 있습니다. 일반적으로 처리 능력이 뛰어난 컴퓨터 시스템의 구현 방법은 다음과 같습니다.

1. 고성능의 단일 프로세서를 이용하여 시스템을 구성하는 방법 - 수치 연산을 위한 다수의 연산 장치와 파이프라인 기법, 큰 용량의 캐시 메모리, 명령어와 데이터를 위한 분리된 버스 등을 사용하면 매우 큰 처리 능력을 제공합니다.

2. 다수의 프로세서를 사용하여 많은 연산을 동시에 수행하는 시스템을 구성하는 방법 - 다수의 프로세서가 동시에 정보를 처리하는 것을 병렬 처리(Parallel Processing)라고 합니다. 이를 위해서 다양한 하드웨어 구조가 이용됩니다.

여기에서 명령어와 데이터 흐름(Stream)에 따라 병렬 처리 시스템의 구조를 구분한 마이클 플린(Michael Flynn)의 분류법을 알아보면, 명령어 흐름은 하나의 프로세서에 의해 처리되는 일련의 연속적인 명령어를 의미하며, 데이터 흐름은 명령어를 실행하는 데 필요한 일련의 연속적인 데이터를 의미합니다. 마이크 플린의 분류법은 아래와 같습니다.

1. 단일 명령어 흐름, 단일 데이터 흐름(Single Instruction Stream, Single Data Stream)
2. 단일 명령어 흐름, 다중 데이터 흐름(Single Instruction Stream, Multiple Data Stream)
3. 다중 명령어 흐름, 단일 데이터 흐름(Multiple Instruction Stream, Single Data Stream)
4. 다중 명령어 흐름, 다중 데이터 흐름(Multiple Instruction Stream, Multiple Data Stream)

1. 단일 명령어 흐름, 단일 데이터 흐름

SISD(Single Instruction Stream, Single Data Stream)는 하나의 명령어로 하나의 데이터를 처리하는 구조로서, 폰 노이만 구조에 해당합니다. 이것은 기억장치에 저장되어 있는 데이터를 처리하기 위해 명령어 흐름을 순차적으로 처리하는 단일 처리기 시스템입니다. SISD 구조의 동작 방식은 아래의 그림과 같습니다. 제어장치(CU)는 기억장치(MU)에서 명령어 스트림(IS)을 인출하고 명령어를 처리장치(PU)로 보냅니다. 이때 처리장치에서는 기억장치로부터 데이터 스트림(DS)을 읽어 들이고 연산 결과를 다시 기억장치에 저장합니다. SISD 시스템은 파이프라인 기법을 이용한 시간적 병렬 처리가 가능합니다.

SISD의 동작 방식, 출처 : 위키페디아

2. 단일 명령어 흐름, 다중 데이터 흐름

SIMD(Single Instruction Stream, Multiple Data Stream)는 하나의 명령어로 다수의 데이터를 처리하는 구조입니다. 즉 하나의 명령어를 처리하기 위해 다수의 처리장치가 동시에 동작하는 다중처리기 시스템입니다. SIMD 구조의 동작 방식은 아래와 같습니다. 하나의 제어장치가 모든 처리장치를 통제하며 각 처리장치는 자신의 기억장치(LM)를 보유합니다. 모든 처리장치는 동일한 명령어를 처리하지만, 데이터는 자신의 기억장치로부터 가져와서 동시에 처리합니다. 대표적인 예는 벡터 프로세서(Vector Processor)나 배열 프로세서(Array Processor) 시스템입니다.

SIMD의 동작 방식, 출처 : 위키페디아

3. 다중 명령어 흐름, 단일 데이터 흐름

MISD(Multiple Instruction Stream Data Stream)는 다수의 처리장치들이 동일한 데이터에 대해 서로 다른 연산(명령어)을 실행하는 구조입니다. MISD 구조의 동작 방식은 아래의 이미지와 같습니다. 대표적인 예는 파이프라인 구조와 결함(고장) 허용 시스템(Fault-Tolerant System)입니다. 결함 허용 시스템은 시스템 가동 중 발생하는 고장을 자동으로 보완 수정하여 기능 정지를 회피할 수 있는 컴퓨터 시스템으로, 오류를 탐지하고 오류 발생을 막기 위해 동일한 명령어를 중복해서 실행합니다.

MISD의 동작 방식, 출처 : 위키페디아

4. 다중 명령어 흐름, 다중 데이터 흐름

MIMD(Multiple Instruction Stream, Multiple Data Stream)는 독립적으로 동작하는 다수의 처리장치들이 서로 다른 데이터에 대해 상이한 명령어를 동시에 처리하는 구조입니다. MIMD 구조의 동작 방식은 아래와 같습니다. 대표적인 예는 공유 메모리 시스템(Shared Memory System)과 분산 메모리 시스템(Distributed Memory System)입니다.

MIMD의 동작 방식, 출처 : 위키페디아

 

728x90