Featured image of post 레지스터

레지스터

레지스터부터 시프트 레지스터, 이진 카운터, 메모리 장치까지

본 포스팅은 ‘Mano의 컴퓨터시스템구조’ 교재를 참고했습니다.

레지스터

$n$비트의 레지스터는 $n$비트의 이진 정보를 저장하기 위한 $n$개의 플립플롭과 데이터 처리를 위한 조합 회로로 구성되어 있다.

4비트 레지스터

위 레지스터는 아무런 외부 게이트를 가지지 않고 플립플롭으로만 구성된 가장 단순한 형태의 레지스터이다. 클리어 입력은 그 값이 0이 될 경우, 클럭 동작과 관계 없이 레지스터의 모든 플립플롭 출력을 0으로 만든다.

병렬 로드를 가진 4비트 레지스터

대부분의 디지털 시스템은 지속적으로 클럭 펄스를 제공하는 주 클럭 발생기를 가지고 있다. 따라서 특정 레지스터에 지정된 클럭 펄스만이 영향을 줄 수 있도록 하는 제어 신호가 필요하다. 위 4비트 레지스터는 로드 제어 입력을 가지고 있어 클럭 펄스의 작용 여부를 결정할 수 있다.

로드 입력이 0인 경우는 입력이 차단되고 플립플롭의 D 입력은 자신의 출력에 연결된다. 이와 같은 피드백 연결로 레지스터의 내용은 불변하게 된다.

버퍼 게이트는 클럭 발생기로부터의 전력 소모를 줄이는 역할을 한다.

시프트 레지스터

레지스터에 저장되어 있는 이진 정보를 단방향 혹은 양방향으로 이동시킬 수 있는 것이 시프트 레지스터이다. 시프트 레지스터의 각 플립플롭들은 각각의 입력과 출력이 연쇄적으로 연결되어 있고, 공통의 클럭 펄스가 다음 상태로의 이동을 제어한다.

4비트 시프트 레지스터

위 그림에서 serial input은 시프트 될 경우 가장 왼쪽 플립플롭에 들어갈 값을 결정하며, serial output은 가장 오른쪽 플립플롭의 출력이다.

시프트 레지스터에서 원하지 않는 클럭을 제한함으로써 특정 클럭 펄스에만 시프트가 일어나도록 제어할 수 있다. 위 그림에서는 클럭을 AND게이트의 한 입력에 연결하고, 다른 입력에는 제어 신호를 연결함으로써 구현하였다. 또한 D 입력을 제어하는 추가 회로를 이용하여 구현할 수도 있다.

병렬 로드를 가진 4비트 양방향 시프트 레지스터

병렬 로드를 가진 4비트 양방향 시프트 레지스터의 함수표

시프트 레지스터는 주로 원격지 시스템 사이에 데이터를 전송하고자 할 때 사용한다. 즉 원거리의 두 지점 간에 $n$비트의 전송이 필요할 때 $n$개의 라인을 이용하여 병렬적으로 전송하는 것보다 하나의 라인을 통해 한 비트씩 보내는 것이 더 경제적이다. 송신 측에서는 병렬에서 직렬로 변환을 하여 전송하고, 수신 측에서는 받은 데이터를 다시 병렬로 변환하는 것이다.

이진 카운터

입력 펄스에 따라 미리 정해진 순서대로 상태 변이가 진행되는 레지스터를 카운터라고 한다. 입력 펄스가 클럭 펄스를 사용하거나 외부로부터 얻을 수도 있다. 입력 펄스의 시간 간격은 일정할수도 있고 랜덤할수도 있다.

카운터는 어떤 사건의 발생 횟수를 세거나, 동작 순서를 제어하는 타이밍 신호를 만드는 데 사용된다. 이진수의 순서를 따르는 카운터를 이진 카운터라고 한다. $n$개의 플립플롭을 가진 $n$비트 이진 카운터는 0에서 $(2^n-1)$까지 카운트한다.

4비트 동기 이진 카운터

카운터 회로는 보통 보수화 기능을 가지고 있는 T 플립플롭이나 JK 플립플롭을 이용한다.

병렬 로드와 동기 클리어를 가진 4비트 이진 카운터

병렬 로드와 동기 클리어를 가진 4비트 이진 카운터에 대한 함수표

카운터의 초기값 설정을 위해 병렬 로드 기능을 가진 카운터가 필요하다. 클리어 입력이 1일 대, 모든 플립플롭의 K 입력이 1로 설정되기 때문에 다음 클럭 변이에서 모든 플립플롭 출력이 0으로 클리어된다.

클리어 입력과 로드 입력이 모두 0이고, increment 입력이 1일 때, 정상적인 동작을 수행한다.

메모리 장치

메모리 장치는 정보의 입출력 기능을 가지고 있는 저장요소들의 집합으로서, 입출력에서 하나의 단위로 취급되는 비트의 그룹인 word로 정보를 저장한다. 즉 메모리 워드는 1과 0의 비트 그룹으로 숫자, 명령어, 문자 등의 이진화된 정보를 저장한다.

특히 8비트로 이루어진 비트 그룹을 바이트(byte)라고 하며, 대부분의 컴퓨터 메모리는 8배수 크기의 워드를 채택한다.

메모리 내부 구조는 한 워드를 구성하는 비트 수나 전체 워드 수에 의해 규정된다. 메모리의 각 워드는 0에서부터 $2^k-1$까지의 주소를 가지고 있어 주소 입력(k개의 입력 라인)의 값에 따라 특정 워드가 선택된다. 내부의 디코더가 이런 선택 동작을 수행한다. 따라서 컴퓨터의 메모리가 $2^n$개의 워드인 경우에는 $n$비트의 주소가 필요하다. 보통

RAM

RAM(Random Access Memory)에서는 워드의 물리적인 위치에 관계없이 접근 절차나 접근 시간이 동일하다. 메모리와 외부 세계와의 통신은 데이터 입출력 라인, 주소 라인, 제어 라인을 통해 이루어진다. RAM은 데이터 입력을 위한 쓰기 동작과 데이터 출력을 위한 읽기 동작을 제공하며, 제어 신호에 의해 선택된다.

RAM에 대한 블럭도

위 블럭도에 나타난 RAM은 $n$개의 입력과 출력을 가지고 있고, $k$개의 주소 라인으로 메모리 내의 $2^k$개의 워드 중에서 하나를 선택할 수 있다. 두 개의 제어 입력은 데이터의 전송 방향을 지정한다.

하나의 새로운 워드가 전송되어 메모리에 저장될 때엔 다음과 같은 과정이 필요하다.

  1. 원하는 워드의 이진 주소값을 주소 입력에 넣는다.
  2. 메모리에 저장될 데이터 비트들을 데이터 입력에 넣는다.
  3. 쓰기 입력을 활성화한다.

메모리에 저장된 한 워드를 꺼내오는 데엔 다음과 같은 과정이 필요하다.

  1. 원하는 워드의 이진 주소값을 주소 입력에 넣는다.
  2. 읽기 입력을 활성화한다.

ROM

읽기전용 메모리(Read-Only Memory, ROM)는 데이터가 한 번 저장되면 하드웨어의 수명이 다할 때까지 내용이 변경되지 않는다. ROM은 쓰기 동작이 허용되지 않으며, 한 번 저장된 데이터는 영구적으로 유지된다.

반면, RAM과 같은 다른 메모리는 회로가 동작하는 동안 데이터를 자유롭게 읽고 쓰는 기능이 있지만, 전원이 차단되면 데이터가 사라진다.

ROM에 대한 블럭도

ROM은 내부에 특정 전자적 구조를 통해 데이터를 저장한다. 데이터를 저장하기 위해 ROM 내부에는 프로그램 가능한 전자적 퓨즈(fuse)가 존재한다. 이러한 퓨즈는 특정 패턴을 형성하며, 이를 통해 전원이 끊어지더라도 데이터가 안정적으로 유지된다. ROM은 저장된 데이터를 직접 읽어내는 방식으로 작동하며, 데이터의 주소를 입력받아 고정된 출력값을 제공한다. 따라서 읽기 제어 입력이 필요하지 않아 구조적으로 간단하면서도 신뢰성이 높은 특징을 가진다.

ROM의 저장 방식은 매우 효율적이며, 제어 회로와 디코더의 결합을 통해 작동한다. ROM에 저장된 데이터는 주소 입력값에 따라 즉시 출력값이 결정되기 때문에 빠른 응답 속도를 제공한다. RAM과 달리, ROM은 데이터를 읽는 용도로만 사용되며 추가적인 저장 기능은 필요하지 않다. 이는 ROM이 데이터의 저장뿐 아니라 제어 회로의 설계에도 적합한 이유이다.

컴퓨터 시스템에서 ROM은 주로 고정된 프로그램 저장 용도로 사용된다. 이는 운영체제의 초기 부팅 과정이나 하드웨어와의 상호작용을 위한 기초 제어 코드를 포함한다. 또한, ROM은 제어 회로에서 내부 변수의 상태 변화를 기록하거나 변경되지 않는 상수를 저장하는 데 활용된다. 예를 들어, 전자 기기의 기본 동작을 정의하는 펌웨어는 ROM에 저장되어 장치의 동작을 안정적으로 지원한다.

ROM의 종류

ROM은 정보 저장 방식에 따라 다양한 종류로 나뉜다. 가장 기본적인 형태는 제조 공정 단계에서 데이터를 미리 프로그래밍하는 고정된 프로그램 ROM(Mask ROM)이다. 이 방식은 고객이 요청한 데이터를 기반으로 제조 과정에서 ROM에 고정 데이터를 삽입한다. 대량 생산 시 경제적 효율성을 제공하지만, 동일한 ROM을 소량 주문할 경우 높은 비용이 발생하는 단점이 있다.

프로그래밍 가능한 ROM(PROM)은 초기 상태에서 모든 출력이 1로 설정된 상태에서 시작한다. 사용자는 PROM 프로그래머라는 장비를 이용해 특정 비트를 끊어 데이터를 설정할 수 있다. PROM은 한 번 데이터가 기록되면 수정이 불가능하기 때문에 실험용 데이터 저장에 주로 사용된다.

지울 수 있는 PROM(EPROM)은 한 단계 더 진화한 기술이다. EPROM은 자외선 노출을 통해 데이터를 초기 상태로 복구할 수 있으며, 이를 통해 데이터를 재프로그래밍하는 기능을 제공한다. 이 기술은 제한된 수정 가능성을 제공하지만, 여전히 물리적 절차를 요구한다.

전기적 소거가 가능한 PROM(EEPROM)은 ROM 기술의 최종 진화 형태로, 전기적 신호를 통해 데이터를 수정하거나 삭제할 수 있다. EEPROM은 높은 유연성을 제공하며, 현대의 컴퓨터와 전자 장치에서 자주 사용된다. 이는 소규모 데이터를 반복적으로 갱신해야 하는 환경에서 매우 유용하다.