본문 바로가기
운영체제

컴퓨터 구조 : 레지스터(Registers) 총정리

by oobw 2023. 10. 20.

컴퓨터는 현대 사회의 필수 도구로 자리 잡았고, 이 중앙 처리 장치(CPU)는 핵심적인 역할을 수행합니다. CPU 내부에는 여러 구성요소가 있으며, 레지스터는 그중 하나입니다. 레지스터는 CPU 내부의 고속 메모리 위치로, 명령의 실행에 필수적입니다. 이 글에서는 레지스터의 정의와 그 유형, 그리고 레지스터의 장점과 단점을 자세히 살펴보겠습니다.

 

컴퓨터 구조에서 레지스터란?

컴퓨터 구조에서 레지스터는 작업과 프로그램을 효율적으로 실행하는 데 사용할 수 있는 빠른 메모리라고 할 수 있습니다. 컴퓨터의 레지스터는 일반적으로 사용되는 값에 대한 액세스를 제공하고 이를 위해 여러 레지스터가 서로 및 컴퓨터 메모리와 적절하게 조정되어 작동하기 때문에 이를 수행할 수 있습니다.

CPU 처리를 위한 데이터의 빠른 복구가 레지스터를 갖는 유일한 이유입니다. 하드 디스크를 사용하면 RAM 명령을 읽는 속도가 다소 빨라지지만 CPU는 여전히 이 속도를 사용할 수 없습니다. 프로세서에는 더 빠른 처리를 위해 미리 수행될 RAM의 데이터에 액세스 할 수 있는 메모리가 있습니다. 레지스터 다음으로 빠른 것은 캐시 메모리인데, 이는 여전히 레지스터보다 느립니다.

일련의 플립플롭과 장벽이 레지스터를 구성합니다. 플립플롭은 이진 데이터를 저장하는 반면, 게이트는 새 데이터가 레지스터에 추가되는 시기와 방법을 관리합니다. 상업적으로 다양한 등록 모델이 제공됩니다. 가장 간단한 레지스터는 외부 게이트가 없고 플립플롭만 있는 레지스터입니다. 이제 레지스터는 레지스터 파일로도 통합됩니다.

명령, 저장 위치 또는 기타 유형의 데이터는 레지스터(예: 비트 시퀀스 또는 개별 문자)에 저장될 수 있습니다. 레지스터는 일부 지침에서 명령의 구성 요소로 언급됩니다. 예를 들어, 지정된 두 레지스터의 내용을 결합한 다음 결과를 특정 레지스터에 저장해야 한다는 명령이 있을 수 있습니다.

레지스터는 명령을 포함할 만큼 충분히 커야 합니다. 예를 들어, 64비트 컴퓨터의 레지스터는 길이가 64비트여야 합니다. 하프 레지스터와 같은 더 작은 레지스터는 때때로 더 짧은 명령을 위해 컴퓨터 시스템에서 사용됩니다. 레지스터에는 번호를 매길 수도 있고 CPU 아키텍처 및 언어 제약 조건에 따라 임의의 제목을 가질 수도 있습니다.

주소 레지스터 또는 변경 레지스터라고도 알려진 여러 인덱스 레지스터는 프로세서에서 자주 발견됩니다. 기본, 인덱스 및 상대 주소(모두 인덱스 레지스터에 보관됨)는 컴퓨터에 있는 모든 개체의 기능 주소를 구성합니다. 추가적인 종류는 시프트 레지스터입니다. 시프트 레지스터의 한쪽 끝에서는 비트가 들어가고 다른 쪽 끝에서는 나옵니다. 데이터는 쌍안정 게이트라고도 하는 플립 플립에 의해 저장되고 처리됩니다.

컴퓨터 구조에서 레지스터 유형

다음은 컴퓨터에서 일반적으로 사용되는 주요 레지스터 유형입니다

  • 누산기 레지스터: Accumulator Register(AC)
  • 주소 레지스터: Address Register(AR)
  • 데이터 레지스터: Data Register(DR)
  • 명령어 레지스터: Instruction Register(IR)
  • 프로그램 카운터: Program Counter(PC)
  • 입력 레지스터: Input Register(IN)
  • 출력 레지스터: Output Register(OR)
  • 임시 레지스터: Temporary Register(TR)

누산기 레지스터: Accumulator Register(AC)

Accumulator Register, 줄여서 AC는 주로 논리 및 산술 연산의 결과를 저장하는 데 사용됩니다. 레지스터는 데이터의 임시 저장 위치로 활용되기도 하며, 대부분의 컴퓨터에서 논리 및 산술 연산의 결과를 저장하는 전용 메모리 위치로 사용됩니다.

주소 레지스터: Address Register(AR)

주소 레지스터(AR)은 CPU가 읽거나 쓰려는 데이터의 메모리 주소를 저장하는 데 사용됩니다. AR은 CPU가 액세스 하려는 메모리 위치를 지정하는 데 사용되며, 때로는 MDR(메모리 데이터 레지스터)와 함께 데이터 전송에 사용됩니다.

데이터 레지스터: Data Register(DR)

데이터 레지스터(DR)은 메모리에서 읽은 데이터나 메모리에 쓸 데이터를 저장하는 데 사용됩니다. DR은 주로 CPU와 메모리 간의 데이터 전송에 활용됩니다.

명령어 레지스터: Instruction Register(IR)

명령어 레지스터(IR)는 현재 실행 중인 명령어를 저장합니다. CPU는 IR을 통해 명령어를 가져와 디코딩하고 실행합니다.

프로그램 카운터: Program Counter(PC)

프로그램 카운터(PC)는 다음에 실행할 명령어의 메모리 주소를 저장합니다. 명령어가 실행될 때마다 자동으로 업데이트되며, 대게는 1씩 증가합니다. PC는 CPU의 명령어 가져오기 및 실행 주기에서 핵심적인 역할을 합니다.

입력 레지스터: Input Register(IN)

입력 레지스터는 외부 장치나 소스, 예를 들면 마우스나 키보드 등에서 CPU로 전달되는 입력을 저장합니다. 주로 I/O(Input/Output) 명령과 함께 사용됩니다.

출력 레지스터: Output Register(OR)

출력 레지스터는 CPU의 출력을 외부 장치, 예를 들면 프린터나 모니터에 전송하기 전에 결과나 데이터를 임시로 저장하는 데 사용됩니다.

임시 레지스터: Temporary Register(TR)

임시 레지스터는 계산의 중간 결과나 일시적인 데이터를 저장하는 데 사용됩니다. 특별한 목적이 없어 범용 레지스터로도 불립니다.

레지스터 기능

컴퓨터 아키텍처의 레지스터는 다음과 같은 몇 가지 주요 기능을 수행합니다.

  • 데이터 저장: 레지스터는 프로그램 실행 중 임시로 데이터나 명령어를 저장하는 용도로 사용됩니다. CPU가 빠르게 액세스 할 수 있도록 짧은 시간 동안 정보를 저장합니다.
  • 데이터 처리: 레지스터는 다양한 논리 및 산술 연산의 결과를 보관합니다. 특히, 누산기 레지스터는 연산 결과를 저장하는 데 사용됩니다.
  • 주소 지정: 레지스터는 메모리 주소를 저장하여 CPU가 특정 데이터나 명령어에 액세스하게 도와줍니다.
  • 데이터 전송: 레지스터는 CPU와 메모리 사이에서 데이터의 전송을 중재합니다.
  • 제어: 일부 레지스터는 현재 실행되는 명령어를 저장하거나 다음 실행될 명령어의 주소를 저장하여 명령어 실행 순서를 제어합니다.

레지스터의 장점

  • 속도: 레지스터는 컴퓨터 아키텍처 내에서 가장 빠른 메모리 형태 중 하나입니다. 주 메모리에 비해 데이터 액세스 속도가 월등히 빠르기 때문에 CPU가 연산을 수행할 때, 빠른 데이터 처리가 요구될 때 특히 중요한 역할을 합니다.
  • 효율성: 레지스터는 CPU 내부에 위치하고 있기 때문에 데이터의 액세스와 저장이 효율적입니다. 이로 인해 CPU는 필요한 정보를 신속하게 얻을 수 있으며, 전체 시스템의 성능 향상에 기여합니다.
  • 제어: 레지스터는 실행되는 프로그램의 제어와 흐름 관리에 중요한 역할을 합니다. 특히, 프로그램 카운터(PC)와 같은 레지스터는 다음에 실행될 명령어의 주소를 지정함으로써 CPU가 어느 명령어를 다음에 처리할지 결정하는 데 도움을 줍니다.

지스터의 단점

  • 제한된 용량: 레지스터는 빠른 액세스 속도를 제공하기 위해 작은 용량을 갖습니다. 이로 인해 한 번에 처리할 수 있는 데이터 양이 제한적이며, 때로는 이런 제한이 성능에 제약을 줄 수 있습니다.
  • 비용: 레지스터는 고속의 메모리 셀로 구성되어 있어 제작 비용이 높습니다. 이는 CPU의 전체 제작 비용에 영향을 미칠 수 있습니다.
  • 복잡성: 레지스터의 추가와 관리는 CPU의 설계 및 구현 과정에서 복잡성을 증가시킵니다. 이는 설계 및 제작 과정에서 추가적인 노력과 시간이 필요하게 만듭니다.

마무리

레지스터는 컴퓨터 아키텍처와 설계에서 분명히 핵심적인 요소입니다. 이것은 프로그램 실행 도중 발생하는 다양한 연산과 명령어 처리에 필요한 중간 정보를 빠르게 액세스 하고 저장하는 데 있어 핵심적인 역할을 수행합니다. 그 덕분에 CPU는 훨씬 빠른 연산 속도로 작동할 수 있습니다.

레지스터의 빠른 액세스 속도, 직접적인 제어 능력 등 다양한 장점 덕분에 현대의 컴퓨터 시스템은 높은 성능을 발휘할 수 있습니다. 그러나 모든 기술적 구성 요소와 마찬가지로 레지스터 역시 완벽하지 않습니다. 그것의 제한된 저장 용량, 상대적으로 높은 제작 비용, 그리고 복잡한 관리와 사용으로 인한 복잡성은 설계와 구현 과정에서 주의 깊게 고려해야 할 요소들입니다.

마지막으로, 레지스터의 중요성은 단순히 CPU 내부에서의 연산에만 국한되지 않습니다. 캐시 메모리 설계, 그래픽 처리 유닛(GPU) 내에서의 연산, 그리고 멀티미디어 데이터 처리 등 여러 현대적인 컴퓨터 응용 분야에서 그 중요한 역할이 확장되고 있음을 기억해야 합니다.