728x90
Stack Organization
  • CPU의 구성 요소
    • 레지스터 : 중간 데이터 저장
      • general register : 범용으로 사용하는 레지스터
      • special register : 특정 목적을 갖는 레지스터
    • ALU : Microoperation 수행
    • 컨트롤 유닛 : 동작 관리
  • general register organization
    • R1 = R2 + R3
    • 연산 시 사용하는 레지스터를 각 selector가 적절히 선택

Stack Organization

  • 스택 : 정보가 '쌓이는' 자료구조
    • 가장 마지막에 들어온 정보가 가장 먼저 출력됨
    • LIFO, Last In First Out
    • 스택 포인터는 스택의 가장 위(최근 들어온) 아이템을 가리킴
  • push : Stack pointer를 증가(아이템 입력)
  • pop : Stack pointer를 감소(아이템 출력)
  • register stack
    • FULL, EMPTY, SP, DR로 구성된 스택
    • FULL, EMPTY : 스택이 꽉 찬(빈) 여부를 저장
    • SP : Stack Pointer
    • DR : 스택에 들어가거나 스택에서 나온 데이터를 저장
    • EMPTY=1일때 POP하거나, FULL=1일 때 PUSH 시 error
      • 스택의 UPPER/LOWER limit을 초과 시 오버/언더플로우 발생
    • POP시 SP를 1 감소, PUSH시 1 증가
  • stack의 동작 예 : 후위 표기법
    • 후위 표기법 : 연산자가 맨 뒤로 오게 됨
    • 기존 식 : (4+5*6) / (4-2)
    • 후위 표기 : 4 5 6 * + 4 2 - /
      • 연산자는 스택 내의 숫자 2개를 pop한 후 연산 결과를 다시 push함

Instruction format

  • CPU 명령어의 종류
    • 레지스터 하나만을 사용
      • ADD X : AC < AC + M[EA]
    • 다수 레지스터(general register) 사용
      • ADD R1, R2, R3 : R1 < R2 + R3
      • ADD R1, R2 : R1 < R1 + R2
      • ADD R1, EA : R1 < R1 + M[EA]
    • 주소 사용 없음(stack organization)
      • PUSH X

Addressing mode

  • 명령어의 주소 필드를 해석하는 방법
  • addressing mode의 목적
    • 프로그램의 다양성
    • 명령어의 address field 크기를 줄이기 위해
  • address field가 필요 없는 mode
    • implied mode : Accumulator를 사용하는 연산 명령어
    • immediate mode : 명령어 필드가 주소 필드와 동일한 명령어
  • Register mode : 주소 필드가 프로세서 주소를 가리키는 경우
    • register mode : 명령어가 레지스터 내에 있는 경우
    • register indirect mode : 주소 필드에 내용이 저장된 레지스터 주소를 나타내는 경우
    • autoincrement/autodecrement mode : register indirect와 동일하나 메모리 접속 이후 register이 증가/감소 (table 접근 시 사용)
  • relative addressing mode
    • effective address가 PC 내용 + 명령어의 주소 필드, branch 명령에 주로 사용
    • indexed addressing mode : effective address가 index register + 주소 필드 , table 접근 시 사용
    • base register addressing mode : effective address가 base register + 주소 필드, multiprogramming에 사용

Data Transfer and Manipulation

  • 명령어의 종류
  • Data transfer : 데이터를 변경 없이 이동시키는것
    • memory - register
    • register - I/O
    • register - register
  • Data Manipulation : 산술, 논리, shift 연산
  • Program Control : branch 등 컴퓨터에 의해 프로그램 진행이 바뀌는 것
728x90

+ Recent posts