본문 바로가기
CS/BOOK

[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 3-1. 컴퓨터의 비트 기억 방법

by 벨롭 (valop) 2024. 3. 19.

 

시간 표현과 상태 기억

 

 

시간 표현 - 발진자와 클럭

 

 

사람은 직관적으로 시간이 흐른다는 것을 파악할 수 있다. 하지만 컴퓨터는 스스로 시간의 흐름을 파악할 수 없다. 그렇기 때문에 컴퓨터는 주기적인 전기신호를 사용하여 시간을 측정한다. 

 

 

출처 : https://incbtech.com/index.php/circuit-bench/150-lc-oscillator-using-the-4069-cir093e

 

 

인버터의 출력을 입력에 연결하면 0과 1사이를 진동하는 발진자를 만들 수 있다. 0의 출력은 인버터의 입력으로 들어가 1을 출력하고, 1은 다시 인버터의 입력으로 들어가 0을 출력하기 때문이다. 

 

이와 같은 발진자는 크리스탈을 이용해서도 만들 수 있다. 크리스탈에 전극을 연결하고 전기를 가하면 크리스탈이 구부러진다. 또한 크리스탈은 압력을 받으면 전기를 만들어낸다.  이 두 가지를 이용하면 크리스털에 전기를 가해서 다시 전기를 얻어낼 수 있다. 따라서 크리스타탈이 전기를 다시 만들어내는 시간을 주기로 활용할 수 있다.

 

발진자는 컴퓨터에 시간을 셀  수 있게 해주는 신호인 클럭을 제공한다. 컴퓨터에서 흔히 들을 수 있는 오버클럭은 이 클럭을 빠르게 공급하는 것이다.

 

 

 

 

 

상태 기억 - 래치

 

 

 

OR 게이트 래치에서 Y가 1인 경우를 생각해보자. Y는 B의 입력값으로 주어지기 때문에, A의 입력과 상관없이 Y는 항상 1을 유지하게 된다. 즉, A의 상태가 변하더라도 Y는 1이라는 과거의 상태를 기억하고 있다.

 

 

 

 

 

 

AND-OR 게이트 래치

 

set reset NOT(reset) A B out
1 0 1 1 1 1
0 1 0 0 0 0

 

 

OR 게이트 래치에 약간의 추가작업을 통해 reset 기능을 만들 수도 있다. 그러나 AND-OR 게이트 래치의 경우 설계가 비대칭이기때문에 지연 시간의 차이가 발생한다.

 

 

 

 

 

 

 

따라서 동일한 기능을 하는 대칭적인 설계를 가진 회로가 대안이 될 수 있는데, 바로 SR래치다. SR래치는 한 쪽은 액티브 하이, 한 쪽은 액티브 로우인 보수 출력을 제공한다.

 

 

 

 

 

 

SR래치에서는 두 입력이 모두 동시에 0인 경우 결과를 예측할 수 없다. 이 문제를 예방하기 위해서 나온 것이 D래치이다. set과 reset을 같은 입력인 D에 연결하고, 한 쪽에는 인버터를 추가해서 서로 반전관계를 유지하도록 할 수 있다.

 

 

 

 

 

상태기억 - 플립플롭

 

 

 

 

 

 클럭이 0인 경우를 먼저 보자.  마스터 래치의 경우, 클럭이 0일 때 인버터에 의해 Enable이 1이 되므로 데이터가 저장된다. 하지만 슬래이브 래치의 경우 Enable이 0이므로 Q에 변화가 생기지 않는다. 

 그러다 클럭이 0에서 1로 바뀌는 순간, 슬레이브 래치의 enable은 1이 되므로 마스터 래치의 출력에 있던 모든 내용이 저장된다.

 

즉, D 래치와 달리 D 플립플롭은 입력값이 아닌 클럭에 반응하여 출력이 변화하게 된다. 0이 1로, 1이 0으로 변하는 엣지의 경우에만 데이터가 변화하므로 나머지 시간에는 D의 값이 무엇이든 출력에 영향이 없으므로 안정성을 확보할 수 있다.

 

 

 

 

비동기적 카운터 (리플 카운터)

 

플립플롭은 여러 방면에서 활용되고 있다. 우선 D 플립플롭은 클럭에 반응하여 출력이 변화하게 되므로, 클럭에 맞춰 수를 세는 카운터를 설계하기 위해서도 플립플롭을 활용할 수 있다. 또한 여러개의 D 플립플롭을 한 패키지에 넣어 레지스터를 만들면 더 큰 데이터를 기억할 수 있다.