이론/컴퓨터구조

연산의 종류

ohojee 2023. 11. 20. 02:06

컴퓨터의 4대 기능

  • 입력
  • 출력
  • 처리
  • 저장

컴퓨터 연산의 종류

  • 전송 연산
    • CPU내의 레지스터와 메모리 사이의 데이터를 교환하는 연산
    • ex) 가상 컴퓨터의 LDA, STA
  • 처리 연산
    • 산술논리장치를 이용하여 데이터를 조작하는 연산
    • ex) 가상 컴퓨터의 ADD, SUB, CPL, IAC
  • 제어 연산
    • 프로그램의 실행 순서를 제어하는 연산
      • 무조건 분기, 조건 분기, 프로시저 호출, 프로시저 복귀, 인터럽트 등
      • 가상 컴퓨터의 JMP, HLT, CAL, RET, BRZ, BRN
  • 입출력 연산
    • CPU내의 레지스터와 외부 장치 사이의 데이터를 이동하는 연산

분기 명령

체인방식

  • 모든 명령어가 항상 다음 명령어의 위치를 명시 ⇒ 프로그램 카운터가 필요없어짐
  • 초기 컴퓨터에서 사용

분기방식

  • 명령어는 항상 순차적으로 실행된다고 가정 ⇒ 프로그램 카운터 도입 → 프로그램 카운터 이용해 다음 명령어 위치 지정
  • 특정 위치로 실행을 옮김
  • 비순차적이라면 조건분기/무조건분기
    • 무조건분기: pc값만 변경
    • 조건분기: 지정된 조건 만족하면 pc값 ㅂ
      if (x > y) then
      	goto BIGGER
      	// BIGGER: 다음 주소로 가라라는 레이블에 해당
      1. 검사조건 생성
        명시적일 때만 상태레지스터 쓰는건가,,? https://brorica.tistory.com/37
        • 묵시적 조건: 이전에 수행한 산술/논리 연산 결과를 조건으로 사용, 그 조건을 활용하기 위한 명령어는 x, 일반적 연산식으로 조건 만듦
          • ex) SUB + BRZ(BRanch on Zero)
            • if(x == y): goto 114
            • (x == y): 같은지 어케 비교? => 뺀 값이 0이면 같은 값
        • 명시적 조건: CMP와 같은 명령, ‘이게 내가 사용할 조건이야!’
          • ex) CMP(Compare) + BRN(BRanch on Negative)
            • if (R1 < R2): goto 210
            • (R1 < R2) : R1 - R2 < 0 ⇒ o
        • 비교 분기 융합 명령
          • 명시적과 묵시적 조건은 조건 생성 + 브랜치 사용명령, but 비교 분기 융합 명령은 명령어 하나로 사용 가능
          • ex) BGT(Branch on Grater Than)
            • if (R1 > R2): goto 220
        • 상태레지스터에 조건 결과 저장
      1. 조건 판단
        • 상태 레지스터의 결과에 따라 분기 결정
          • 상태 레지스터: 조건 결과 값을 저장하는 공간
          • 프로그램 상태 워드의 상태비트
            • c(carry): 1이면 자리 올림
            • v(overflow)
            • s(sign): 부호 + = 1, - = 0
            • z(zero): zero = 0

프로시저

  • 프로그램 내 중복코드 제거
  • 하나의 단위 문제를 프로시저로 만들면 추상화 가능 ⇒ 그냥 프로시저 호출하면 되니까 문제 단순화
  • 프로그램 가독성 향상
  • 호출하면 원래 돌던 프로그램으로 되돌아와야할 주소 저장공간 필요 ⇒ 스택(시스템스택) 필수

ex)

  • 프로시저 호출 명령) CALL proc
    인출 사이클: IR ← M[PC]
               PC ← PC + Δ  // 이때 pc는 call의 시작주소
    실행 사이클: TOS ← PC
               PC ← proc
  • 프로시저 복귀 명령) RET
    • 스택에서 가장 마지막값 pop
    인출 사이클: IR ← M[PC]
               PC ← PC + Δ 
    실행 사이클: PC ← proc

좋은 명령어 집합 구조(ISA)

명령어 집합 구조

  • 하드웨어와 소프트웨어 사이에서의 인터페이스 역할
  • 명령어 집합 구조가 나쁘면 하드웨어 구성이 복잡해질 수 o
  • 명령어 집합 구조가 나쁘면 소프트웨어 개발이 어려워질 수 o
  • 컴파일러의 결과물은 명령어 집합 구조를 따름
  • 명령어 집합 구조는 컴파일러의 효율적인 코드 생성에 영향

좋은 명령어 집합 구조의 조건

  • 일관성
    • 명령어는 일관된 구조를 가져야 o
    • 일부 명령어만 알면 나머지 명령어의 구조를 예측할 수 있어야 o
  • 직교성
    • 각 요소들은 다른 요소들과 독립적
    • ex) 명령어의 종류에 따라 피연산자의 사용법이 달라지면 x
  • 적절성
    • 명령어들로 컴퓨터의 기능을 모두 사용할 수 있어야 o 부족해도, 더 많아도 x
    • 본질적이지 않거나 기능과 관계없는 부분은 최소화

Uploaded by N2T