yeolyi.com성열의 컴퓨터공학

클럭

D 래치는 1비트를 기억하는 회로입니다. 하지만 D 래치는 활성화 신호가 켜져 있는 동안 입력 변화를 그대로 따라가기 때문에, 여러 래치가 연결된 시스템에서는 문제가 생깁니다.

동기화의 필요성

컴퓨터는 복잡한 계산을 한 번에 처리하지 않습니다. 대신 여러 단계로 나누어 각 단계의 결과를 래치에 저장한 뒤, 다음 단계로 전달합니다. 예를 들어 덧셈 결과를 래치에 저장하고, 그 값을 다음 래치가 받아 또 다른 연산에 사용하는 식입니다.

하지만 D 래치는 활성화(E) 신호가 켜져 있는 동안 D 입력의 변화를 그대로 따라갑니다. 이 상태에서 래치 여러 개를 A → B → C 순서로 연결하면 어떻게 될까요? A의 출력이 바뀌는 순간 B가 즉시 그 값을 받고, C도 곧바로 따라 바뀝니다. 각 단계가 자기 값을 독립적으로 유지하지 못하는 것입니다.

아래 회로에서 세 개의 D 래치가 직렬로 연결되어 있습니다. E=1인 상태에서 D를 토글해봅시다. 세 래치의 Q가 동시에 바뀌는 것을 볼 수 있습니다.

데이터가 한꺼번에 통과해버려서 각 단계가 독립적으로 값을 유지할 수 없습니다.

A
-
B
-
C
-

클럭

따라서 우리는 모든 회로가 같은 타이밍에 동작하도록 동기화할 필요가 있습니다. 바로 이 동기화를 책임지는 것이 클럭(Clock)입니다.

클럭은 컴퓨터 내부에서 일정한 주기로 반복되는 정기적인 신호입니다. 모든 회로에 “지금 동작해”라는 박자를 동시에 알려주는 역할을 합니다.

같은 파이프라인에 클럭을 추가하면 어떻게 될까요?

A
-
B
-
C
-

다음 순서대로 조작해봅시다:

  1. “A에 새 데이터” 클릭 → A=①. B와 C는 변하지 않습니다.
  2. “클럭” 클릭 → A의 값이 B로 이동합니다. B=①.
  3. “A에 새 데이터” 다시 클릭 → A=②. B는 여전히 ①입니다.
  4. “클럭” 클릭 → B=②, C=①. 클럭 한 번에 데이터가 정확히 한 단계씩만 이동합니다.

컴퓨터 사양에서 “3.2GHz” 같은 숫자를 본 적이 있을 것입니다. 이것은 클럭의 주파수를 의미하며, 1초에 32억 번의 박자를 보내는 속도를 뜻합니다. 이 클럭 주파수가 높을수록 회로는 더 자주 동작할 수 있어, 더 많은 계산을 빠르게 처리할 수 있습니다.

그렇다면 클럭에 맞춰 동작하는 메모리는 어떻게 만들까요? 클럭의 특정 순간에만 값을 받아들이는 D 플립플롭이 그 답입니다.