NMF
NMF 음수미포함 행렬분해
Pipeline-CPU 목차
앞서 Pipeline-CPU를 이해하는데 중요한 세가지 주요 사항들 중에서 Data Hazard와 그 해결 방법(Data Forwarding)에 대해 알아보았습니다. 이번 Post에서는 Control Hazard가 무엇인지에 대해서 알아봅시다.
Control Hazard는 Control Flow와 관련된 문제입니다. Data Hazard가 레지스터들간의 Data Depedence와 관련된 문제였다면, Control Hazard는 어떤 PC 값을 읽어와서 Instruction을 수행할지에 대한 PC에 관한 Data dependence라고 이해할 수가 있습니다.
Pipeline-CPU가 실행되는 과정을 한 번 살펴봅시다. PC의 값으로 부터 해당 주소의 메모리에 든 Instruction 읽어 오고 그 읽어온 Instruction을 바탕으로 IF(Instruction Fetch) 단계를 거쳐서 ID(Instruction Decode) 단계에서 해당 Instruction이 JAL, JALR, Bxx와 같은 Control Flow Instruction인지 혹은 R/I-Type, LD, SD와 같은 다른 Instruction인지 구분을 해야합니다.
일반적인 R/I-Type의 Instruction의 예시로, ADD operator가 ID단계에서 확인이 되었다면 Next PC는 순차적으로 현재의 PC 바로 다음인 PC+4(word 가 4-Byte인 경우)가 될 것입니다.
하지만 JAL, Bxx와 같은 Control Flow Instruction인 경우는 어떨까요? 이 경우에는 ID 단계에서 바로 Next PC 값을 알 수가 없습니다. 이해를 돕기 위해 다음 예시를 살펴봅시다.
beq x1, x0, 16
// TSC_MANUAL 기준
if ($x1 == $x0) then $pc = $pc + (16+1)
위의 BEQ Instruction이 들어왔다고 가정하여 봅시다. 두 레지스터에 든 값이 같은지 여부를 확인해야 하므로 EX 단계에서 ALU를 거쳐 MEM단계가 되어서야 Next PC 값이 확정되게 됩니다.
지금까지 살펴보았던 Pipeline-CPU는 매 싸이클마다 연속적으로 새로운 Instruction이 알맞게 들어온다고 생각하였습니다.
하지만 위의 내용을 종합하여 볼 때 최소 ID 단계가 되어야만 Next PC를 결정지을 수 있으므로 PC Hazard가 발생하는 것입니다.
즉 PC Hazard distance는 최소 1(R/I-Type, LD, SD 인 경우)거나 3(Bxx, JAL, JALR 인 경우)이 발생하게 됩니다.
따라서 Control Hazard를 피하기 위해서는 최소한 ID 단계는 되어야 Next PC 값을 결정지을 수 있으므로 매번 1 STALL을 필요로 하게 됩니다.
Feature1. Control Hazard Resolved by Stalling
하지만 Feature1에서 확인할 수 있듯이, 매번 1 STALL이 추가가 되게 된다면, CPU의 퍼포먼스는 반(i.e. IPC이 반으로 줄게됨)으로 줄어들게 됩니다.
그렇다면 Control Hazard를 해결하면서도 CPU의 성능 저하를 최소화 할 수 있는 방법은 없을까요? 그 해결방법이 다음 Post에서 중요하게 다뤄볼 Branch Prediction 입니다.
Post의 참고자료와 이미지의 출처는 아래와 같습니다.
Computer Organization and Design RISC-V edition
Computer Architecrue Lecture Note @ Carnegie Mellon University, University of, Michigan, Purdue University, University of Pennsylvania, University of Wisconsin and POSTECH.
NMF 음수미포함 행렬분해
PCA 주성분 분석(차원 축소)
주요 주제)
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄 보도록 합시다.
다이내믹 프로그래밍 방법이 필요한 문제들은 처음엔 접근 방법이 막막하게 느껴지곤 합니다. DP 접근 풀이가 필요한 관련 유형의 문제들을 많이 다뤄보도록 합시다.
삼성역량테스트에서 출제되는 코테문제들의 경우 2차원 배열을 특정한 기준을 통해 회전시키는 문제가 자주 출제됩니다.
Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.
f-문자열
Introducing Python 처음 시작하는 파이썬[2판] 을 읽으면서, 몇 가지 헷갈리거나 새롭게 알게된 문법, 함수, 메소드들을 정리하려고 합니다.
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Pipeline-CPU 목차 Pipeline CPU(1) : Single-Cycle vs Multi-Cycle CPU Pipeline CPU(2) : Pipeline-CPU의 간략한 이해 Pipeline CPU(3) : Data Hazard(RAW...
Component-Driven User Interfaces