[컴퓨터구조] 정리_3
resilient
·2021. 4. 29. 00:57
CPU 명령어 사이클
CPU의 명령어 사이클은
- 프로그램에서 주어진 명령어를 실행하기 위해 반복적으로 수행해야 하는 일련의 연속적인 동작을 의미한다.
- 명령 또는 명령어
CPU가 동작을 수행하는데 필요한 설명이나 지시
CPU 명령어 사이클의 기본구조
- 명령어 인출 사이클
CPU가 메모리에서 명령어를 읽어오는 단계이다.
- 명령어 실행 사이클
CPU가 명령을 수행하는 단계이다.
사이클 구조
명령어 인출 사이클
- 명령어가 저장된 주소를 지정
- 메모리의 해당 주소에 들어있는 명령어를 꺼내옴
- 프로그램 카운터에 다음번 명령어의 주소를 준비
명령어 실행 사이클
- 명령어를 해독
- 명령어 실행에 필요한 CPU 내외부 제어신호 발생PU 내외부 제어신호 발생
명령어 인출 사이클
프로그램 카운터 PC가 가리키는 메모리 주소에서 명령어를 순서대로 인출햇 명령 레지스터 IR로 전송
명령어 인출 사이클을 <연속된 마이크로 연산> 으로 표시
- t1 : MAR ← PC
PC에 저장된 명령어 주소를 MAR로 전송
- t2 : MBR ← M[MAR], PC ← PC+1
MAR 번지 메모리의 명령어를 MBR로 전송하고 PC를 증가시켜 다음번 명령어의 주소를 준비한다.
- t3 : IR ← MBR
메모리에서 인출해온 명령어를 IR로 전송
명령어 실행 사이클
명령 레지스터 IR에 저장된 명령어를 해독하고 CPU 내외부에서 명령어 실행에 필요한 제어신호들을 발생시킨다.
<가상>의 어셈블리 명령어 설계
- 데이터 처리 및 메모리 연산 명령 MOV
- 산술연산 명령 ADD
- 흐름제어 연산 명령 JUMP
명령어 실행 사이클을 <연속된 마이크로 연산>으로 표시
어큐뮬레이터 AC 범용 레지스터 B, 프로그램 카운터 PC, 명령의 오퍼랜드 필드에 포함된 유효주소 Y 사용
MOV 설계
MOV B, [Y] ; B ← M[Y]
오퍼랜드에 포함된 메모리 주소 Y번지의 내용을 B 레지스터로 전송
명령어 실행 사이클을 <연속된 마이크로연산> 으로 표시
- t1 : MAR ← Y
메모리 주소 Y를 MAR로 전송
- t2 : MBR ← M[MAR]
MAR 번지 메모리 내용을 MBR로 전송
- t3 : B ← MBR
MBR의 내용을 B 레지스터에 전송
ADD 설계
ADD[Y] ; AC ← AC + M[Y]
AC의 내용을 오퍼랜드에 포함된 주소 Y의 내용과 더해 저장
명령어 실행 사이클을 <연속된 마이크로 연산> 으로 표시
- t1 : MAR ← Y
메모리 주소 Y를 MAR로 전송
- t2 : MBR ← M[MAR]
MAR 번지 메모리 내용을 MBR로 전송
- t3 : AC ← AC + MBR
AC와 MBR의 합을 구해 다시 AC에 저장
JUMP 설계
JUMP Y
프로그램의 흐름이 오퍼랜드에 포함된 주소 Y로 분기
- t1 : PC ← Y
분기 주소 Y를 PC로 전송
간접 사이클 → 실행 사이클의 일부
오퍼랜드 필드에 포함된 간접주소로 부터 실제 피연산자가 저장된 위치인 유효주소를 읽어 오는 단계
간접 사이클을 <연속된 마이크로 연산>으로 표시
IR → 명령 레지스터 IR의 오퍼랜드 필드
- t1 : MAR ← IR(오퍼랜드)
오퍼랜드에 있는 간접주소를 MAR로 전송
- t2 : MBR ← M[MAR]
MAR 번지 모메리 내용인 유효주소를 MBR로 전송
- t3 : IR(오퍼랜드) ← MBR
MBR의 내용을 IR(오퍼랜드)로 전송 → 명령어의 새로운 오퍼랜드 필드에 유효주소가 준비
서브루틴 호출과 복귀
메모리의 스택 영역
- 서브루틴을 호출할 때 메인 프로그램의 위치로 다시 돌아올 복귀 주소를 저장하는 역할을 한다.
- 스택포인터 SP
CPU레지스터 중 하나, 현재 상태에서 이용가능한 스택 영역의 최종 위치를 표시한다.
항상 스택 영역에 최상위나 최하위 주소를 가리킴
- 스택 영역에 내용을 넣거나 꺼낼 때는 SP를 기준
주로 후입선출 방식 - 스택 특징
<가상>의 어셈블리 명령어설계
흐름제어 연산 명령 CALL, RETURN
서브루틴 호출과 복귀 명령에 관한 고려사항
- 스택 영역은 번지가 감소하는 방향으로 늘어나고 복귀 주소는 메모리 번지 하나를 차지하는 것으로 가정
- 스택포인터 SP, 프로그램 카운터 PC, 명령어의 오퍼랜드 필드에 포함된 유효주소 Y 사용
CALL 설계
CALL Y → 메모리 주소 Y 번지에 저장된 서브루틴을 호출
명령어 실행 사이클을 <연속된 마이크로 연산> 으로 표시
- t1 : MBR ← PC
메인 프로그램의 복귀 주소인 PC의 내용을 MBR로 전송
- t2 : MAR ← SP, PC ← Y
스택포인터 SP 가 가리키는 주소를 MAR로 전송하고 PC를 Y 번지로 이동시켜 서브루틴의 시작주소를 준비
- t3 : M[MAR] ← MBR, SP ← SP-1
MBR에 저장된 복귀 주소를 MAR 번지에 저장하고, SP를 감소시켜 다음번 저장소의 위치를 준비
RETURN 설계
RETURN → 서브루틴을 끝내고 메인 프로그램으로 복귀
- t1 : SP ← SP+1
메인 프로그램의 복귀 주소가 저장도니 스택 위치를 계산
- t2 : MAR ← SP
현재 스택포인터 SP가 가리키는 주소를 MAR로 전송
- t3 : PC ← M[MAR]
MAR 번지 메모리에 저장된 복귀 주소를 PC로 전송 메모리에 저장된 복귀 주소를 PC로 전송
인터럽트 사이클
인터럽트
- 프로그램의 정상 처리순서를 방해하는 서비스 요구
일반 서브루틴과 달리 대부분 전혀 예상치 못한 시점에서 CPU에 서비스를 요구
- CPU 외부장치나 프로그램 요청에 의해 발생
하드웨어→ CPU 외부장치 , 소프트웨어 → 프로그램 요청으로 발생
- 인터럽트 요구 수용하려면 CPU가 작업을 중단하고 인터럽트 핸들러 프로그램을 먼저 실행
인터럽트 처리 전에 복귀 주소 CPU 레지스터 상태, 메모리 참조 주소 값 등을 스택에 저장 처리 후 복원
다중인터럽트
인터럽트 서비스 프로그램이 진행되는 도중 또 다른 인터럽트가 발생하는 환경
인터럽트 마스크 혹은 마스킹
- 인터럽트가 발생했을 떄 특정한 것을 받아들이지 않도록 금지 플래그 설정
- 인터럽트 불가능 설정
우선 순위 방법
- 현재 작업보다 순위가 낮은 인터럽트가 들어오면 대기
- 순위가 높은 인터럽트가 들어오면 먼저 처리
인터럽트 사이클
명령어 사이클의 일부로 인터럽트 서비스 루틴의 시작 주소를 호출해 인터럽트 요구를 처리하는 단계
ISR 호출을 <연속된 마이크로 연산> 으로 표시시
- t1 : MBR ← PC
메인 프로그램의 복귀 주소인 PC의 내용을 MBR로 전송
- t2 : MAR ← SP,PC ← ISR의 시작 주소
스택포인터 SP 가 가리키는 주소를 MAR로 전송하고 PC를 인터럽트 서비스 루틴의 시작 주소로 이동
- t3 : M[MAR] ← MBR, SP ← SP -1
MBR에 저장된 복귀 주소를 MAR 번지에 저장하고 ,SP를 감소시켜 다음번 저장소의 위치를 준비
병렬계산
병렬처리와 순차처리
병렬처리
- 작업읊 동시에 병렬로 처리한다는 의미
- 병렬처리, 순차처리
병렬처리 하드웨어의 구성
명령어를 여러 개의 장치에 분산시켜 동시에 처리해 작업 시간을 줄이도록 설계
병렬처리와 순차처리 할 작업을 효과적으로 구분하고 각 프로세서 간 통신문제가 해결되어야함
병렬계산, parallel computing
동시에 많은 계산이 수행되는 계산 형태
→ 큰 문제는 작게 쪼개어 작은 문제들로 만들어 동시에 풀수있다
→ 멀티코어 프로세서가 발달하면서 광범위하게 사용됨
'CS & Network > 운영체제(OS) & 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 메모리 (0) | 2021.05.05 |
---|---|
[컴퓨터구조] 기억장치 (0) | 2021.05.03 |
[컴퓨터구조] 파이프라인 (0) | 2021.05.01 |
[컴퓨터구조] 정리_2 (0) | 2021.04.28 |
[컴퓨터구조] 정리_1 (0) | 2021.04.26 |