회로도는 추상적이지만 실제 회로는 물리적이잖아. 따라서 입력 받은 신호가 출력 신호로 빠져나가기까지 그 사이의 온갖 전선과 반도체를 따라 실제 전류가 흘러야하겠고. 그렇게 전류가 흐르는데는 실제 시간이 필요할테니 입력 받은 바로 그 순간에는 오히려 역설적이게도 출력 신호를 신뢰할 수 없지 않나하는 생각이 들었음. 시간이 좀 흘러야 전류가 흐를텐데 입력을 받은 바로 그 순간에는 아직 그 전류가 흐르기 전이니까. 


그런데 이게 아주 간단한 회로에도 적용되는 것이니 그러한 회로들이 얽히고 섥혀 만들어진 더 복잡한 회로에도 당연히 적용 되겠지. 그런데 회로가 복잡해질수록 이 문제가 더 커지는게 아닌가 싶더라고. 그야 그럴 것이 한 곳의 입력이 흘러 다른 부분을 제어하고 그 제어에 따라 다시 또다른 곳으로 출력이 나가거나 안 나가거나 결정되고 그게 다시 또또다시 다른 회로를 제어하는데 쓰이고... 이런 식으로 돌아가는게 회로잖아. 그런데 전기가 실제로 흐르는 시간에 있어 차이가 있다는 실제 물리적인 사실을 고려하면 회로도를 그렸을 때 상상한 결과랑 실제 돌려보니 나오는 결과랑은 차이가 좀 있지 않을까 생각이 되었음.


그래서 알아보니 애초에 집적회로를 설계할 때 그걸 고려해 '전파 지연'이라는 개념을 사용하더라고. 집적회로에 입력이 들어오고 난 이후 일정량의 시간이 흐르는 동안 출력은 신뢰할 수 없으니 버리고, 시간이 적당량 흐르고나면 출력값이 안정화 되었을 것이라 전제하여 그때부터 그 출력값을 신뢰하여 쓰는거지. 그 '일정량의 시간'이 바로 전파 지연이고, 집적회로를 설계할 때 그 전파 지연이 얼마나 되어야 오류가 없을지 엔지니어들이 계산해서 정해놓음.


이 전파 지연이 몰랐는데 생각보다 되게 중요한 개념이더라고. 우리가 흔히 사용하는 cpu가 클락 사이클을 중심으로 돌아가는 것이 바로 이 전파 지연 때문이거든. 다음 클락 사이클이 오기 전까지는 플립-플랍의 상태가 그대로 유지되고 클락 사이클이 딱 하고 들어오면 그때 플립-플랍의 상태가 새로 변하는데, 전파 지연이 없다면 굳이 이럴 필요가 없는거지. 클락 사이클이 없는 비동기 회로가 이것저것 신경 쓸 것이 많은 이유도 바로 이 전파 지연 때문이고.


지식이 늘었다!