Pipeline Hazard의 유형 별 MIPS assembly code 및 C code example
- 최초 등록일
- 2021.02.22
- 최종 저작일
- 2020.11
- 8페이지/ 어도비 PDF
- 가격 1,000원
목차
1. Pipeline CPI
2. Structural Hazard와 이를 해결하기 위한 기법
3. Data Hazard와 이를 해결하기 위한 기법
4. Control Hazard와 이를 해결하기 위한 기법
5. 참고 자료 / 출처
본문내용
Pipelining의 필요성을 가장 직관적으로 나타내 주는 예시를 찾아 가져왔습니다. 어떠한 "세탁"이라는 큰 작업이 있을 때, 이를 1. 세탁기 작동 후, 2. 건조하고, 3. 갠 다음, 4.옷장에 넣는 것까지의 일련의 작은 작업 단위로 나눌 수 있습니다. 또한 이 작은 작업이 30분씩 걸린다고 했을 때, 4개의 세탁물이 시작되기부터 완료되기까지의 시간은 2시간 * 4 = 8시간이 소요될 것입니다. 이는 매우 일반적이고 문제가 없어 보이지만, 효율적 측면에서 주목할 점이 있습니다. 단위 시간에 어떠한 한 단계가 수행되고 있는 중에 다른 단계들은 모두 수행 되지 않고 낭비된다는(Idle) 점입니다. 이를 개선한 방법이 Pipelining입니다.
Pipelining의 기저가 되는 아이디어는 "단위 시간에 모든 수행 단계가 낭비되지 않고 활용되도록 한다"는 점에 있습니다. 위의 예시로 살펴보면 첫 30분 간 A 세탁물이 세탁기를 거치고 난 후 두번째 30분에서 B 세탁물이 세탁기에 들어온 것을 확인할 수 있습니다. 이는 A 세탁물이 세탁기에서 건조기로 옮겨지고 난 이후 세탁기는 비어 있는 상태이기 때문입니다. 각 작업 단위에서 다른 작업 단위로의 간섭이 일어나지 않을 만큼 옮겨지는 주기가 보장된다면, 각 작업 단위는 수행하는 작업에 대한 독립성을 얻을 수 있습니다. 이 경우 전체 수행 시간 상 큰 폭의 절감이 일어나는데, 위 예시로만 살펴보아도 8시간 -> 3시간 반의 수행 시간 절감이 발생한 것을 알 수 있습니다.
위에서 비유한 상황을 Instruction-Level에서 생각해 보면, 세탁물에 비유한 것이 바로 하나의 작업 단위인 Instruction입니다. MIPS ISA 위에서 모든 Instruction은 IF - ID - EX - MEM - WB의 5 Stage Pipeline을 거쳐 작업을 완료하게 됩니다.
참고 자료
컴퓨터아키텍처 강의자료
MIPS general purpose register
https://microchipdeveloper.com/32bit:mz-arch-isa-cpu-registers
컴퓨터 구조 파이프라이닝
https://frontalnh.github.io/2018/04/07/컴퓨터-구조-파이프라이닝-이란/