728x90
Instruction Code

Instruction Code

  • 프로그램 : 명령어의 집합
  • 컴퓨터 동작: 레지스터 내의 데이터를 처리하는 microoperation들의 과정
  • 명령어
    • 컴퓨터를 위한 microoperation의 조합
    • 명령어는 데이터에 메모리로 저장
    • Op Code(Operation Code)
      • Add, Sub와 같은 명령어를 정의하는 bit 모음
      • n개의 비트는 2n2^n개의 명령어를 할당
      • 명령어 = opcode + 주소
  • 메모리
    • 한 파트에는 명령어, 다른 파트에는 data (Harvard Architecture)
    • ex. 4096 word memory > 주소 할당을 위해 최소 12bit 필요
      • word당 16 bit 할당 > op code에 4 bit 할당 가능
    • binary operand : 명령어가 사용하는 데아터
    • Program register / Accumulator : 명령어 결과를 임시 저장
      • Ex. AC에 100이 저장 / 명령어가 Opcode(Add) + Address에 100이 저장되어 있을 경우 AC에는 200이 저장됨
  • 명령어 주소
    • 명령어 주소 format : I + OpCode + Address
    • I : Indirect mode bit
    • direct address : 주소 필드가 명령어 주소를 가리킴
    • indirect address : 주소 필드가 명령어 주소가 저장된 주소를 가리킴
      • 장점 : Address 주소의 범위를 확장시켜 더 큰 메모리에 접근 가능
      • 단점 : 주소 접근이 2번 이루어지므로 direct 대비 느림

Computer Register

  • 작성된 명령어는 연속된 주소에 저장 후 특정 시점에 실행
  • 제어 유닛이 시작 주소의 명령을 읽어들임 > 실행 후 다음 주소를 계산 (카운터 레지스터가 필요)
  • 컴퓨터 Control Logic의 레지스터
    • Accumulator(AC) : 명령어의 Source(출발지) 이자 Destination(결과 저장)
    • Instruction Register(IR) : 메모리에서 읽어들인 명령어 저장
    • Data Register(DR) : 메모리에서 읽어들인 데이터 저장
    • Temporary Register(TR) : 임시 저장소
      • AC, DR, TR, IR은 메모리 word와 크기 동일
    • Program Counter(PC) : 다음에 실행되는 명령어의 주소 저장
    • AR(Address Register) : 실제 실행 중인 명령어의 메모리 주소를 저장 - 다음 명령어 실행 시 PC의 값이 AR로 전달
      • PC, AR은 메모리의 Address Field와 동일한 크기
    • Input/Output Register(INPR / OUTR) : 외부 장치 데이터를 주고받기 위한 통로

Computer Instruction

  • 컴퓨터 명령어는 크게 3가지로 분류
    • memory reference
    • register reference
    • I/O instruction
  • memory reference
    • I-field를 기준으로 direct(0), indirect(1) 동작으로 나뉨
    • AND, ADD, Load/LDA, Store/STA, Branch/BUN, branch&save/BSA, Increment/ISZ 등 메모리에 접근하는 명령어
  • register reference
    • MSB 4자리가 0111로 시작하는 명령어
    • AC, E 레지스터를 clear, complement, circulate, Increment, branch 등
  • I/O instruction
    • 인터럽트, AC 입/출력 등

  • Control Logic Gate
    • IR 명령어(D0~D7)은 Opcode가 디코더를 거쳐 Control Logic Gate에 동작 명령어를 지정
    • IR Address의 경우 memory reference 명령어의 동작을 위해 전달
    • T0~T15에는 Sequence Counter(SC)와 디코더를 통해 클록당 값을 증가시키면서 순서대로 신호 할당
      • T15 이후에는 CLR신호를 통해 다시 T0부터 동작
    • HALT(정지) 명령어 이전까지 계속해서 동작
  • fetch&decode
    • 각 클록(T)마다 SC는 1씩 증가
    • T0 : AR < PC, SC < SC+1
      • PC값을 AR에 Load해야 함
      • T0 신호는 BUS의 2(010)와, AR LD에 연결
    • T1 : IR < M[AR], PC < PC+1, SC < SC+1
      • 메모리 데이터를 IR에 LD해야 하므로 BUS 7(111)에 연결
      • IR에 연결해야 하므로 IR LD에 연결
      • PC를 증가시켜야 하므로 PC INR에 연결
    • T2 : D < Decode IR(12-14), AR < IR(0-11), I < I(15), SC < SC+1
      • decode값은 combinational logic이므로 신호 연결이 필요 없음
      • IR값을 AR에 연결해야 하므로 BUS 5(101)과 AR LD에 연결
      • IR(15)에 I LD 연결
  • PC를 1 증가시키는 이유
    • 보통 특정 명령어 수행 후 그 다음 명령어는 연속된 주소에 할당
    • PC값을 AR에 할당 후 다음 동작과 함께 PC를 증가시켜 clock 절약 가능
  • register reference 명령어
    • D7I'으로 동작(D7=1, I=0)
    • 1클록마다 데이터를 읽어온다고 가정,
    • T0 : AR < PC
    • T1 : IR < M[AR], PC < PC+1
    • T2 : IR decode, 데이터 전달
    • D7I'T3B11
      • IR 내용이 0111 / 1000 / 0000 / 0000
      • 결과 I + Opcode가 7(0111)인 경우 T3이 동작
      • B11만 1이므로 7xxx Clear AC(CLA)로 동작
    • register reference 명령어의 동작 symbol을 r로 정의
      • r = D7IT3D7I'T3
      • B값(address bit 위치)에 따라 다른 명령어 수행
  • memory reference 명령어
    • BUN(Branch Unconditionally) : 지정 주소로 복귀
    • BSA(Branch and Save Return Address)
      • PC+1에는 BSA 다음에 실행할 명령 저장
      • BSA 주소부터 시작하여 subroutine 동작
      • subroutine 마지막에는 1 BUN (BSA 주소) 저장 : 완료 후 PC+1 주소로 복귀하여 다음 명령 수행

I/O, Interrrupt

  • 입/출력 기기와 컴퓨터 사이에는 인터페이스가 존재
    • 컴퓨터에서는 입/출력 레지스터(INP/OUTR)까지만 데이터 전송
    • 인터페이스가 기기와 컴퓨터 사이의 데이터 통신 조절
    • FGI/O : 데이터의 입/출력 Flag
      • FGI = 0 : 컴퓨터 사용중 / FGI = 1 : 새로운 입력 가능
  • I/O 명령어
    • INP / OUT : 입/출력
    • SKI / SKO : FGI/O 존재 시 명령어 생략(PC + 1)
    • ION / IOF : 인터럽트 flag(R) on/off
  • 인터럽트
    • 현재 동작하던 명령을 별도로 저장 후, Interrupt Cycle 수행
    • FGI/O = 1이 되면 R flag = 1로 set
    • 일반 명령어 Cycle은 R'T0, R'T1, ...의 양식으로 표현
    • 처음 명령어를 Load하는 구간(T0~T2)에는 R이 set되지 않음
      • T0'T1'T2'(IEN)(FGI+FGO) 일 때 R < 1
      • FGI/FGO가 동시에 high일 경우의 처리 순서는 ISR(인터럽트 서비스 루틴)에 따라 결정
    • 인터럽트 Cycle은 RT0 - RT1 - RT2 - ...
      • RT0 : AR < 0, TR < PC
      • RT1 : M < TR, PC < 0
      • RT2 : PC < PC + 1, IEN < 0, R < 0, SC < 0
        • IEN은 추후에 다시 1로 설정됨

Boolean Example

  • 각 명령어의 Boolean 표현은 해당 동작을 하는 모든 operation의 합으로 표현
    • ex. load AR to BUS : < AR로 표현되는 모든 식의 합
    • = D4T4+D5T5
  • ALU Load
    • AC에 Load되는 모든 데이터는 ALU를 거쳐 들어옴
    • +1(Increment), CLR는 AC에 직접 처리됨
728x90

+ Recent posts