본문 바로가기

디지털논리회로

[논리회로] 컴퓨터 시스템에서 클록은 왜 필요할까?

들어가며

먼저 클록의 개념을 알고 있는 상태에서 배워야한다.

디지털 논리회로 시간에 배운 클록의 개념은 어렵지않게 이해할 수 있었다.

그렇지만 이러한 클록이 왜 필요한지 의문이 들었다.

내 생각에 위 회로에서 ClockPulse 부분을 항상 1로 두는 것 즉, 아예 없애버린다면 더 빠르게 동작할거 같은데????

그러니까 굳이, 내가 S=1, R=0 을 통해 Q=1 을 설정하기 위해 다음 클록에지를 기다리지않고 그러한 기다리는 시간이 감소된 형태로 속도 측면에서 이득을 얻지 않을까?

이러한 내 생각이 옳은지 확인하고싶었기에 먼저, 클록이 필요한 이유부터 알아야했다.

 

클록 신호가 필요한 이유
  • 동기화: 컴퓨터의 CPU, 메모리, 입출력 장치 등 모든 부품은 서로 정확하게 맞춰져야 합니다. 클록 신호는 이러한 부품들의 동작을 동기화하여 데이터를 정확하게 주고받을 수 있도록 합니다.
  • 명령 실행: CPU는 클록 신호에 맞춰 명령을 하나씩 실행합니다. 클록 주파수가 높을수록 CPU는 더 많은 명령을 처리할 수 있으므로 컴퓨터의 성능이 향상됩니다.
  • 데이터 전송: 데이터는 클록 신호에 맞춰 버스를 통해 이동합니다. 클록 신호는 데이터 전송의 시작과 끝을 알려주는 역할을 합니다.

그렇다면, Clock Pulse가 없는 상태에서 위 3가지 조건을 만족시킨다면 없어도 상관없을것이다.

동기화란 서로 다른 회로들이 일치하고자 하는 시간대에 동작하는 걸 의미할것이고

명령 실행이란 그저 단순히 입력값에 따른 출력값이 될것이다.

데이터 전송 역시도 그저 단순한 논리값일것이다. 

 

먼저 동기화를 클록 없이 구현할 수 있는가?

 

간단히 말하면, 현대적인 디지털 회로에서 클록 없이 완벽한 동기화를 이루는 것은 매우 어렵다.

클록 없는 동기화의 어려움
  • 데이터 경쟁: 클록 없이 회로를 동작시키면, 데이터가 서로 충돌하거나 예상치 못한 순서로 처리될 수 있다. 이는 데이터 손상이나 오류로 이어질 수 있다.
  • 시간 지연: 회로 내 각 부분의 동작 속도가 다르기 때문에, 데이터가 도착하는 시간에 차이가 발생할 수 있다. 이는 데이터 처리 순서에 혼란을 야기할 수 있다.
  • 설계 복잡성: 클록 없는 회로를 설계하기 위해서는 매우 복잡한 논리 회로를 구현해야 한다. 이는 회로의 크기와 전력 소모를 증가시키고, 설계 및 검증 시간을 늘릴 수 있다.
또한,

 

  • 비동기 회로: 클록 신호 없이 동작하는 회로를 비동기 회로라고 한다. 하지만 비동기 회로는 설계가 매우 복잡하고, 성능이 낮으며, 검증이 어렵다는 단점이 있다.
  • 지연 요소 활용: 일정한 시간 지연을 갖는 논리 게이트를 이용하여 데이터 전송 시간을 조절하는 방법이 있다. 하지만 이 방법은 정확한 시간 지연을 보장하기 어렵고, 온도나 전압 변화에 민감하다.

 

결론

현재 기술 수준에서는 클록 신호 없이 완벽한 동기화를 이루는 것은 매우 어렵다.

 

 

+ 추가된 부분

좀 찾아봤는데 metastablity 를 피하기위해서이네요
클록이 없는 비동기 회로에서 
두개의 회로가 flip-flop에 접근할 때 한쪽이 down
다른 한쪽이 up을 보낼떄 중간값을 가지는 신호에 의해 신호가 중간값을 갖게되고 이러한 문제로 인해 소자가 타는 어쩌구 저쩌구