본문 바로가기
정보통신기술

이진법과 플립플롭(Flip-Flop)

by SpringZephyr 2023. 4. 29.
반응형

개요

인간은 0에서 9까지의 숫자를 이용하여 수를 표현합니다. 10개가 되었을 때 한 자릿수가 증가하는 10진법을 사용하고 있습니다. 그러나 컴퓨터는 0과 1, 두 가지의 숫자를 이용합니다. 2개가 되는 순간 한 자리가 증가하는 2진법을 사용합니다. 근데 왜 컴퓨터는 이진수를 사용하고 있는 것일까요? 인간과 같이 10진법을 사용하면 안 될까요? 여기서는 컴퓨터가 왜 이진법을 사용하는지에 대해서 살펴보려고 합니다.

컴퓨터와 이진법

이진법은 2개가 되는 순간 한 자리수가 증가합니다. 따라서 이진법에서 11을 10진법으로 계산하면 3이 됩니다.  2가 하나, 1이 하나이기 때문이죠. 100은 10진법에서는 4가 됩니다. 그러다 보니 10진법보다 2진법은 숫자열의 길이보다 많이 길어지게 됩니다. 그런데 컴퓨터에서는 왜 이진법을 사용하고 있을까요?

오랫동안 엔지니어들은 2진법을 넘어서는 컴퓨터 반도체를 개발하는 연구를 해왔습니다. 이를 '다진법 반도체'라고 하는데 기존 2진법 회로 대신 3진법 이상의 연산방식을 사용하는 반도체를 개발하는 것입니다. 다진법 반도체는 이진법 반도체보다 훨씬 많은 양의 연산이 가능하고, 계산회수도 줄일 수 있어 반도체 발열이나 전력소모 문제도 크게 개선할 수 있습니다. 따라서 다진법 기술이 개발되면 초저전력 고성능 컴퓨터를 개발할 수 있습니다. 그러나 아직까지 2진법 반도체를 넘어서는 기술은 나오지 않고 않습니다. 따라서 모든 컴퓨터는 2진법 반도체 기술을 기반으로 개발되어 있습니다. 그리고 2진법 데이터를 처리하기 위한 컴퓨터 회로가 설계되었습니다. 이러한 2진법 기반의 컴퓨터 회로의 기초를 이루는 것이 바로 플립플롭입니다.

플립플롭을 알아보기

플립플롭은 컴퓨터에서 데이터를 저장해야하는데 0 또는 1의 데이터를 저장하는 하나의 회로를 의미합니다. 즉 플립플롭은 0 또는 1만을 저장할 수 있습니다. 그러다 보니 컴퓨터는 2진법을 사용할 수밖에 없습니다. 플립플롭은 입력 신호에 의해 상태 변환을 하기 전까지는 이전의 데이터값, 즉 0 또는 1을 유지합니다. 회로 설계에서 플립플롭을 사용하는 주요 목적은 필요할 때까지 이진수 값을 유지한 다음 회로에서 필요할 때 해당 값을 해제할 수 있는 메모리 요소를 만드는 것입니다. 플립플롭은 레지스터에 데이터를 저장하고, 한 레지스터에서 다른 레지스터로 데이터를 이동하고, 카운터 및 기타 순차 회로를 만드는 데 사용할 수 있습니다. 플립프롭의 종류에는 다음의 것이 있습니다.

  • SR(Set-Reset) Flip-Flop: S-R Flip-Flop이라고도 불리며, 2개의 입력과 2개의 출력을 가지고 있습니다. S 입력에 High 신호가 입력되면 Q 출력은 High 상태가 되고, R 입력에 High 신호가 입력되면 Q 출력은 Low 상태가 됩니다.
  • D (Delay) Flip-Flop: 1개의 입력과 2개의 출력을 가지고 있습니다. 하나의 입력 단자가 있고 클록 펄스가 인가되었을 때 입력 신호가 1이면 1로, 0이면 0으로 자리잡습니다. 즉, D 입력에 High 신호가 입력되면 Q 출력은 High 상태가 되고, D 입력에 Low 신호가 입력되면 Q 출력은 Low 상태가 됩니다.
  • J-K(Jack Kilby) Flip-Flop: 2개의 입력과 2개의 출력을 가지고 있습니다. J 입력과 K 입력 중 하나에 High 신호가 입력되면 Q 출력이 반전됩니다.
  • T (Toggle) Flip-Flop: 1개의 입력과 2개의 출력을 가지고 있습니다. T 입력에 High 신호가 입력되면 Q 출력이 반전됩니다.

플립플롭은 휘발성 구조를 가집니다. 즉 데이터는 전원이 있을때만 보관, 유지되며 전원이 차단되면 데이터는 사라지게 됩니다. 처음 전원이 인가되면 입력이 인가되지 않은 상태에서 Q의 출력 상태가 결정됩니다. 이것은 되먹임 회로에서 출력과 입력 간의 레이스 조건에 의해 임의로 결정됩니다. 회로 설계자 입장에서는 초기 Q의 상태를 예측할 수가 없습니다. 따라서 초기의 상태를 결정하기 위해 입력 신호 외에 별도의 비동기 신호인 SET(Q을 H로)과 RESET(Q을 L로) 신호를 추가하는 경우도 있습니다. 이 경우 플립플롭은 비동기로 Q의 신호가 결정되고 이 신호가 액티브되면 클럭과 입력은 무시되는 최우선 신호입니다.
디지털 회로에서 각종 카운터나 상태제어 등에 필요한 요소입니다. 이전의 상태를 계속 유지하는 상황이 되면 플립플럽을 사용합니다. 플립플롭은 클럭 신호가 필요하며, 클럭의 순간적인 상태변화 시점에서 입력이 출력에 반영됩니다. 여러 개의 플립플롭으로 회로를 구성할 경우, 각 플립플롭의 클럭입력을 같은 클럭신호를 사용하여 같은 시간에 변화하는 것을 동기 회로라 합니다. 경우에 따라 각 플립플롭의 클럭이 따로 입력하는 비동기 회로도 있고, 공통 클럭뿐만 아니라 다른 출력을 클럭으로 사용하기도 합니다. 

플립플롭은 내부가 논리 회로로 구성되어 있기 때문에 논리 회로에 준하는 빠른 동작속도를 얻을 수 있습니다. 예를 들어 컴퓨터의 기억장치를 구성하는 회로에서 주로 사용되는 방식인 DRAM의 기억 소자와 비교했을때 기억내용의 변경에서 캐패시터의 충전/방전을 기다릴 필요가 없고 기억내용의 읽기에서 내용에 영향을 주지 않아서 비파괴 읽기이며 정기적인 리프레시 동작도 필요하지 않습니다. 반면에 1 비트의 회로가 복잡하기 때문에 대규모가 되면 1 비트 당 비용이 비싸지는 경향이 있습니다. 이러한 성질 때문에 플립플롭은 CPU 캐시나 중앙 처리 장치의 레지스터 같은 비교적 소용량으로 고속성이 요구되는 곳에 사용하고 주기억에는 주로 디램을 이용하는 것처럼 기억 계층을 구성해서 다른 회로방식의 기억장치와 조합한 형태로 사용되는 것이 많습니다. < 끝 >

반응형

댓글