클록 게이팅 (Clock Gating)
쉽게 풀면
디지털 회로 안의 많은 부품들은 클록이라는 일정한 박자 신호에 맞춰 계속 켜졌다 꺼지며 동작합니다. 그런데 어떤 부품이 이번 박자에서 딱히 할 일이 없다면, 굳이 박자 신호를 계속 흘려보내 불필요하게 움직이게 할 필요가 없습니다. 클록 게이팅은 이럴 때 해당 부품으로 가는 클록 신호를 잠깐 막아서, 필요 없는 순간에는 회로가 조용히 쉬도록 하는 기법입니다. 마치 지금 연주하지 않는 악기 파트에는 지휘봉 신호를 보내지 않는 것과 비슷합니다.
왜 중요한가
디지털 회로에서 소비되는 동적 전력의 상당 부분은 클록 신호 자체를 회로 전체에 계속 전달하는 데서 발생하기 때문에, 불필요한 클록 전달을 막는 클록 게이팅은 가장 널리 쓰이는 저전력 설계 기법 중 하나로 다루어집니다.
논문에서는 이렇게 쓰입니다
당장 값이 바뀌지 않는 레지스터에는 클록을 보내지 않아 전력을 아꼈다는 뜻입니다.
설계 도구가 회로 합성 과정에서 클록 게이팅 회로를 자동으로 추가해 주었다는 의미입니다.
조금 더 깊게 보면
클록 게이팅은 일반적으로 래치와 논리 게이트로 구성된 클록 게이팅 셀을 통해 구현되며, 클록이 하이 상태일 때 값이 바뀌지 않도록 설계하여 글리치가 발생하지 않게 합니다. 최신 설계 도구는 여러 개의 레지스터가 같은 조건에서 동시에 멈춰야 할 때 이를 자동으로 인식해 하나의 게이팅 셀로 묶어주는 최적화를 지원하기도 합니다. 클록 게이팅 조건은 개별 레지스터 단위로 설계할 수도 있지만, 동일한 조건에서 함께 멈춰야 하는 여러 레지스터를 묶어 하나의 게이팅 셀로 처리하면 삽입되는 셀 수와 클록 트리 부담을 줄일 수 있습니다. 글리치가 게이팅 신호 자체에 섞여 들어가면 클록이 순간적으로 끊기거나 짧게 튀는 오동작으로 이어질 수 있어, 게이팅 조건 신호는 클록이 낮은 상태일 때만 안정적으로 반영되도록 래치로 걸러내는 구조가 일반적으로 쓰입니다.
주의할 점
클록 게이팅은 회로가 완전히 켜져 있는 상태를 전제로 하므로 전력 게이팅과 달리 누설 전력은 줄이지 못하며, 두 기법은 서로 대체재가 아니라 함께 쓰이는 보완적인 기법으로 이해해야 합니다.
게이팅 조건을 판단하는 로직 자체도 매 클록마다 평가되어야 하므로, 조건이 지나치게 복잡하거나 자주 바뀌면 오히려 게이팅으로 절감하는 전력보다 조건 계산에 드는 전력이 커질 수 있습니다.