[컴퓨터구조] 정리_3

resilient

·

2021. 4. 29. 00:57

728x90
반응형

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