1. 발진자(수정 발진기)와 클럭
컴퓨터가 시간을 측정하는 방법이 클럭이다. 클럭은 초당 진동수를 나타내는 헤르츠(Hz)로 표시한다. 아래 그림에서 나타낸 것처럼 1초에 몇 번 입력 신호가 주어졌는지를 표시한다.
이런 입력을 연산이라고 본다면 CPU의 성능 3.2 GHz는 3.2 x 10^9 Hz = 3.2/8 x 10^9 Byte = 약 400 MB/s 정도로 계산할 수 있다.
실제 클럭은 아래 그림의 왼쪽에 있는 원통형의 부품 속에 들어있다. 일반 소자의 발열 등으로 인한 진동수 영향을 최소화하기 위해서 보통 개별 소자로 구성되어있다. 반드시 전원이 들어와야만 움직일 수 있기 때문에, 컴퓨터가 시간을 측정하는 방식은 클럭 뿐만 아니라 실시간 측정 시계(Real Time Clock, RTC)가 따로 존재한다. 컴퓨터를 뜯어보면 메인보드 위에 CR2042 같은 원형 건전지가 끼워져있는 부분에서 이 RTC가 동작하는 것이다.
이 부품 속에는 수정(SiO2)으로 된 막대가 2개 있고, 이 막대에 전압을 인가하면 압전효과(PiezoElectric effect)에 의해서 막대가 움직일 수 있게 된다. SiO2 결정은 한 축에 대해 대칭형이기 때문에, 외부의 충격으로 인해 원자간 결정이 움직이면 +, -가 많은 영역이 생겨나면서 대전되어 커패시터와 같이 전기를 띈다고 한다. 이러한 원리는 각종 전자부품뿐 아니라 Quartz(수정) 시계에도 사용한다고 한다. 아래 그림은 참조4의 영상인데, 영어이지만 대충 눈치로 이해가 되고 어렵지 않으므로 한 번쯤 보면 좋다.
이런 주기적이고 일정한 진동을 통해서 컴퓨터는 장치들의 시간 기준값을 정한다. 참조 2의 예시가 좋은데, 클럭은 마치 오케스트라의 지휘자가 박자를 맞추기 위해 지휘하는 속도를 조절하는 것과 같다. 이 진동 속도를 기준으로하여 컴퓨터의 회로 소자들이 연산 및 작동을 하게 되는 것이다. 지휘자가 빨리 지휘를 하듯이, 컴퓨터가 클럭을 높이면 연산이 빨라져서 더 좋은 성능을 낼 수 있다. 하지만 기준 스펙보다 높은 진동수로 오버클럭을 발생시키면 이상 동작을 하거나 심한 경우 부품이 손상될 수도 있다.
2. 래치
앞으로 래치, 플립플롭 등 순차회로를 구성하는 소자에 대해서 정리한다. 이 소자들은 입력 비트값을 저장하기 위한 목적으로 사용하며, RAM, CPU 등을 구성하는 기본 소자이다!
기본 래치
이제껏 연산을 할 수 있는 게이트에 대해서는 다뤘지만, 입력으로 1 이나 0 값이 왔을 때 이 값들을 계속해서 저장할 수 있는 기억소자에 대해서는 다루지 않았다. 이 입력값들을 기억하기 위해서 되먹임(feedback) 방식을 사용한다. 다시 말해 출력을 다시 입력으로 넣는 식으로 회로를 구성한다.
위 회로에서 이전의 out이 1이면 set, reset의 입력값에 따라 out값이 표와 같이 나온다. 이전의 out이 0일 때를 포함하여 set, reset 값에 따른 특성을 생각해보면 아래와 같다.
1. 이전의 out이 1일때 set이 1인 경우, reset과 상관없이 out은 1이다. 즉 내가 입력값을 1로 주면 계속해서 out이 1로 나오면서 입력값이 저장되는 것이다.
2. reset이 1일때 out은 set값을 따른다. 즉 1이 저장된 상태에서 값을 다시 설정하기 위해 내가 reset을 주면, set 값으로 출력값이 다시 설정되는 것이다.
3. reset이 0, set이 0이면 out은 이전 값이 그대로 출력된다. 즉 아무런 입력이 없을 때 회로가 값을 기억한다.
-> 0, 0으로 입력했을 때 회로가 값을 기억하는 동작을 수행하므로 액티브 로우라고 한다.
NAND S-R 래치
NAND 소자를 이용한 S-R 래치로 소자의 전력이나 복잡도 효율을 높일 수 있다. 값을 기억하기 위해서 위 기본 래치와 같이 여러 소자를 쓰는 것이 아니라 NAND 소자만 사용하는 것이다.
set과 reset이 아니라 위에 줄이 간 입력으로 들어간다. 이것은 기본 래치에서 살펴본 것처럼 애초에 not으로 입력이 들어가므로 액티브 로우이다.
SR NAND 래치의 특성표는 다음과 같다. set과 reset이 0으로 액티브 로우일 떄, q와 qbar가 각각 유지되는 것을 확인할 수 있다.
입력 금지
SR NAND 래치에서 set과 reset을 1로 주면 이전 Q와 Q bar가 0일 때 Q와 Q bar가 1로 같아져서 보수 관계(한 개는 0, 한 개는 1)가 아니게 되므로 논리적 오류가 된다. 따라서 set, reset을 둘 다 1로 주는 입력은 금지된다.
래치 초기화
SR 래치의 이전 출력값을 가정하여 특성을 구했는데, 실제로는 컴퓨터 전원 on/off 여부나 주변 환경 등에 의해 래치의 이전 값을 0이나 1로 고정할 수 없다. 알 수 없는 값인 상태로 시작하게 되므로 실제 사용 시에는 제어를 위해서 래치 초기화 과정을 거친다.
이외에도 특정 타이밍에만 동작하거나, 입력 금지값을 자연스레 막을 수 있는 Gate S-R latch, Gate D latch 등이 있다고 한다.
참조
0. [책] 한 권으로 읽는 컴퓨터 구조와 프로그래밍
1. 유튜브 시골사는 개발자님 강의 영상
https://www.youtube.com/watch?v=i2Jq8lTD9q8
2. 나무위키 - 클럭
https://namu.wiki/w/%ED%81%B4%EB%9F%AD
3. 위키피디아 - 클럭, 실시간 시계
https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9F%AD_%EC%8B%A0%ED%98%B8
https://ko.wikipedia.org/wiki/%EC%8B%A4%EC%8B%9C%EA%B0%84_%EC%8B%9C%EA%B3%84
4. 유투브 How the modern world keeps track of time - An introduction to crystal oscillators
https://www.youtube.com/watch?v=fPKdDCiJDok
5. My.log 블로그 - [순차회로] 래치
6. 메카트로닉스 공부하기!! 블로그 - SR 래치
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lagrange0115&logNo=220722338106
'Computer Science > Introduction' 카테고리의 다른 글
12. 중앙 처리 장치, 레지스터 (0) | 2022.05.15 |
---|---|
11. 시간표현과 상태기억: Gate S-R 래치, Gate D 래치, 플립플롭, 카운터 (0) | 2022.05.03 |
9. [종합][스터디] 드 모르간의 법칙, 2의 보수, UTF-8, Base64 인코딩 이유 (0) | 2022.04.27 |
8. 가산기, 디코더/인코더, 멀티플렉서/디멀티플렉서 (0) | 2022.04.19 |
7. (보충) 논리식의 간소화 (0) | 2022.04.18 |