본문 바로가기
우분투 리눅스

우분투 리눅스 - 배경 지식 / 운영체제, CPU 구조 / 파이프 라이닝의 이해

by 자유코딩 2017. 11. 9.

안녕하세요 이번 글은 운영체제에 대한 내용을 요약하였습니다.

 

우분투 리눅스 카테고리에는 우분투 리눅스에 관한 내용을 연재할 예정입니다.

 

이번 글은 우분투 리눅스를 공부하시기 전에 배경 지식으로 읽으시면 좋을 것이라고 생각됩니다.

 

폰 노이만 아키텍쳐

 

프로그램 내장 방식

애니악의 배선 교체는 엄청난 비용을 초래한다

하드웨어의 구성은 고정으로 하고 프로그램은 메모리에 적재되어 실행되어야 한다

 

CPU의 기능

 

Fetch (인출) : 메모리 상의 프로그램 카운터가 가리키는 명령어를 CPU로 인출하여 적재한다

 

Decode (해석) : 명령어의 해석 , 이 단계에서 명령어의 종류와 타겟등을 판단한다

 

Execute (실행) : 해석된 명령어에 따라 데이터에 대한 연산을 수행한다

 

Writeback (쓰기) : 명령어대로 처리 완료된 데이터를 메모리에 기록한다

 

Fetch -> Decode -> Execution -> Result 순으로 동작한다

 

RAM : 실행중인 프로그램을 저장하는 주 기억장치 (휘발성)

주소를 통해서 데이터에 임의로 접근가능

 

CPU : 메모리에 있는 명령어를 순차적으로 꺼내서 실행시킨다

 

Register : 데이터 임시 저장

 

ALU (Arithmetic & Logic Unit) : 산술 논리 연산 담당

 

CU (Control Unit) : CPU가 하드웨어가 동작할 수 있도록 제어 신호 생성

 

CPU의 성능을 높이기 위해서는?

 

1. 클락의 속도를 빠르게 한다

2. 내부 구조를 최적화 한다

3. 멀티 코어 구조를 사용한다

 

CPU의 파이프 라이닝

 

CPU의 실행 사이클에서 각 단계가 진행될 때 다른 단계의 실행 유닛들은 유휴 상태가 된다.

따라서 각 유닛을 병렬적으로 동작 시키기 위한 기술이다.

이를 지원하기 위해서 CPU 하드웨어 설계가 다소 변경되어야 한다.

 

 

간단히 요약하면 명령어들의 Fetch , Decode , Execution , Memory Access  , Write back 의 과정이 겹치지 않게 하는 것을 말합니다.

 

파이프라이닝 되지 않는 프로세서는 Fetch , Decode , Execute , Memory Access , Write Back 이렇게 5개 단계로 나누어서 1줄씩 명령어를 실행하며 작업을 수행한다.

 

이렇게 작업을 수행하는 것보다 파이프라이닝을 사용하면 생산성이 훨씬 높아진다.

 

5개의 단계를 하나의 명령어 묶음으로 보고 작업을 수행하지 않습니다.

 

개별 작업 단계로 인식하고 Decode 가 진행중일때 Fetch 를 진행하는 방식으로 여러 개의 명령어 단계를 동시에 수행합니다.

 

이렇게 계속 이어서 다른 명령어들을 수행하면 생산성이 높아집니다.

 

그렇다면 명령어를 5 단계로만 나눌 것이 아니라 10개 20개로 나눈다면 더 많은 명령어 단계를 동시에 수행 할 수 있으니, 생산성이 높아질 것입니다.

 

장점이 많은 방법 기술 같습니다.

 

문제점도 알아보겠습니다.

 

"파이프라인 버블"이라는 개념이 있습니다. 명령어가 특정 파이프라인 스테이지를 마치지 못해서 공백이 되는 경우를 파이프라인 버블이라고 합니다.

 

버블이 생기는 경우 그 버블이 채워질때까지 파이프라인으로의 투입은 늦어집니다.

 

이번 글은 앞으로 우분투 리눅스에 대해서 글을 쓰기 전에 읽으실만한 운영체제에 대한 이야기를 적어보았습니다.

 

jswoo030@gmail.com 으로 질문을 보내시면 빠른 답변을 받으실 수 있습니다.

 

감사합니다.

댓글