[SoC] Clock Gating - 저전력 설계 기법 (ICG cell)

2023. 5. 15. 01:15SoC

안녕하세요. 오늘은 SoC에서 저전력 설계(Low power design) 방법 중 하나인 Clock Gating에 대해 알아보겠습니다.

 

저전력 설계는 말 그대로 반도체 칩을 구동시킬 때, 더 적은 전력으로 구동할 수 있도록 설계하는 방법론을 말합니다.

 

자세한 내용에 들어가기 앞서 Clock Gating이란 무엇인지, 그리고 왜 중요한 것인지 말씀을 드리겠습니다.

 


1-(1). Clock Gating이란?

 

여기서 Clock Gating이란, 반도체 칩 내부에서 사용하지 않는 모듈에 대해 Clock 공급을 차단시키는 기능을 말합니다.

 

반도체에서 Clock은 사람으로 치면 심장 박동과도 같은 것으로, Clock이 공급되지 않는 모듈은 죽은 모듈이나 마찬가지입니다.

 

즉, Dynamic Power를 소비하지 않기 때문에 불필요하게 낭비되는 Power를 줄일 수 있다는 장점이 있습니다.

 

조금 더 쉽게 생각하면, 가정에서 평소에 모든 전원을 다 켜고 사용하는 것이 아니라 필요한 방의 전원만 켠다든지, 멀티탭에서 부분적으로 필요한 부분만 전원을 사용하는 상황으로 생각하면 이해가 빠르실 것 같습니다.

 

 

1-(2). Clock Gating의 중요성

 

반도체 칩이 전력을 더 적게 사용하게 되면 동일한 전자제품에 대해서 배터리 사용 시간을 더 늘릴 수 있다는 장점이 있습니다.

 

배터리 사용시간이 늘어난다는 것은 휴대용 전자기기의 휴대성과 직접적인 연관이 있겠죠.

 

 

반도체에서의 Power는 최근들어 반도체 설계에서 굉장히 중요성이 증가하고 있습니다.

 

특히, 스마트폰이나 노트북과 같은 모바일 제품군에서 사용되는 반도체 칩인 SoC에서 그 중요성이 더욱 커지고 있습니다.

 

데스크탑을 사용할 때에는 콘센트에 꽂아놓고 사용하기 때문에 일반적으로는 전기를 얼마나 먹는지 크게 신경을 쓰지 않잖아요. (저만 그런가요..??ㅎㅎ)

 

반면에 스마트폰이나 노트북의 경우 소비자들은 전자제품을 한 번 충전하면 더 장시간 사용하고 싶어 하겠죠.

 

또, 스마트폰이나 노트북을 사용할 때에도 게임과 같은 무거운 프로그램을 돌릴 때 발열이 적으면서 더 오랫동안 사용할 수 있는 제품을 찾습니다.

 

삼성전자와 애플이 새로운 스마트폰, 노트북을 출시할 때마다 배터리 성능을 얼마나 더 향상시켰는지 홍보하고 경쟁하는 것도 다 이러한 이유 때문이겠죠.

 

그렇다면, 이러한 Clock Gating은 어떻게 구현할까요?

 

그 방법에 대해서 자세하게 알아보겠습니다.

 

 

2. Clock Gating 구현 방법 : Integrated Clock Gating Cell (ICG cell)

먼저 결론부터 말씀드리자면, Clock Gating을 구현하기 위해서 가장 보편적으로 사용되는 방법은 Integrated Clock Gating Cell (ICG cell)을 사용하는 것입니다.

 

ICG cell은 아래의 그림과 같이 Latch와 AND gate로 이루어져 있습니다.

 

Integrated Clock Gating cell (ICG cell)

위의 회로도를 보면 Clock Gating이 어떻게 동작이 될 것인지 그려지시나요?

 

먼저 회로의 동작에 대해서 알아보겠습니다.

 

ICG cell Timing Diagram

 

 

위의 회로도를 보면 Negative level sensitive Latch를 사용하였습니다.

 

즉, Clock 신호가 Low일 때, Latch의 Input 값인 Enable 신호가 Latch를 통과하여 AND gate로 전달이 됩니다.

 

반대로 Clock이 High가 되면 Enable 신호는 Latch를 통과하지 못합니다.

 

다시 말해 Clock이 High이면 Enable 신호가 High에서 Low로 바뀌더라도 Clock 신호가 바로 차단되지 않는다는 의미입니다.

 

 

다음으로 Clock 신호와 Enable 신호가 AND gate를 통과하여 Output으로 나가게 되는데요. 

 

Enable 신호가 High일 때에만 Clock 신호가 AND gate를 통과하여 모듈에 Clock이 공급되게 됩니다.

 

반대로 Enable 신호가 Low라면 Clock은 모듈로 공급되지 않습니다.

 

 

정리하자면 Enable 신호는 Clock이 Low일 때 Latch를 통과하여 AND로 전달되며, AND에서는 Enable 신호의 값에 따라 Clock을 모듈로 공급할 것인지 말 것인지 결정하게 됩니다.

 

여기까지 읽으신 분들 중 누군가는 다음과 같은 질문을 떠올릴 수도 있겠습니다. (제가 처음 공부할 때 그랬거든요..ㅋㅋㅋ)

 

 

굳이 Latch 없이 AND gate만 사용하면 안 되나?
왜 Latch를 사용하는 것이지? Latch 말고 Flip flop을 사용하면 안 되나?

 

 

 

그 이유는 Latch를 사용하면 glitch free 한 Clock을 만들어줄 수 있지만, AND gate만을 사용하거나 Latch 대신 Flip flop을 사용하게 되면 glitch noise가 발생할 가능성이 존재하기 때문입니다.

 

이에 대해서 조금 더 자세히 알아보도록 하겠습니다.

 

 

3-(1). AND gate만으로 Clock gating을 구현하면 안 되는 이유

Clock Gating - AND

AND gate를 사용하여도 Clock gating의 기능을 구현할 수'는' 있습니다.

 

문제는 glitch noise로 인해 회로의 안정성이 보장되지가 않는다는 것이 문제입니다.

 

아래와 같은 동작을 생각해 보겠습니다.

 

위의 동작과 같이 Clock이 High인 도중에 Enable 신호가 Low에서 High로 바뀌게 되면 어떻게 될까요?

 

Gating Clock이 바로 High가 되어 버려 clear 하지 못한 Clock 신호가 만들어집니다.

 

이러한 glitch noise는 칩에 error를 발생시킬 수 있는 원인이 되는데요. 

 

이를 해결해 주기 위해서 앞서 설명한 바와 같이 Latch를 사용하여 glitch free 한 신호를 내보내 주는 것입니다.

 

 

3-(2). Flip flop으로 Clock gating을 구현하면 안 되는 이유

Clock Gating - Flip flop

 

일반적으로 디지털 회로를 설계할 때에는 Latch는 피해야 할 요소 중 하나입니다. 

 

그런데 ICG cell에서는 glitch free 신호를 만들어주기 위해 Flip flop 대신 Latch를 사용하고 있습니다.

 

Latch 대신 Flip flop을 사용하게 되면 역시나 glitch noise가 발생할 수 있는데요. 아래의 예시를 통해 한 번 보도록 하겠습니다.

 

 

이번 예시는 AND gate만을 사용할 때보다는 조금 더 physical 적인 관점에서 생각을 해보아야 합니다.

 

한 번에 직관적으로 이해되지는 않을 수 있지만, 천천히 생각해 보면 그렇게 어렵진 않습니다.

 

Flip flop을 사용할 때 glitch noise가 발생하는 이유는 위의 그림에서 Path1과 Path2의 timing delay 차이 때문입니다.

 

Delay가 없는 ideal 한 상황이라면, glitch noise가 발생하지 않겠지만, 실제 현실에서 delay가 존재할 수밖에 없죠.

 

Timing diagram에서 Enable이 Low일 때, Clock의 Rising edge 순간을 생각해 보겠습니다.

 

이때, Enable의 Low 값이 AND gate에 도달하는 시간이 (Path2) Clock이 AND gate에 도달하는 시간 (Path1)보다 오래 걸립니다.

 

왜냐하면 Path2는 Flip flop을 거쳐가지만, Path1은 Wire를 통해서만 AND gate에 도달하기 때문입니다.

 

이러한 delay로 인해 위와 같이 glitch noise가 발생할 수 있습니다.

 

 

만약 여기서 한 층 더 나아가서, Negative edge trigger인 Flip flop을 사용하면 되는 것 아니냐고 반문할 수 있겠습니다.

 

물론, 그렇게 할 수는 있겠지만 그런 구조를 사용하지 않는 데에는 분명한 이유가 있습니다.

 

첫 번째로, Flip flop은 Latch 2개로 이루어진 구조로 Latch보다 면적이 2배 더 넓습니다. 같은 동작을 하는 회로라면, 굳이 더 넓은 면적을 차지하는 구조를 사용할 이유가 전혀 없겠죠.

 

두 번째로는 Flip flop은 Latch보다 더 많은 Power를 소모합니다. 이 역시 마찬가지로 같은 동작을 하는 회로라면, 굳이 더 많은 Power를 소모하는 구조를 사용할 이유가 전혀 없겠죠.

 

 

이와 같은 이유로 처음에 설명드린 glitch free 한 Clock을 만들어 줄 수 있는 ICG cell을 Clock gating에 사용하게 되는 것입니다.