2.1.1. 연산 장치 구조 분석

1. 중앙처리장치(CPU) 내 주요 레지스터 구조

레지스터는 CPU 내부에서 데이터를 아주 빠르게 일시적으로 저장하는 공간입니다. 각 레지스터의 풀네임과 역할을 매칭하는 것이 시험의 핵심입니다.

  • PC (Program Counter, 프로그램 카운터): 다음번에 실행할 명령어의 주소를 보관합니다. 실행 시마다 자동으로 증가합니다.
  • MAR (Memory Address Register, 메모리 주소 레지스터): CPU가 읽거나 쓰려는 메모리의 주소를 일시적으로 보관합니다.
  • MBR (Memory Buffer Register, 메모리 버퍼 레지스터): 메모리에서 읽어온 데이터나 메모리에 쓰려는 데이터를 일시적으로 보관합니다. (MDR이라고도 함)
  • IR (Instruction Register, 명령어 레지스터): 메모리에서 가져온 현재 실행 중인 명령어 자체를 보관합니다.
  • AC (Accumulator, 누산기): ALU의 연산 결과나 데이터를 일시적으로 저장하는 가장 대표적인 레지스터입니다.
  • ID (Instruction Decoder, 명령어 해독기): IR에 있는 명령어를 해석하여 각 장치에 제어 신호를 보냅니다.

JTAG

칩 내부의 회로를 테스트하거나, 완성된 보드에서 CPU의 상태를 디버깅하고 펌웨어를 구울 때 사용하는 경계 주사(Boundary Scan) 표준 인터페이스.

핀 이름 풀네임 역할 설명
TDI Test Data In 테스트 데이터를 칩 안으로 밀어넣는 입력
TDO Test Data Out 테스트 결과를 칩 밖으로 보내는 출력
TCK Test Clock 테스트의 동기화를 맞추기 위한 클록 신호
TMS Test Mode Select 제어 상태(TAP Controller)를 결정하는 모드 선택 신호
TRST Test Reset (선택 사항) 테스트 로직을 초기화하는 리셋 신호

 


2. 산술논리연산장치(ALU)의 구조와 동작

ALU는 실제로 계산을 수행하는 장치입니다. 크게 산술 연산과 논리 연산을 담당합니다.

  • 산술 연산: 더하기($+$), 빼기($-$), 곱하기($\times$), 나누기($\div$) 등을 수행합니다. 내부적으로는 **가산기(Adder)**와 **보수기(Complementer)**를 사용하여 모든 사칙연산을 처리합니다.
  • 논리 연산: AND, OR, NOT, XOR, Shift 등의 논리적인 판단을 수행합니다.
  • 구성 요소:
    • 가산기(Adder): 두 수의 합을 구합니다.
    • 보수기(Complementer): 뺄셈을 위해 입력된 값을 보수로 변환합니다.
    • 시프터(Shifter): 비트를 왼쪽이나 오른쪽으로 이동시킵니다.
    • 상태 레지스터(Status Register): 연산 결과의 상태를 플래그로 저장합니다.

3. 상태 레지스터와 플래그(Flag) - ★매우 중요

ALU 연산 결과가 어떤 상태인지를 나타내는 지표입니다. 보기에 섞여 나오기 아주 좋습니다.

플래그 명칭 의미 설명
Carry (C) 올림수
연산 결과 자릿수가 넘어갔을 때 (Carry 발생) 1이 됨
Zero (Z) 0 결과
연산 결과가 정확히 0일 때 1이 됨
Sign (S/N) 부호
결과가 음수(−)이면 1, 양수(+)이면 0이 됨
Overflow (V) 오버플로
허용된 범위를 초과하여 계산 결과가 잘못되었을 때 1이 됨
Interrupt (I) 인터럽트
인터럽트 가능 여부를 표시함

 

 


 

  • 주소는 MAR, 내용은 MBR: 이름에 Address가 들어가면 주소, Buffer가 들어가면 데이터(내용)입니다.
  • 다음은 PC, 현재는 IR: '다음'이라는 단어가 보이면 무조건 PC를 고르세요.
  • 연산의 중심은 AC: 연산 결과가 어디에 남느냐고 물으면 대부분 누산기(AC)가 답입니다.
  • 보수기의 존재 이유: CPU는 뺄셈 장치가 따로 없어서, 보수기를 이용해 덧셈으로 뺄셈을 구현합니다.

 

 

+ Recent posts