메모리와 디스크의 핵심(1)
순차논리
순차논리는 조합논리와 달리 입력뿐만 아니라 과거의 상태도 출력에 영향을 미치는 논리회로입니다. 순차논리는 컴퓨터의 메모리와 디스크와 같은 데이터 저장 장치의 핵심 요소입니다.
1. 시간 표현과 상태 기억
컴퓨터에서 시간을 표현하고 상태를 기억하기 위해서는 다음과 같은 기술이 필요합니다.
1-1. 발진자
발진자는 주기적인 전기 신호를 만들어내는 회로입니다. 인버터를 사용하여 출력을 입력에 되먹임하면 0과 1 사이를 진동하는 신호를 얻을 수 있습니다. 이 신호는 시간의 기준이 될 수 있습니다. 하지만 발진자의 진동 속도는 전파 지연과 온도에 따라 달라질 수 있습니다. 그래서 더 정확하고 안정적인 발진자를 만들기 위해 크리스털을 사용할 수 있습니다. 크리스털은 전기를 가하면 구부러지고, 구부러지면 전기를 발생시키는 피에조 전기 효과를 이용합니다. 크리스털 발진자는 입력한 전기로부터 크리스털이 전기를 다시 만들어내는 시간을 정확하게 예측할 수 있습니다.
1-2. 클록
클록은 발진자가 만들어낸 주기적인 전기 신호를 이용하여 시간을 셀 수 있게 해주는 신호입니다. 클록은 컴퓨터의 전원을 키면 전류가 흐르는 상태 (ON)와 흐르지 않는 상태 (OFF)가 반복되는 신호입니다. 이 신호는 컴퓨터의 부품들이 작동하는 페이스를 결정합니다. 클록의 속도는 회로의 전파 지연 시간에 의해 제한됩니다. 클록의 속도를 높이기 위해서는 오버클로킹이라는 방법을 사용할 수 있습니다. 오버클로킹은 부품이 고장나지 않을 범위 안에서 클록을 빠르게 공급하는 도박을 한다는 뜻입니다.
1-3. 래치
래치는 1비트의 정보를 기억할 수 있는 회로입니다. OR 게이트의 출력을 입력에 되먹임하면 과거의 상태를 기억할 수 있습니다. 예를 들어, 초기에 출력이 0이었다면 입력이 1이 되면 출력도 1이 되고, 입력이 다시 0이 되어도 출력은 1로 유지됩니다. 이렇게 래치는 입력이 바뀌어도 출력이 바뀌지 않는 ‘기억’을 하게 됩니다. 하지만 이런 래치는 출력을 다시 0으로 만들 수 있는 방법이 없습니다. 그래서 리셋 바라고 부르는 인버터를 추가하여 출력을 0으로 만들 수 있게 합니다.
1-4. 게이트가 있는 래치
게이트가 있는 래치는 래치의 입력에 게이트를 추가하여 래치의 작동을 제어할 수 있는 회로입니다. 예를 들어, S-R 래치의 입력에 NAND 게이트를 추가하면 게이트 바라고 부르는 입력이 0일 때만 래치가 작동하고, 1일 때는 래치가 작동하지 않습니다. 이렇게 게이트 바를 이용하여 래치의 입력을 끊거나 연결할 수 있습니다. 게이트가 있는 래치는 래치의 입력을 간단하게 하기 위해 D 래치라고 부르는 회로를 사용할 수 있습니다. D 래치는 set과 reset의 입력을 D 하나로 묶은 회로입니다. D 래치는 게이트 바가 0일 때 D가 1이면 Q 출력이 1이 되고, D가 0이면 Q 출력이 0이 됩니다.
1-5. 플립플롭
플립플롭은 래치와 비슷하지만 클록 신호에 의해 작동하는 회로입니다. 플립플롭은 클록의 상태에 따라 입력을 받거나 무시합니다. 예를 들어, 엣지 트리거드 플립플롭은 클록의 상태가 변할 때만 입력을 받고, 레벨 트리거드 플립플롭은 클록의 상태가 특정 값일 때만 입력을 받습니다. 플립플롭은 래치보다 더 정확하고 안정적으로 정보를 기억할 수 있습니다. 플립플롭은 래치와 마찬가지로 S-R 플립플롭과 D 플립플롭 등 여러 종류가 있습니다.
1-6. 카운터
카운터는 플립플롭을 이용하여 숫자를 세는 회로입니다. 카운터는 클록 신호에 따라 플립플롭의 출력을 바꾸어 숫자를 증가하거나 감소시킵니다. 예를 들어, 2비트 이진 카운터는 2개의 D 플립플롭을 사용하여 0부터 3까지의 숫자를 세는 회로입니다. 이진 카운터는 클록의 상태가 변할 때마다 플립플롭의 출력을 반전시킵니다. 이렇게 카운터는 숫자를 표현하고 연산하는데 사용됩니다.
1-7. 레지스터
레지스터는 여러 개의 플립플롭을 하나의 패키지에 넣은 회로입니다. 레지스터는 여러 비트의 정보를 저장하고 전송할 수 있습니다. 예를 들어, 4비트 레지스터는 4개의 D 플립플롭을 사용하여 4비트의 정보를 저장하는 회로입니다. 레지스터는 입력과 출력에 게이트를 추가하여 레지스터의 작동을 제어할 수 있습니다. 예를 들어, 로드 바라고 부르는 입력은 레지스터에 정보를 저장할 때 사용되고, 이네이블 바라고 부르는 출력은 레지스터에서 정보를 읽어올 때 사용됩니다. 레지스터는 컴퓨터의 중요한 구성 요소로, CPU의 레지스터, 메모리의 레지스터, 캐시의 레지스터 등 다양한 곳에서 사용됩니다.
출처
(1) 3장 메모리와 디스크의 핵심: 순차 논리.
(2) 3장. 메모리와 디스크의 핵심 : 순차논리 - 벨로그.
(3) 메모리와 디스크의 핵심-(1) :: 더 좋은 개발자가 되기 위한 메모장.
(4) [전자책] 한 권으로 읽는 컴퓨터 구조와 프로그래밍 - 예스24.