Program control instruction
: 어느 위치의 명령어를 수행하게 할 것인지를 제어하는 명령어이다. 즉, 프로그램의 흐름을 변경하기 위해 프로그램 카운터(Program Counter, PC) 값을 수정하는 명령어이다.
예시로는 Branch, Skip, Call, Return등이 있다.
Status Bit Conditions
- C(Carry) : 연산 시 마지막 자리 올림수 C₈이 1이면 설정
- S(Sign) : 결과의 최상위 비트 F₇이 1이면 설정(부호를 나타낸다.)
- Z(Zero) : 산술 논리 연산 (ALU)의 결과가 모두 0이면 설정
- V(Overflow) : 올바은 범위를 초과했을 때 설정 - XOR(C₇, C₈) = 1 -> 즉, 마지막 Carry와 그 전 Carry의 값이 다르면, Overflow이다.
Subroutine call and return
❓ 서브루틴(Subroutine) 개념
반복적으로 사용할 수 있는 코드를 작성해서 프로그램의 효율성과 가독성을 높이는 것이다. 즉, 특정 작업을 수행하기 위해 작성된 코드 블록을 말한다.
Subroutine 호출 명령어
- Call subroutine: subroutine을 호출하는 기본 명령어
- Jump to subroutine: subroutine으로 점프(이동)하는 명령어
- Branch to subroutine: 분기(branch)를 통해 subroutine을 실행하는 명령어
- Branch and save address: 분기를 실행하면서 복귀 주소를 저장하는 명령어
Subroutine 호출의 동작 과정
1. 복귀(return) 주소 저장
- subroutine 호출 시, PC는 현재 명령어 이후 실행해야할 다음 명령어를 임시 저장소에 저장
- subroutine이 끝나면 임시 저장소에 저장된 명령어 주소로 돌아간다.
2. 서브루틴 실행
- subroutine 내부의 명령어들이 실행된다.
3. 복귀(Return)
- subroutine의 마지막 명령어가 복귀 주소를 PC에 전달한다.
- 복귀 명령어: Return from subroutine
복귀 주소가 저장되는 위치
- subroutine의 첫 번째 메모리 위치 : subroutine의 시작 위치에 복귀 주소를 저장하는 방법
- 고정된 메모리 위치 : 미리 정의된 특정 메모리 공간에 저장
- 프로세서 레지스터 : CPU의 특정 레지스터에 복귀 주소를 저장
- 메모리 Stack : Stack을 활용해서 복귀 주소 저장
Stack을 이용해서 Subroutine return address 저장하는 방법
subroutine call
- SP ← SP + 1 : Stack Pointer 증가
- M[SP] ← PC : 현재 PC의 값 Stack에 저장
- PC ← EA : subroutine할 주소 PC 저장
return from subroutine
- PC ← M[SP] : Stack Pointer 가르키는 값(원래의 PC 주소)를 PC에 전달
- SP ← SP - 1 : Stack Pointer 감소
Program Interrupt
: 내부, 외부에서 발생하는 신호에 의해 실행 흐름이 일시적으로 중단되고, 특정 서비스를 실행하기 위해 Interupt Service Routine으로 제어가 이동하는 프로세스를 말한다.
Subroutine과 다른점
1. interupt는 내부, 외부 신호에 의해 하드웨어적으로 발생한다.
2. interupt가 발생하면, 하드웨어는 사전에 정의된 주소로 제어를 이동한다.
3. interupt처리는 CPU의 상태를 저장해서 interupt 종료 후 원래 프로그램 복귀가 가능한다.
CPU 상태의 구성
1. PC(Program Counter)
: interupt 발생 시 실행 중인 명령어의 다음 주소를 저장
2. Processor register
: 현재 작업 중에 사용된 레지스터 내용을 저장
3. Status Conditions
: 실행 중인 명령어의 상태(Carry, Zero등)를 저장
Program Status Word
: CPU의 Status Bit Conditions을 모두 모아 놓은 정보이다. 예를 들어 Carry, Zero, Sign, Overflow가 있다.
Interupt의 종류
External Interrupt (외부 인터럽트)
- 발생 원인:
- I/O 장치 신호 (예: 키보드 입력, 프린터 요청)
- 타이밍 장치 (예: 타이머 완료)
- 회로 모니터링 (예: 전원 공급 문제)
- 설명: 외부 장치나 하드웨어 신호로 인해 발생.
Internal Interrupt (Trap, 내부 인터럽트)
- 발생 원인:
- 잘못된 연산 (예: 0으로 나누기, 잘못된 명령어)
- 레지스터 오버플로우
- 설명: CPU 내부에서 발생하는 오류나 예외 상황으로 인해 발생.
Software Interrupt (소프트웨어 인터럽트):
- 발생 원인:
- 소프트웨어에 의해 명령어로 발생.
- 예: Supervisor Call (운영 체제 호출).
- 설명: 프로그램 실행 중 소프트웨어 명령어로 의도적으로 발
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
9.1 Parallel processing(Instruction Level Parallelism) (0) | 2024.11.24 |
---|---|
8.8 Reduced Instruction Set Computer (RISC) (0) | 2024.11.17 |
8.6 Data transfer and manipulation (0) | 2024.11.17 |
8.5 Addressing modes (0) | 2024.11.17 |
8.4 Instruction formats (0) | 2024.11.17 |