이론/컴퓨터구조
연산의 종류
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: 다음 주소로 가라라는 레이블에 해당
- 검사조건 생성❓명시적일 때만 상태레지스터 쓰는건가,,? https://brorica.tistory.com/37
- 묵시적 조건: 이전에 수행한 산술/논리 연산 결과를 조건으로 사용,
그 조건을 활용하기 위한 명령어는 x, 일반적 연산식으로 조건 만듦
- ex)
SUB + BRZ(BRanch on Zero)
if(x == y): goto 114
(x == y)
: 같은지 어케 비교? => 뺀 값이 0이면 같은 값
- ex)
- 명시적 조건: CMP와 같은 명령, ‘이게 내가 사용할 조건이야!’
- ex)
CMP(Compare) + BRN(BRanch on Negative)
if (R1 < R2): goto 210
(R1 < R2)
: R1 - R2 < 0 ⇒ o
- ex)
- 비교 분기 융합 명령
- 명시적과 묵시적 조건은 조건 생성 + 브랜치 사용명령, but 비교 분기 융합 명령은 명령어 하나로 사용 가능
- ex)
BGT(Branch on Grater Than)
if (R1 > R2): goto 220
- 상태레지스터에 조건 결과 저장
- 묵시적 조건: 이전에 수행한 산술/논리 연산 결과를 조건으로 사용,
그 조건을 활용하기 위한 명령어는 x, 일반적 연산식으로 조건 만듦
- 조건 판단
- 상태 레지스터의 결과에 따라 분기 결정
- 상태 레지스터: 조건 결과 값을 저장하는 공간
- 프로그램 상태 워드의 상태비트
- 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