티스토리 뷰



CPU(Central Processing Unit, 중앙 처리 장치)는 사람의 두뇌에 해당하는 것으로 컴퓨터의 성능을 좌우하는 핵심 요소입니다. 

위의 그림은 국내에서 퍼스널 컴퓨터 붐이 처음 일어날 당시 주로 장착되던 Z80 CPU의 아키텍처입니다. 1976년에 등장 했을 정도로 오래된 CPU이지만 이 칩을 제조하기 위해서 라이선스를 받은 회사가 한둘이 아닐 정도로 인기가 있었기 때문에 CPU를 공부하기 위한 참고 자료로 주목할만 합니다.  CPU의 주요 구성 요소는 다음과 같습니다.


    • 제어 장치(CU, Control Unit) :
      메모리에서 명령을 받아 해독과(Decode) 실행을 지시하는 핵심 요소입니다.

    • 연산 장치(ALU, Arithmetic Logic Unit) :
      제어 장치의 지시에 따라 산술, 논리, 비트 연산등의 실제 연산을 수행하는 장치입니다.

    • 기억 장치(레지스터, Register) :
      제어, 연산등에 사용하는 임시 기억 장치로 논리 회로(플립플롭, 래치등)를 통해서 구성됩니다.


CPU의 동작을 위의 그림을 통해서 간단히 정리해 보면 우선 실행할 명령어의 위치를 가진 PC(Program Counter)를 통해서 메모리(버퍼)로 부터 명령어를 가져옵니다(Fetch). IR(Instruction Register)에 읽혀진 명령어는 해석기(Decoder)를 통해서 해석되고 그 결과에 따라 ALU로 연산을 수행하거나 기타 장치에 제어 신호를 보내는 실행(Execute) 단계를 밟습니다. 마지막으로 PC의 값을 다음 명령어의 위치로 변경하면 하나의 명령어 주기가 끝나는 방식입니다. 기본적인 동작 흐름은 유사하지만 다양한 종류의 CPU별로 레지스터의 종류와 개수, 크기에 있어 차이가 있습니다.



출처 : 80386 reference manual

위의 그림은 가장 인기 있던 CPU 중의 하나인 인텔 80386 CPU의 레지스터들과 플래그 레지스터에 대한 설명입니다. 범용 레지스터를 8비트, 16비트, 32비트 단위로 다룰 수 있었습니다.



출처 : PowerPC Programmers Manual

위의 그림은 IBM, 애플, 모톨롤라 등이 연합해서 만들었던 PowerPC CPU의 레지스터 모습입니다. 부동소수점 관련 레지스터도 등장하고 Z80이나 30386과는 아키텍처에 있어 조금 차이를 보입니다.



출처 : https://en.wikipedia.org/wiki/ARM_architecture


위의 그림은 최근 다양한 임베디드 장비와 스마트폰등에 장착되고 있는 ARM 계열의 ARMv7 CPU의 레지스터입니다. 플래그 레지스터를 ARM에서는 CPSR(Current Program Status Register)이라 부르지만 동작 원리는 다른 CPU와 크게 다르지 않습니다. 


이렇게 다양한 CPU 종류에도 불구하고 각 CPU에서 사용하는 주요 레지스터에는 다음과 같은 것들이 있습니다.

    • PC(Program Counter) : 프로그램 카운터, 계수기 - 다음에 실행한 명령어의 위치를 가지고 있음

    • IR(Instruction Register) : 명령 레지스터 - 수행할 명령어를 가지고 있는 레지스터

    • AC, ACC(Accumulator) :  누산기 - 연산의 핵심 역할을 하는 레지스터로 통상 연산 결과를 임시로 저장

    • SR(Status Register), PSWR(Program Status Word Register) : 상태 레지스터 - CPU의 동작 상태를 가지고 있는 레지스터로 80386 CPU의 플래그(Flag) 레지스터를 참고할만 합니다.

    • MAR(Memory Address Register) : 메모리 주소 레지스터 - 접근할 메모리를 주소를 저장

    • MBR(Memory Buffer Register) : 메모리 버퍼 레지스터 - 메모리를 참조하거나 메모리에 저장할 데이터 저장

    • Index Register : 인덱스 레지스터 - 메모리 보조 주소나 첨자로 사용하는 레지스터

    • Data Register : 데이터 레지스터 - 연산에 사용하는 데이터 저장에 사용

    • SP(Stack Pointer, Stack Register) : 스택 포인터, 스택 레지스터 - 스택 주소를 가지고 있는 레지스터로 x86 CPU의 경우 PUSH, POP명령로 스택 관련 연산을 수행할 수 있습니다.


CPU가 제 역할을 수행하려면 내부적으로는 메모리와 연결되어야 하고 외부적으로는 다양한 입출력 장치와 정보를 주고 받을 수 있어야 합니다. 이렇게 CPU와 메모리 및 주변 장치를 연결해 주는 것을 버스(Bus) 또는 시스템 버스(System Bus)라 합니다. 버스는 위치에 따라 CPU와 메모리를 연결하는 내부 버스와 주변 장치를 연결하는 외부버스로 나눌 수 있고 전송하는 정보에 따라 다음의 세가지로 나눌 수 있습니다.

    • 데이터(Data) 버스 : 데이터를 전송하는 양방향 버스

    • 주소(Address) 버스 : 데이터를 전송할 위치를 지정하는 단방향 버스

    • 제어(Control) 버스 : 명령 또는 제어 신호를 보내는 양방향 버스

주소 버스의 크기에 따라 시스템에 장착할 수 있는 메모리 크기가 결정되고, 데이터 버스의 크기에 따라 속도가 결정되는 등 버스는 시스템 성능과 직접적으로 연관성을 갖는 요소입니다. 


※ 이제 기출문제를 통해서 복습해 보겠습니다. "정답보기"를 틀릭하면 답을 확인할 수 있습니다.

1. 현재 수행중에 있는 명령어 코드(code)를 저장하고 있는 임시 저장 장치는? (정답보기)

   가. 인덱스 레지스터(Index register)

   나. 명령 레지스터(Instruction register)

   다. 누산기(Accumulator)

   라. 메모리 레지스터(Memory register)


2. 중앙처리장치에서 명령이 실행될 차례를 제어하거나 특정 프로그램과 관련된 컴퓨터 시스템의 상태를 나타내고 유지해 두기 위한 제어 워드로서, 실행중인 CPU의 상태를 포함 하고 있는 것은?(정답보기)

    가. PSW 나. SP

    다. MAR 라. MBR



3. 중앙처리장치(CPU)의 기능을 설명한 것으로 옳지 않은 것은? (정답보기)

    가. 작업을 감독하는 기능 수행

    나. 산술연산, 논리연산을 수행

    다. 프로그램과 데이터를 저장하는 기능 수행

    라. 원시프로그램을 목적프로그램으로 변환하는 기능 수행

※ 소스(원시, Source) 프로그램을 목적(Object) 프로그램으로 변환하는 것은 컴파일러가 수행하는 기능입니다.


4. 레지스터 중 Program Counter의 기능을 바르게 설명한 것은? (정답보기)

    가. 현재 실행중인 명령어의 내용을 기억한다.

    나. 주기억장치의 번지를 기억한다.

    다. 다음에 수행할 명령어의 번지를 기억한다.

    라. 연산의 결과를 일시적으로 보관한다.


5. 중앙처리장치의 제어 부분에 의해서 해독되어 현재 실행중인 명령어를 기억하는 레지스터는? (정답보기)

    가. PC(Program Counter)

    나. IR(Instruction Register)

    다. MAR(Memory Address Register)

    라. MBR(Memory Buffer Register)


6. 컴퓨터의 중앙처리장치(CPU)의 구성 부분에 해당되지 않는 것은?(정답보기)

   가. 주기억장치 나. 연산장치

   다. 보조기억장치 라. 제어장치


7. 1~2개의 대규모 집적회로의 칩을 중앙처리장치에 해당하는 부분을 내장시켜 기능을 수행하게 하는 것은? (정답보기)

    가. 레지스터 나. 컴파일러

    다. 소프트웨어 라. 마이크로프로세서


8. 일반적으로 컴퓨터의 CPU에서 하나의 명령어를 실행하기 위하여 이루어지는 동작 단계를 바르게 나열한 것은? (정답보기)

    가. fetch cycle→instruction decoding cycle→write-back 작업→명령어 실행단계

    나. fetch cycle→instruction decoding cycle→명령어 실행단계→write-back 작업

    다. fetch cycle→명령어 실행단계→write-back 작업→instruction decoding cycle

    라. instruction decoding cycle→fetch cycle→명령어 실행단계→write-back 작업


9. CPU에서 처리된 데이터나 기억장치에 저장된 데이터들이 전달되는 양방향의 전송 통로는? (정답보기)

    가. 입/출력모듈 나. ALU

    다. 버스(BUS) 라. SDRAM


10. PC내의 레지스터 중 연산 결과에 따라 자리올림이나 오버플로가 발생했는지 여부와 외부로 부터의 인터럽트 신호까지 나타내는 것은? (정답보기)

    가. 상태 레지스터 나. 데이터 레지스터

    다. 명령 레지스터 라. 인덱스 레지스터


11. 컴퓨터 시스템에서 명령어를 실행하기 위하여 CPU에서 이루어지는 동작 단계의 하나로써, 기억장치로부터 명령어를 읽어 들이는 단계는?(정답보기)

   가. 재기록(write back)단계

   나. 실행(execute)단계

   다. 해독(decoding)단계

   라. 펫치(fetch)단계


12. 중앙처리장치(CPU)에 해당하지 않는 것은?(정답보기)

가. 연산장치 나. 기억장치

다. 제어장치 라. 입력장치


13. 마이크로프로세서의 구성에 해당하지 않는 것은? (정답보기)

    가. 출력장치 나. 레지스터

    다. 제어장치 라. 연산장치


14. 마이크로프로세서의 기능이 아닌것은? (정답보기)

   가. 기억기능 나. 메모리 관리

   다. 산술 및 논리연산 라. 제어 기능


15. 다음 중 기억장치로 부터 읽혀지거나 기록할 자료를 임시로 보관하는 Register는? (정답보기)

    가. PC(Program Counter)

    나. MAR(Memory Address Register)

    다. IR(Instruction Register)

    라. MBR(Memory Buffer Register)


16. PC 내에서 데이터를 이동하는데 사용하는 버스(Bus)의 종류로 옳지 않은 것은? (정답보기)

    가. 내부 버스 나. 데이터 버스

    다. 어드레스 버스 라. 제어 버스


17. ALU의 구성요소가 아닌 것은? (정답보기)

    가. 가산기 나. 누산기

    다. 상태 레지스터 라. 명령 레지스터

※ CPU 전체 구성에 있어 한 부분을 담당하는 ALU(Arithmetic and Logic Unit)의 시각으로 보셔야 합니다. 


18. 연산에 사용되는 데이터 및 연산의 중간 결과를 레지스터에 저장하는 주된 이유는? (정답보기)

    가. 비용 절약을 위하여

    나. 연산 속도의 향상을 위하여

    다. 기억 장소의 절약을 위하여

    라. 연산의 정확도를 높이기 위하여


19. 산술 및 논리연산의 결과를 일시적으로 기억하는 레지스터(Register)는? (정답보기)

가. Accumulator

나. Memory Buffer Register

다. Memory Address Register

라. Instruction Register


20. 아래의 보기는 명령어 인출 절차를 보인 것이다. 올바른 순서로 나열된 것은? (정답보기)

가. 명령계수기를 증가시킨다.

나. 명령어를 주기억장치로부터 인출한다.

다. 명령 코드를 명령 레지스터에 옮긴다.

라. 명령 계수기의 값을 번지 레지스터에 옮긴다.

가. 가.→나.→다.→라. 나. 가.→다.→라.→나.

다. 라.→나.→가.→다. 라. 다.→나.→가.→라.


21. 레지스터에 새로운 데이터를 전송하면 먼저 있던 내용은 어떻게 되는가? (정답보기)

   가. 먼저 내용은 다른 곳으로 전송되고 새로운 내용만 기억된다.

   나. 기억된 내용에 아무런 변화가 없다.

   다. 먼저 내용은 지워지고 새로운 내용만 기억된다.

   라. 누산기(Accumulator)에서는 덧셈이 이루어진다.


22. 입·출력장치의 동작속도와 전자계산기 내부의 동작 속도를 맞추는데 사용되는 레지스터는? (정답보기)

    가. 시프트 레지스터(Shift Register)

    나. 시퀀스 레지스터(Sequence Register)

    다. 어드레스 레지스터(Address Register)

    라. 버퍼 레지스터(Buffer Register)


23. 누산기(Accumulator)에 대하여 바르게 설명한 것은? (정답보기)

    가. 다음에 수행할 명령어와 번지를 기억하는 장치이다.

    나. 연산 부호를 해독하는 장치이다.

    다. 연산 결과를 일시적으로 기억하는 장치이다.

    라. 현재 실행중인 연산 결과를 기억하는 장치이다.


24. 제어논리장치(CLU)와 산술논리연산장치(ALU)의 실행 순서를 제어하기 위해 사용되는 레지스터는? (정답보기)

    가. 누산기(Accumulator)

    나. 프로그램 상태 워드(PSW)

    다. 명령 레지스터(Instruction Register)

    라. 플래그 레지스터(Flag Register)


25. 인스트럭션 레지스터(Instruction register), 부호기, 번지 해독기, 제어계수기 등과 관계있는 장치는? (정답보기)

   가. 제어장치 나. 연산장치

   다. 입력장치 라. 기억장치


26. 연산의 중심이 되는 레지스터(Register)는? (정답보기)

    가. General Register 나. Address Register

    다. Accumulator 라. Flip Flop


27. 연산장치에서 연산결과에 대한 부호를 저장하는 것은? (정답보기)

    가. 가산기 나. 기억 레지스터

    다. 상태 레지스터 라. 보수기


28. 제어장치의 기능에 대한 설명으로 틀린 것은? (정답보기)

    가. 산술 및 논리연산을 실행하는 장치이다.

    나. 입·출력장치를 제어한다.

    다. 주기억장치에 기억된 명령을 꺼내어 해독한다.

    라. 프로그램카운터와 명령레지스터를 이용하여 명령어 처리순서를 제어한다.


29. 제어장치의 구성 요소와 관계가 없는 것은? (정답보기)

가. 가산기(Adder)

나. 번지 디코더(Address Decoder)

다. 명령 레지스터(Instruction Register)

라. 프로그램 계수기(Program Counter)



댓글
댓글쓰기 폼