티스토리 뷰

이번 포스팅에서는 정보처리기사 필기 2과목 전자계산기 구조에서 중요하게 다루는 CPU에 대해 알아보겠습니다. CPU는 Central Processing Unit의 약자로 말 그대로 중앙처리장치라는 뜻입니다. 우리가 입력한 명령어를 받아들이고 해석하여 컴퓨터의 모든 장치들을 제어하여 정확한 작업을 수행하도록 중앙에서 처리하는 장치인 것입니다. 

CPU는 마이크로프로세서(Micro-processor)라고도 불리며,

이는 CPU에 제어장치, 연산장치, 기억장치가 집약되어 위치하여 기능을 수행하기 때문입니다.

기술의 발전으로 나노 단위로 설계된 CPU는 아주 작은 크기를 가졌지만 대단히 능력이 뛰어난 두뇌라고 할 수 있습니다.

1. CPU의 메이저 스테이트 4가

CPU의 메이저 스테이트란 현재 CPU가 어떤 작업을 수행하고 있는지를 나타내는 상태입니다.

CPU의 메이저 스테이트에는 4가지 상태가 있는데, 인출 단계(Fetch Cycle), 간접 단계(Indirect Cycle), Execute Cycle, 인터럽트 단계(Interrupt Cycle)가 있습니다.

CPU는 4가지 상태를 반복적으로 오가며 모든 작업을 수행합니다.

CPU의 메이저 스테이트가 어떤지는 메이저 스테이트 레지스터를 통해 확인할 수 있습니다.

(1)인출 단계(Fetch Cycle)

CPU는 최초로 명령어를 수행하기 위해 명령어를 명령 레지스터를 통해 가져와 해독합니다.

이러한 기능을 하기 위해 주기억장치에 저장된 명령어를 CPU로 가져오는데

이러한 작업을 하는 단계를 인출 단계라고 부릅니다.

주기억장치에서 읽어와 해독한 명령어가 1 Cycle 명령이면 이를 일단 수행한 후 인출 단계로 변화합니다.

1 Cycle 명령어가 아니면 불러온 주소가 직접 주소인지 간접 주소인지를 판단하여,

그 주소가 간접주소이면 유효 주소를 계산하기 위해  다시 간접 단계(Indirect Cycle)를 수행합니다.

인출 단계의 작업 수행을 좀 더 자세히 알아보기 위해 동작 순서를 하나하나 알아보겠습니다.

인출 단계를 수행하는데 발생하는 마이크로 오퍼레이션(Micro Operation)을 순서대로 써보겠습니다.

MAR  ←  PC; PC에 저장된 주소를 MAR에 전송한다.

MBR  ←   M [MAR]; MAR이 지정하는 주소 값을 MBR에 전송한다.

PC  ←   PC + 1; 다음에 실행할 명령의 위치를 지정하기 위해 PC의 값을 자동적으로 1만큼 증가시킨다. 

IR  ←  MBR [OP] 명령어의 OP-Code 부분을 명령 레지스터에 불러온다.

I  ←   MBR [I] 명령어의 모드 비트를 플립플롭 I에 전송한다.

F  ←   1I가 0이면 F 플립플롭에 1을 전송하여 Execute단계로 나아간다.

R  ←   1I가 1이면 R 플립플롭에 1을 전송하여 Indirect 단계로 나아간다.

(2) 간접 단계(Indirect Cycle)

인출 단계에서 해독된 명령어의 주소부가 간접 주소인 경우 간접 단계로 넘어오게 됩니다.

즉 인출 단계에서 해독한 주소를 읽은 후 그 주소가 간접 주소이면 유효 주소를 구하기 위해

다시 간접 단계를 수행하는 것입니다.

만약 주소가 간접 주소가 아니라면 명령어에 따라 Execute 단계나 인출 단계로 이동할지 판단하여 이동합니다.

 

간접 단계를 더 자세히 단계별로 알아보기 위해 마이크로 오퍼레이션을 순서대로 써보겠습니다.

MAR  ←   MBR; MBR에 있는 명령어의 주소 부분을 MAR에 전송한다.

MBR  ←   M [MAR]; 메모리에서 MAR이 가진 위치 값을 MBR에 전송한다.

No Operation; 동작 없음.

F  ←  1, R  ←   0; F에 1, R에 0을 전송하여 Execute 단계로 나아간다.

(3) 인터럽트 단계(Interrupt Cycle)

CPU가 항상 순조롭게 작업을 수행하는 것이 아니라, 인터럽트가 발생할 수가 있습니다.

인터럽트가 발생했을 때, 복귀 주소(PC)를 저장하고 제어 순서를

인터럽트 처리 프로그램의 첫 번째 명령어로 전송하는 단계입니다.

인터럽트 단계는 인터럽트가 발생한 경우에만 실행되는 상태로 정상 작업이 아닌

다른 종류의 일을 수행하고 복귀 주소로 돌아오기 때문에

하드웨어로 실현되는 서브루틴(Subroutine, 부 프로그램)이라고도 부릅니다.

즉 원래의 명령어를 수행하다가 인터럽트가 발생되어 복귀 주소를 지정하고

인터럽트 상태를 해소하고 다시 돌아와 메인 명령어를 수행하므로 서브루틴이라고 부르는 것입니다.

메인 명령어와 대비되는 표현이라고 보면 쉽게 이해할 수 있습니다.

인터럽트 단계의 마이크로 오퍼레이션을 순서대로 살펴보겠습니다.

 

MBR [AD]  ←   PC; PC의 복귀 주소를 MBR의 주소 부분으로 전송한다.

PC  ←   0; 복귀주소를 저장할 위치를 지정한다.

MAR  ←   PC; PC가 가진 0번지 주소를 MAR에 전송한다.

PC  ←   PC + 1; 인터럽트를 처리하는 서브루틴으로 이동하기 위해 인터럽트 벡터의 위치를 지정하기 위해 PC 위치 값을 1 증가시킨다.

M [MAR]  ←   MBR; MBR이 가진 다음 실행할 명령의 주소를 메모리의 MAR 부분에 저장한다.

IEN  ←   0; 인터럽트 단계가 마칠 때까지 또 다른 인터럽트가 추가적으로 발생하지 않게 IEN에 0을 전송한다.

F  ←   0, R  ←  0; F에 0, R에 0을 전송하여 인출 단계로 나아한다.

 

인터럽트를 직관적으로 말한다면 '끼어들기'라고 말할 수 있습니다.

그 이유는 프로그램을 실행하는 도중에 예기치 않은 상황이 발생한다면 현재 실행 중인 작업을 중단하고,

발생된 인터럽트 상황을 우선적으로 처리한 후 원래 수행 중이던 작업으로 복귀하여 계속 처리하기 때문입니다.

인터럽트는 발생하는 원인에 따라 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 분류할 수 있습니다.

외부와 내부 인터럽트는 CPU의 하드웨어 신호에 의해 발생하고, 소프트웨어 인터럽트는 명령어의 수행에 의해 발생합니다.

다음에 설명할 인터럽트의 동작 순서는 정보처리기사 필기에 출제될 가능성이 높으므로 암기해두시면 편리합니다.

인터럽트 상황이 나타나면 인터럽트를 요청하는 신호가 발생합니다.

인터럽트를 요청하는 신호가 발생하면 실행 중이던 프로그램 작업을 중단하고 현재의 프로그램의 상태를 보존합니다.

다음으로 인터럽트를 처리하는 서브루틴을 실행하여 인터럽트를 요청한 장치를 식별한 뒤,

인터럽트 서비스 루틴을 실행하여 인터럽트의 원인을 결정하고 실질적으로 인터럽트를 처리합니다.

인터럽트 상황을 처리한 후에는 처음에 저장된 복귀 주소를 이용하여

인터럽트 이전에 수행 중이던 프로그램으로 돌아와 다시 수행합니다.

CPU의 메이저 스테이트 4단계를 이해하는 것은 컴퓨터 장치의 가장 중추적인 기능을

이해하는 것과 같으므로 정보처리기사 필기를 준비하며 공부할 가치가 있고 출제 가능성 또한 높습니다.

CPU의 메이저 스테이트와 마이크로 오퍼레이션에 대한 포스팅을 마치겠습니다. :)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday