파이프라이닝의 개념은 쉬는 시간 없이 일을 시키는 느낌이다.(군대인 줄..)
강의에서는 빨래를 예로 들고 있다.
빨래 - 건조기 - 다림질(?) - 옷장 순서이다.
각 단계가 30분씩 걸린다고 가정하면,
위와 같은 방식이면 4명이 모두 빨래를 하는 시간이 8시간이 걸리게 된다.
아래처럼 세탁기랑 건조기를 혹사시키면 3.5시간으로 약 2.3배 빠른 결과가 나온다.
즉, 한 타임에 한 가지 일만 하는 게 아니라 여러 가지 일을 동시에 한다.
명령어 파이프라인은
- IF(Instruction Fetch)
- ID(Instruction Decode)
- EX(Execute)
- MEM(Memory)
- WB(Write Back)
의 5단계를 거친다.
앞에 그림의 위 방식처럼 생각하면 한 명령어를 실행시키고, 다음 명령어를 실행시키기까지 너무 많은 시간이 걸린다.
그래서 아래와 같은 방법(파이프라인)으로 사용하기로 했는데 여기에는 몇 가지 문제가 있다.
메모리를 양쪽에서 접근하려 하거나, 앞의 연산의 결과가 다음 명령에서 필요할 때, branch 같은 분기문이 있을 때이다.
이 경우 속도가 느려지게 되고(다음으로 넘어가지 못하고 기다려야 한다.), 다음 단계로 넘어가지 못하는 이 상황을 해저드라고 부른다.
컴퓨터구조 - 해저드 (0) | 2019.08.23 |
---|---|
웹 보안 - SQL 인젝션 (0) | 2019.08.22 |
웹 보안 - 브루트 포스 (0) | 2019.08.16 |
OP.GG 크롤링하기 (0) | 2019.08.08 |
컴퓨터 구조 - MIPS 명령어 (0) | 2019.07.26 |