[전자계산기구조] CPU구조(레지스터 & ALU & CU & 버스 & 마이크로 연산)

[전자계산기구조] CPU구조(레지스터 & ALU & CU & 버스 & 마이크로 연산)CPU(Central Processing Unit)

컴퓨터 시스템의 두뇌 역할을 하는 중앙처리장치입니다.
레지스터, 산술논리유닛(ALU), 제어장치(CU), 버스로 구성합니다.


레지스터

CPU내에서 데이터를 기억하는 메모리 장치입니다.
CPU내에서 처리할 명령어나 연산에 사용할 값이나 연산 결과를 일시적(휘발성)으로 기억하는 장치입니다.
메모리 장치중에 가장 빠릅니다.
플리플롭과 래치(Latch)를 병렬로 구성합니다.
  • PC(Program Counter) : 다음 번에 실행할 명령어 주소를 기억하는 레지스터
    = 명령 계수기
  • IR(Instruction Register) : 현재 실행 중인 명령을 기억하는 레지스터
    가장 최근에 인출한 명령어를 저장하는 레지스터 = 명령 레지스터
  • AC(Accumulator) : 연산 결과를 임시로 저장하는 레지스터로 누산기라 부름
  • 플래그 레지스터(Flag Register) : 상태를 기억하는 레지스터(오버플로우, 언더플로우, 캐리, 인터럽트 등의 PSW를 기억)
    문제가 발생이 됐다 => 1 , 문제가 발생되지 않았다 => 0
    • PSW(Program Status Word) : 시스템 내부의 순간순간의 상태를 기록하고 있는 정보
  • MAR(Memory Address Register) : 데이터의 주소를 기억하는 레지스터
  • MBR(Memory Buffer Register) : 데이터를 임시로 기억하는 레지스터로 데이터를 처리하기 위해 반드시 거쳐감
  • BR(Base Register) : 명령의 시작 주소를 기억하는 레지스터
  • MSR(Major Status Register) : CPU의 주 상태를 저장하는 레지스터 = PSWR = 플래그 레지스터
    • S(Sign) : 0(양수) vs 1(음수)
    • Z : 0(값 x) vs 1(값이 발생)
    • V(오버플로우 발생했느냐)
  • 베이스 레지스터 : 명령이 시작되는 최초의 번지를 기억하는 레지스터
  • 인덱스 레지스터 : 프로그래머가 내용을 변경할 수 있으며 주소의 변경, 서브루틴 연결 및 반복 연산의 횟수에 사용
    • ex) A의 자료를 B로 옮길 때 연속적으로 옮기려면 A, B주소를 모두 알아야 함
  • Data(데이터) 레지스터 : 연산에 사용할 데이터를 기억
  • Shift(시프트) 레지스터 : 데이터를 저장하거나 데이터를 옆으로 이동할 때 사용되는 회로
    • 직력 입력, 병렬 출력  + 병렬 입력, 직렬 출력 형태를 포함하여 직렬과 병렬의 입출력 조합을 가지고 있다.
    • 저장된 값을 왼쪽 or 오른쪽으로 1bit씩 자리를 이동시키는 레지스터이며 2배 길이 레지스터라고도 한다.
  • General(범용) 레지스터 : CPU내에 있으며 연산처리, 연산결과, 복귀주소 등 작은 데이터를 기억하는 레지스터 = GPR

산술논리유닛(ALU, Arithmetic and Logic Unit)

산술과 논리 연산을 하는 장치입니다.
연산장치라고 부릅니다.
가산기, 누산기, 보수기, 오버플로우 검출기, 쉬프트 레지스터, 데이터 레지스터로 구성합니다.


제어장치(CU, Control Unit)

장치들에게 동작을 명령하고 제어하는 장치입니다.
명령어를 해독하여 처리할 수 있게 제어신호를 전송하여 수행하게 명령하는 역할을 담당

  • 프로그램 계수기(PC : Program Counter or Location Counter)
    • 다음 수행할 명령어의 주소(위치)값을 기억하고 있는 레지스터
  • 메모리 접근 레지스터(MAR : Memory Address Register)
    • 현재 접근하고자 하는 주소 값을 기억하고 있는 레지스터
  • 기억 레지스터(MBR : Memory Buffer Register)
    • 주기억장치의 명령어나 데이터를 임시로 기억하고 있는 레지스터
  • 명령 레지스터(IR : Instruction Register)
    • 현재 실행중인 명령어를 기억하고 있는 레지스터
  • 명령 해독기(ID : Instruction Decoder)
    • 명령 레지스터에서 호출된 명령을 해독하여 해독된 명령을 수행시키고 제어 신호를 만들어 내는 장치


버스(Bus)

장치와 장치사이에 정보를 주고받기 위한 전송선입니다.


  • 주소 버스(Address Bus)
    • CPU에서 주기억장치의 특정 위치를 가리키기 위한 단방향 회선이다.
    • 주소 버스 회선 수 : 메모리 용량이 256KB이라면 256=2^8, 1K는 2^10이므로 2^8*2^10 = 2^18이다.
      따라서 주소 버스의 회선 수는 18개가 필요하다.
      즉 18bit 주소 버스가 된다.
    • 주소 버스 회선 수의 이해
      • 주기억장치의 위치가 4개이면 주소 버스의 회선 수는 2비트가 된다.
      • 주기억장치의 위치가 8개이면 주소 버스의 회선 수는 3비트가 된다.
      • 주기억장치의 위치가 256개면 주소 버스의 회선 수는 8비트가 된다.
  • 데이터 버스(Data Bus)
    • CPU와 메모리 사이에서 데이터를 주고받기 위한 양방향 회선이다.
    • 데이터 버스 회선 수 : 8비트 컴퓨터, 32비트 컴퓨터가 있다면 8, 32비트는 데이터 버스의 회선 수이며 컴퓨터의 성능을 판단하는 기준이 된다.
    • 데이터 버스 회선 수의 이해
      • 주기억장치의 데이터를 가져오기 위한 그릇이다.
      • 주기억장치에 있는 데이터를 한 번에 가져오는 크기이다.
      • 한 번에 가져올 수 있는 데이터의 크기를 워드(Word) 크기라고 한다.
      • 데이터의 크기가 64비트이면 데이터 버스 회선 수도 64비트이다.
  • 제어 버스(Control Bus)
    • CPU나 채널에서 입출력 장치에 동작을 지시하기 위하여 제어신호를 전달하는 단방향 회선이다.

주소, 자료, 제어 정보를 보내는 버스가 있습니다.
CPU와 메모리 내에 구성하는 버스를 내부 버스라 부르고 주변 입출력 장치에 구성하는 버스를 외부버스라고 부릅니다.



마이크로 연산

CPU가 무엇을 하고 있는지를 나타내는 메이저 상태(Major State)와 시간에 정보를 나타내는 시간 상태(Time State)가 있다.

메이저 상태에는

  • 인출(Fetch) 단계
    • 생략 불가
  • 간접(Indirect) 단계
    • 생략 될 수 있고, 2,3번이상 될수도 있고...
  • 실행(Execute) 단계
    • 생략 불가
  • 인터럽트(Interrupt) 단계
    • 생략 가능.. 항상 마지막
로 구분된다.




출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?