플립플롭 (Flip-Flop)
쉽게 풀면
플립플롭은 값을 하나 저장해 두는 가장 작은 디지털 기억 장치입니다. 평소에는 입력이 아무리 바뀌어도 출력이 꿈쩍하지 않다가, 클록 신호가 올라가는 순간에만 그때의 입력 값을 받아들여 저장하고 다음 클록까지 유지합니다. 이 덕분에 회로 전체가 같은 박자에 맞춰 한 단계씩 상태를 옮겨 갈 수 있습니다.
왜 중요한가
동기식 디지털 시스템은 조합 논리와 플립플롭이 번갈아 놓인 구조로 되어 있어서, 계산 결과가 매 클록마다 한 단계씩 확정되며 앞으로 나아갑니다. 레지스터, 카운터, 상태기계, 파이프라인이 모두 이 소자를 여러 개 묶어 만든 것이므로, 디지털 설계에서 면적과 전력, 타이밍을 논할 때 가장 기본이 되는 단위입니다.
논문에서는 이렇게 쓰입니다
긴 조합 논리 경로를 기억 소자로 끊어 한 클록에 처리할 일을 줄인 전형적인 설계 기법입니다.
조금 더 깊게 보면
가장 널리 쓰이는 형태는 마스터와 슬레이브 두 개의 래치를 직렬로 연결한 D 플립플롭으로, 클록이 한 레벨일 때 앞 래치가 값을 받고 반대 레벨일 때 뒤 래치가 값을 넘겨받아 가장자리에서만 값이 바뀌는 동작을 만듭니다. 래치가 클록 레벨 동안 계속 투명한 것과 달리 플립플롭은 가장자리에서만 값을 받아들이므로 타이밍 해석이 훨씬 단순해집니다. 저장 동작이 성립하려면 셋업·홀드 시간 조건을 지켜야 하며, 이를 어기면 준안정 상태에 빠집니다. 칩 전체 전력의 상당 부분이 플립플롭과 이를 잇는 클록망에서 소모되므로 클록 게이팅의 주요 대상이기도 합니다.
주의할 점
래치와 플립플롭은 자주 섞여 쓰이지만 값을 받아들이는 시점이 레벨인지 가장자리인지가 근본적으로 다릅니다. 정적 램 셀도 값을 유지하는 소자이지만, 대량 저장을 위해 밀도를 우선한 구조라는 점에서 용도가 다릅니다.