25.06
이전 글에서 래치를 이용해 정보를 기억하는 회로를 만들었습니다. 하지만 D 래치는 활성화 신호가 켜져 있는 동안 입력 변화를 그대로 따라가기 때문에, 여러 래치가 연결된 시스템에서는 문제가 생깁니다.
컴퓨터는 복잡한 계산을 한 번에 처리하지 않습니다. 대신 여러 단계로 나누어 각 단계의 결과를 래치에 저장한 뒤, 다음 단계로 전달합니다. 예를 들어 덧셈 결과를 래치에 저장하고, 그 값을 다음 래치가 받아 또 다른 연산에 사용하는 식입니다.
하지만 D 래치는 활성화(E) 신호가 켜져 있는 동안 D 입력의 변화를 그대로 따라갑니다. 이 상태에서 래치 여러 개를 A → B → C 순서로 연결하면 어떻게 될까요? A의 출력이 바뀌는 순간 B가 즉시 그 값을 받고, C도 곧바로 따라 바뀝니다. 각 단계가 자기 값을 독립적으로 유지하지 못하는 것입니다.
아래 회로에서 세 개의 D 래치가 직렬로 연결되어 있습니다. E=1인 상태에서 D를 토글해봅시다. 세 래치의 Q가 동시에 바뀌는 것을 볼 수 있습니다.
데이터가 한꺼번에 통과해버려서 각 단계가 독립적으로 값을 유지할 수 없습니다.
따라서 우리는 모든 회로가 같은 타이밍에 동작하도록 동기화할 필요가 있습니다. 바로 이 동기화를 책임지는 것이 클럭(Clock)입니다.
클럭은 컴퓨터 내부에서 일정한 주기로 반복되는 정기적인 신호입니다. 모든 회로에 “지금 동작해”라는 박자를 동시에 알려주는 역할을 합니다.
같은 파이프라인에 클럭을 추가하면 어떻게 될까요?
다음 순서대로 조작해봅시다:
컴퓨터 사양에서 “3.2GHz” 같은 숫자를 본 적이 있을 것입니다. 이것은 클럭의 주파수를 의미하며, 1초에 32억 번의 박자를 보내는 속도를 뜻합니다. 이 클럭 주파수가 높을수록 회로는 더 자주 동작할 수 있어, 더 많은 계산을 빠르게 처리할 수 있습니다.
그렇다면 클럭에 맞춰 동작하는 메모리는 어떻게 구현할 수 있을까요? D 플립플롭(D Flip-Flop)을 살펴봅시다.
D 플립플롭은 D 래치처럼 데이터를 입력받아 저장하지만, 클럭의 특정 순간(엣지)에서만 데이터를 받아들입니다. 상승 엣지 혹은 하강 엣지 중 하나를 선택할 수 있습니다.
엣지의 그 순간에만 데이터를 받아들이므로, 입력이 아무리 요동쳐도 결과가 예측 가능하고 안정적입니다.
상승 엣지 D 플립플롭은 두 개의 D 래치를 사용해 아래와 같이 구현할 수 있습니다. 앞쪽 래치는 CLK=0일 때 열려 데이터를 받아들이고, 뒤쪽 래치는 CLK=1일 때 열려 앞쪽 래치의 값을 출력합니다. 두 래치가 동시에 열리지 않기 때문에 CLK가 0→1로 바뀌는 순간에만 데이터가 통과합니다.
다음 순서대로 조작해봅시다:
D 플립플롭 하나는 단 하나의 비트(0 또는 1)만 저장할 수 있습니다. 하지만 컴퓨터는 8비트, 16비트, 32비트, 64비트와 같은 여러 비트가 모인 Word(컴퓨터가 한 번에 처리하는 데이터 묶음) 단위로 숫자를 표현하고 처리합니다.
이러한 여러 비트의 정보를 한 번에 저장하기 위해, 여러 개의 D 플립플롭을 병렬로 연결한 것이 바로 레지스터(Register)입니다. 예를 들어, 8비트 레지스터는 8개의 D 플립플롭으로 구성되어 8개의 비트를 동시에 저장할 수 있습니다. 모든 플립플롭이 같은 클럭 신호를 공유하므로, 8비트 데이터가 동시에 저장되고 출력됩니다.
레지스터는 CPU 내부에 위치하며, 연산 장치가 계산할 값이나 제어 장치가 다음 명령어를 가져올 주소 등, CPU가 당장 처리해야 할 핵심적인 정보들을 매우 빠르게 임시 저장하는 역할을 합니다. CPU와 같은 칩 내부에 위치하기 때문에 접근 속도가 매우 빠르지만, 그만큼 비싸고 공간을 많이 차지합니다.
우리는 이제 덧셈을 수행할 수 있는 회로뿐만 아니라, 그 계산 결과를 ‘기억’할 수 있는 능력을 컴퓨터에게 부여하는 방법을 알게 되었습니다.
이제 계산과 기억이라는 두 가지 능력을 갖추었습니다. 하지만 우리가 매일 쓰는 컴퓨터를 떠올려봅시다. 웹을 검색하고, 음악을 틀고, 게임을 합니다. 지금까지 만든 회로들과는 모습이 아주 다릅니다. 이것만으로 컴퓨터라고 부를 수 있을까요? 다음 글에서는 컴퓨터란 무엇인지 정의하고, 지금까지 만든 회로들이 어떻게 하나의 컴퓨터로 조립되는지 살펴봅시다.