kwan's note

6주차- 인터럽트(Interrupt)와 서브루틴(Subroutine), 파이프라이닝(Pipelining) 본문

Computer Programming/Computer System

6주차- 인터럽트(Interrupt)와 서브루틴(Subroutine), 파이프라이닝(Pipelining)

kwan's note 2020. 12. 29. 23:21
반응형

수강일시 :12월 29일

출처:  kmooc 컴퓨터구조

 

3주차: 인터럽트 개념 및 처리방식을 설명할 수 있다. 서브루틴 처리과정을 설명할 수 있다. 명령어 파이프라이닝 기법을 설명할 수 있다.

 

 

인터럽트란

 

CPU가 정상적인 프로그램 실행 중에 또 다른 프로그램의 실행요구로 현재 실행 중인 프로그램을 중단시키고 요구된 프로그램을 실행하는 것을 인터럽트라고 한다.

 

 

인터럽트 개념 비유

 

인터럽트가 발생하면 PC값을 저장한 후 인터럽트 처리를 진행하고 다시 PC값으로 복원해 이전 사이클을 진행한다

명령어 사이클 내 인터럽트 처리의 사이클

인터럽트가 발생하면 어떤 장치가 인터럽트를 요구했는지 확인하고 인터럽트 서브루틴을 호출한다.

 

인터럽트 벡터 테이블은 이러한 서브루틴 시작주소를 가지고 있다.

 

t0: 프로그램 카운터의 내용이 MDR로 이동한다.(본 프록그램으로 돌아오기 위한 정보)

t1: 인터럽스 서비스 루틴이 시작되는 주소(ISR 주소)를 pc에 저장한다. 그와 동시에 MDR로 이동한 내용을 스택에 저장하기 위해 스택포인터값을 MAR로 저장한다. 그럼 MAR은 PC가 가지고있던 값을 저장할 위치를 지정한다. (스택포인터)

t2: MDR의 값을(PC값을 가지고 있는 MDR)을 스택포인터가 지정한 곳에 저장한다. 동시에 스택포인터를 하나 빼준다.

 

인터럽트도 여러개가 발생할 수 있다.

다중인터럽트를 처리하는 방식은 대표적으로 두가지가 있다.

 

flag를 이용하는 방식은 인터럽트가 요청되어도 flag를 불가능으로 설정하고 대기상태로 설정한다. 이것이 가능 상태가 되면 그때 인식된다.

 

우선순위를 정하는 방식은 우선순위가 낮은 인터럽트 처리중 높은 우선순위의 인터럽트가 발생하면 기존 인터럽트 요청이 중단되고 높은 우선순위 인터럽트가 먼저 처리되는 방식이다.

 

 

서브루틴 호출

서브루틴 호출

인터럽트는 시그널에 의한것이고 서브루틴은 콜에 의한 것인데 한 블록으로 구성된 명령어 실행중에 다른 블록으로 구성된 명령을 실핼하고자 삽입하는 형태가된다.

다만, 단순히 실행순서만 변경할 때는 분기 명령어 라고 한다.

 

명령어 파이프라이닝

cpu의 성능향상을 위해 명령어를 실행하는데 사용되는 하드웨어를 여러개의 독립적인 단계로 분할하여 동시에 처리하는 기술.

제조업/건설업의 공정관리의 인적 물적 자원분배(공정표 최적화)와 유사한 개념으로 접근하면 이해하기 쉽다.

 

파이프라이닝에 장애(자원 분배의 고려사항) 요소는

1.구조적 장애(메모리로부터 동시에 가져오고 저장할 수 없다)

2.데이터 장애(저장과 인출사이의 시간 순서)

3.제어장애(다른 명령에 따라 특정 작업이 필요 없어질때)

 

 

 

 

 

 

파이프라이닝 적용에 따른 속도 향상 계산

반응형