ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Multi cycle path와 False path에 대해서
    전공/VLSI 설계 2021. 4. 1. 22:38

    현대의 많은 컴퓨터는 Pipeline 구조를 띄고 있다.

     

    5단계로 나뉘어진 RISC-V의 Pipeline 구조

    위와 같이 Pipeline 구조는 하나의 명령어를 여러 단계로 분할하고 여러 자원을 순서대로 공유함으로써 동작 속도의 이득을 보는 것이다. (Clock frequency 또한 Single cycle 구조인 경우보다 훨씬 빠른 것이 장점이다.)

     

    그리고 Clock frequncy (동작 속도)는 이러한 Pipeline구조 각 단계 중 가장 오래 걸리는 시간을 통해 결정된다.

     

     

    1. Multi cycle path

     

    기본적으로 위의 Pipeline 구조는 한 단계당 하나의 Clock에 의해 동작한다. 즉, 데이터를 한 Clock마다 각 단계에서 처리하여 다음 단계로 넘겨준다는 의미이다.

     

    그러면 위에서도 설명했듯, 각 단계 중 가장 오래 걸리는 시간을 기준으로 Clock frequency를 설정해야 한다.

     

    하지만 아래와 같은 경우라면 어떨까?

     

    IF에서 소요되는 시간 : 2ns

    IF에서 소요되는 시간 : 2ns

    EX에서 소요되는 시간 : 2ns

    MEM에서 소요되는 시간 : 3ns

    WB에서 소요되는 시간 : 2ns

     

    우리가 방금 논의한 결과로는, 가장 오래 소요되는 MEM 단계를 고려하여 Clock period를 3ns(0.33GHz)로 설정하여야 할 것이다.

     

    이런 경우, 하나의 명령어를 수행하는데 총 소요되는 시간은 3ns * 5단계 = 15ns이다.

     

    그런데 이렇게 문제를 해결하니 무엇인가 아깝지 않은가?

     

    단순히 소요되는 시간만 더한다면 최대 11ns 밖에 걸리지 않을텐데, 4ns를 손해보고 있다는 느낌말이다.

     

    이렇게 낭비되는 시간을 개선하고 싶은데 어떤 방법이 있을까?

     

    (1) MEM 단계에 플립플롭을 추가하여 총 6단계인 Pipeline 구조로 만든다. (Pipeline 세분화)

    (2) MEM 단계만 2 Clock cycle에 한번씩 수행되게 한다.

     

    설명을 보고 대강 느낌이 오겠지만, 이번 포스팅에서 다룰 것은 (2)번 방법인 Multi cycle을 이용한 방법이다.

     

    개념은 매우 간단하다. Clock frequency를 적당한 값으로 설정한 뒤에, 각 단계에 필요한 Cycle 수를 정해주면 된다.

     

    위 문제를 예로 들어보자면,

     

    Clock period를 2ns(0.5GHz)로 설정하고, MEM 단계는 Clock이 2번 들어가야 한번 수행되게 만들자.

     

    이렇게 하면 하나의 명령어를 수행하는데 소요되는 시간은 2ns * (5 + 1) = 12ns 로 처음 값인 15ns보다 훨씬 개선됨을 볼 수 있다.

     

    이를 응용하면 Clock frequency를 매우 빠르게 하고, 각 단계를 이런 Clock의 배수로 표현하여 낭비되는 시간을 줄이는데 도움이 된다.

     

     

     

    <오류 정정>

     

    위 내용이 Multi cycle path를 말하는 것은 맞으나, 일반적인 Pipeline 구조에서 한 Path만 Multi cycle로 구현하게 되면 그 이후의 모든 Pipeline에 Bottleneck 현상이 발생하기 때문에 위와 같은 예제가 실제로 응용되지는 않는다.

     

     

    2. False path

    Logic의 Delay를 계산할 때에는 대부분 Propagation delay(가장 느리게 동작하는 경우)만 고려한다.

     

    따라서 Logic을 설계할 때 Static time analysis를 이용하여 time violation을 검사하면, 항상 가장 느린 경로의 시간이 기준이 된다.

     

    하지만 아래와 같은 경우를 고려해보자.

     

    False path를 위한 예시

    여기서 D4의 입력($D_4$)에 들어가는 신호를 불대수로 표현해보자.

     

    $D_4 = Q_1*Q_2 + Q_2 = (Q_1 + 1) * Q_2 = Q_2$

     

    위 식에서 알 수 있는 사실은 "D4에 들어가는 입력($D_4$)은 D1이 어떻게 동작하든지 상관 없다는 것이다. (Don't care)"

     

    따라서, D1 혹은 D2에서 D4까지 소요되는 시간은 D1의 출력($Q_1$)이 있는 Path와는 전혀 관련이 없으므로, Static timing analysis을 해야하는 이유가 없다.

     

    따라서 이러한 Path를 False path라고 한다.

     

     

     

     

    댓글

Designed by Tistory.