조합회로는 뭐고 순차회로는 대체 뭘까 – 하드웨어 시리즈 #1

2023. 2. 12. 06:24Hardware

 

하드웨어를 배우게 되면 아마도 가장 먼저 배우는 개념들 중 하나가 이 둘이다.

그만큼 중요하다는 것을 좀 더 와닿게 이야기하자면,

이 둘을 기반으로 CPU가 설계된다는 사실이다.

 

 

 

일단 조합회로와 순차회로는 대충 어디다 써먹는지는 알겠고.. 그래서 뭔데?

 

 

 

 

조합회로란,

현재 입력에 의해서만 출력이 결정되는 회로이다.

 

 

예시를 들어보자면, 

AND 게이트, OR 게이트 등이 있을 수 있다.

 

 

 

왜일까?

 

 

 

어쨌든 AND 게이트에 신호를 넣으면 바로 출력 Y가 나오기 때문이다.

 

 

 

 

진리표에서 볼 수 있듯이,

입력 A와 B 신호에 변화가 생기는 순간,

즉 A와 B에 전력을 공급하거나 공급하지 않을 때

 

Output이 바로 결정이 되어 즉시 출력이 나온다.

(물론 회로 자체의 delay를 무시한다면 즉시 나온다고 할 수 있다.)

 

 

 

 

 

 

그래서 우리가 보통 흔히 아는 로직 게이트들은 모두 조합회로에 속한다.

 

 

AND, OR, NOT, NOR, XOR, XNOR, NAND 등 로직 게이트는 조합회로에 속한다.

(NAND까지만 진짜 있는 거고 나머지는 존재하지 않습니다;;)

 

 

 

 

 

아니, 그러면 논리회로인데 즉시 안 변하는 게 있나?

"솔직히 입력 넣어주면 다 바로바로 변하잖아!"

 

 

 

 

 

... 하지만 바로바로 안 변하는 수상한 녀석이 순차회로이다

 

 

 

 

 

 

순차회로란,

현재 입력 + 과거 입력에 의해 출력이 결정되는 회로이다.

 

 

 

예를 들어, 계산기의 경우 계속 여러 가지 연산들을 하는데,

5 + 3 - 2를 하게 되면

 

먼저 5 + 3을 계산

그다음 5 + 3을 계산한 결과에 대해 -2를 더한다

 

 

 

 

 

자, 이 상황에서 5 + 3이 이미 이전 단계에서 계산한 '과거 입력'이자 '상태'이고,

-2가 현재 입력이다.

 

 

(과거 입력은 고급진 말로 상태 - state라고 한다)

 

 

 

 

 

 

그러면 순차회로는 출력이 왜 바로바로 안 변할까?

그리고 이미 지나가버린 과거의 입력은 대체 어떻게 쓸까?

 

 

 

일단 앞서 설명했던 조합회로의 경우

과거 입력을 사용할 수 없다.

 

 

과거 입력을 사용하고자 해도,

출력이 즉시즉시 변해서 과거의 입력을 다시 입력으로 넣을 수 없답니다.

 

 

 

 

하지만 계산기처럼 하나의 계산만 하는 것이 아닌,

여러 가지 수많은 연산을 순차적으로 수행하기 위해서는

현재 입력은 물론,

훅 지나가버리지 않는 과거의 입력이 필수적이다.

 

 

 

 

 

하지만 과거의 입력을 유지하기 위해서는

과거의 입력을 저장하는 모듈이 필요하다.

 

 

 

어떤 상태를 저장하는 모듈로는 대표적으로 flip-flop이 있다.

 

 

 

 

 

이러한 flip-flop이라는 모듈에 상태를 저장해서,

저장한 과거의 입력을 다음 연산에 사용할 수 있게 된다.

 

 

D flip-flop의 모습

 

여기서 D는 입력, Q는 출력, C는 클럭이라고 하는 신호이다.

 

 

한 마디로,

D에 저장할 신호를 입력으로 주면

특정 시간이 되면 D로 들어와서 저장된 값이 Q로 출력된다.

 

 

(특정 시간 후에 출력되는 이유는, 바로 나오면 조합회로랑 결과가 같기 때문)

 

 

 

 

 

이때 특정 시간을 정해주는 것이 클럭 (Clock)이라는 신호다.

즉, 클럭이 flip-flop에 입력될 때마다 D라는 입력이 Q로 출력된다.

 

 

 

 

 

자,

이렇게 flip-flop이라는 모듈에 데이터가 저장한 후

저장된 '과거' 데이터와 '현재' 데이터를 함께 사용하여

결과를 출력하는 것이 순차회로이다.

 

 

 

 

 

 

 

정리하자면,

조합회로는 입력에 따라 바로바로 출력이 나오는 회로,

순차회로는 이미 저장된 데이터와 새로운 입력을 가지고 출력을 결정하는 회로

 

 

 

조합회로 (왼쪽), 순차회로 (오른쪽)

조합회로는 입력에 따라 출력이 바로 나오는 것이 보이지만,

순차 회로는 메모리 (저장된 데이터)를 사용하여 출력이 나오는 것을 볼 수 있다.

 

 

 

 

 

 

다음 글에서는...

... 조합회로 심화버전에 대해 이야기할 것이고

 

 

다다음 글에서는...

... 순차회로 심화버전,

... 클럭까지 배워봅시다!

 

 

 

 

 

이해 안 되는 내용이나 피드백은 댓글로 남겨주세요!

 

 

 

 

그럼 이만~

 

 

 

* 글을 작성할 때 고려대학교 서태원 교수님의 저서

<원리부터 설계까지 컴퓨터구조 - RISC-V 중심으로>를 참고했습니다. *