2023. 2. 15. 18:27ㆍHardware
이번에는 순차회로에 대해 알아보자
아래 글에서 조합회로와 순차회로가 무엇이고
어떻게 구별하는지 알아봤다.
조합회로는 뭐고 순차회로는 대체 뭘까 – 하드웨어 시리즈 #1
하드웨어를 배우게 되면 아마도 가장 먼저 배우는 개념들 중 하나가 이 둘이다. 그만큼 중요하다는 것을 좀 더 와닿게 이야기하자면, 이 둘을 기반으로 CPU가 설계된다는 사실이다. 일단 조합회
mountainhiker.tistory.com
위 내용은 기본적으로 알고 있어야
이번 글도 수월하게 이해할 수 있다.
순차회로는 항상 얘기하듯이
현재 입력과 과거 입력에 의해 출력이 결정되는 회로이다.
순차회로는 위 두 입력을 모두 사용하는 로직이기만 하면 되기 때문에,
굳이 순차회로에는 어떤 것이 있는지는 따지지는 않는다.
(그냥 과거 입력과 현재 입력 모두 있는 로직이 다 순차회로이므로)
다만, 과거 입력을 사용하기 위해서는 데이터를 저장하는 장치가 필요하다.
저장을 하지 않으면 그냥 지나가버리기 때문이다.
따라서 하드웨어 입력을 저장하는 모듈에 대해 알아볼 건데,
그중에서 flip-flop에 대해 알아본다.
flip-flop에서 데이터를 언제 저장할 것인지를 알려주는
중요한 신호가 있는데, 이것이 클럭 (clock)이다.
컴퓨터에서는 거의 모든 장치에 순차회로가 내장되어 있고
거의 모든 순차회로에 클럭이 사용된다.
대부분 클럭 신호에 동기화되어 사용된다.
클럭
클럭은 모든 전자기기에 입력으로 들어오고
클럭에 맞추어 동작하도록 설계된다.
클럭 신호는 위와 같은 귀여운 오실레이터라는 장치에서 발생한다.
오실레이터는 0과 1을 번갈아 일정 주기마다 반복적으로 출력하는 장치다.
이때 0과 1은 물리적으로 0V와 부품에 따라 1V, 3.3V, 5V일 수 있다.
오실레이터 (oscillator)에 써져 있는 16,000은
클럭의 주파수가 16,000 MHz라는 뜻이고,
이것은 1초 안에 1천6백만 개의 클럭 사이클을 발생시킨다는 것이다.
이제 클럭에 대해 알아봤으니 flip-flop에 대해 알아보자.
Flip-flop (FF)
앞서 얘기했다시피 데이터를 저장하기 위한 용도로 사용되는 모듈이다.
왼쪽은 D flip-flop의 그림이다.
D로 저장할 데이터가 들어가고,
그 아래 삼각형 모양 입력에는 클럭 신호가 들어간다.
오른쪽은 클럭 신호의 모습이다.
0과 1이 번갈아서 출력되는 것을 볼 수 있다.
이때 0에서 1로 변할 때 신호가 상승하는 구간을 "rising edge"라고 하고,
1에서 0으로 변할 때 신호가 떨어지는 구간은 "falling edge"라고 한다.
flip-flop은 클럭과 저장할 데이터를 D로 입력받으면서
클럭에서 rising edge가 일어날 때 D를 저장하고,
Q 출력으로 즉시 내보낸다.
(여기서 저장한다는 개념이 Q로 출력한다는 것이다.)
t1, t2, t3가 클럭의 rising edge이고,
이때만 입력 데이터 (D)를 Q로 출력한다.
Q에서 실선으로 표시한 것은 실제 rising edge의 시간이고,
실제로 D를 Q로 내보내기까지 불가피하게 하드웨어의 지연(delay)이 있으므로
데이터가 Q로 출력되는 부분은 delay를 고려하여
rising edge의 이후에 그렸다.
t3에서는 D에 입력된 것이 없어(=0) Q도 출력이 없다 (=0).
Setup time, hold time
하지만 만약에 D가 rising edge가 될 때 갑자기 변한다면 Q가 어떻게 출력될까?
아마 정상적으로 출력되지 않을 것이다.
D가 저장하기 전에 바뀌거나, 저장한 후에 바뀌어야지
저장하려는 순간 바뀌어버리면 정상적으로 동작하지 않는다.
따라서 저장할 때만큼은 입력 D가 변하지 않도록 고정시켜주어야 한다.
그림에 clock의 rising edge 전후로 t_setup과 t_hold가 보인다.
setup time: rising edge 전에 값이 안정되어야 할 최소 시간
hold time: rising edge 후에 값이 유지되어야 할 최소 시간
이때는 D가 변하지 않도록 값을 고정시켜 준다.
이 시간 동안에 D가 Q로 저장 (출력)되며,
setup time과 hold time이 끝나면 이후에 또 D가 바뀔 수 있다.
Enabled flip-flop
Enabled flip-flop은 D와 Q, clock 이외에도 EN 또는 CE (clock enable) 입력이 있다.
쉽게 말해서, enable = 1일 때만 동작하고,
enable = 0일 때는 먹통 된 것처럼 아무것도 안 한다.
D가 첫 번째로 솟을 때 E는 바닥났다.
따라서 Q도 출력이 안 된다.
하지만 E = 1일 때 보면 D가 Q로 나오는 것을 볼 수 있다.
(실제로는 delay가 있지만 그림에서는 무시했다.)
Enable = 1이어도 rising edge에서만 저장이 된다.
Settable & Resettable flip-flop
Set와 Reset 입력이 있는 flip-flop이다.
Set = 1이면 Q = 1이 되고,
Reset = 1이면 Q = 0이 된다.
Set와 Reset 기능이 있는 flip-flop의 용도는 Q의 초기값 설정을 위한 것이다.
예를 들어, 실행할 명령어의 위치를 가리키는 PC 레지스터는
이러한 초기값 설정이 필요하다.
컴퓨터를 켤 때 PC 레지스터는 CPU가 읽어야 하는 첫 명령어의 위치를 가리켜야 하는데,
켤 때마다 첫 명령어의 위치를 가리키게 set 해야 한다.
x86의 경우 IP (=PC)의 시작 위치는 0xFFFF_FFF0,
Arm은 0x0000_0000,
RISC-V는 implementation defined (제조사에서 임의로 지정 가능)
이러한 set 기능이 있으면 위와 같이 된다.
Set = 1이면 Q = 1, Reset = 1이면 Q = 0
Settable & Resettable flip-flop도 두 가지로 나뉘는데,
synchronous와 asynchronous이다.
Synchronous는 이름에서 유추 가능하듯,
클럭에 동기 되어, 즉 클럭의 rising-edge에서만 set 또는 reset이 가능하고,
Asynchronous는 클럭에 동기 되지 않고,
클럭과는 관계없이 아무 때나 set 또는 reset을 할 수 있다.
정리하자면,
순차회로는 저장된 입력과 현재 입력을 사용하고,
저장된 데이터를 위해서는 저장할 수 있는 모듈이 있어야 한다.
저장하는 모듈이 flip-flop이고,
Clock에 동기화가 되어 동작을 한다.
특히 Clock의 rising edge에서 flip-flop이 저장되고,
Enable = 1일 때만 동작하는 Enabled flip-flop와
Set = 1일 때 Q = 1, Reset = 1일 때 Q = 0인 Settable & Resettable flip-flop이 있다.
다음 글에서는...
... 레지스터 파일에 대해 알아본다
이해 안 되는 내용이나 피드백은 댓글로 남겨주세요!
* 글을 작성할 때 고려대학교 서태원 교수님의 저서
<원리부터 설계까지 컴퓨터구조 - RISC-V 중심으로>를 참고했습니다. *
'Hardware' 카테고리의 다른 글
메모리 계층 구조와 캐시 & 레지스터에 대하여 – 하드웨어 시리즈 #4 (0) | 2023.02.19 |
---|---|
아니 그래서 조합회로엔 뭐뭐 있는데? – 하드웨어 시리즈 #2 (0) | 2023.02.13 |
조합회로는 뭐고 순차회로는 대체 뭘까 – 하드웨어 시리즈 #1 (0) | 2023.02.12 |