Chapter 04 CPU와 작동 원리 문제 - goorm-6th-Als/for_study_Algorithm GitHub Wiki

💻 CPU와 작동 원리 문제에 대해 복습해봅시다.

작성자 : 김현빈


[문제 1번]

'알쓰조 현빈'은 ALU에 대해 '혼공컴운'책을 통해 배우고 노션에 정리했습니다.
그런데 어떤 못된 사람이 정리한 노션을 바꿔버린것입니다.. (제 TIL는 어디간거에요 네?!) 😡
다행히도 '현빈'은 이런일이 '빈'번했기에 다시 정리할 수 있었습니다. 빈칸에 올바른 내용을 넣어주세요.

<Notion>
[ 시스템 버스 ]
[ 명령어 레지스터 ]
[ 클럭 신호 ]
[ 제어 버스 ]
[ ALU ]
  • 컴퓨터 내의 주요 구성 요소들 사이에서 데이터를 전송하는 데 사용되는 통신 경로. : [    ]
  • CPU가 수행할 다음 작업을 보관하는 곳 : [    ]
  • 일정한 간격을 가진 전기적 펄스로, 컴퓨터의 작업 속도를 결정한다 : [    ]
  • CPU가 메모리, 입력 장치, 출력 장치 등에 명령을 내리고 상태 정보를 받는 경로 : [    ]
  • 산술, 논리 연산을 수행하는 장치 (+, -, X, %), (&, |, ^, !) : [    ]

[문제 2번]

다음 중 산술논리연산장치(ALU)에 사용되는 레지스터들 중에 올바르지 않은 것은?

① 상태 레지스터(Status Register)
② 프로그램 카운터(Program Counter)
③ 데이터 레지스터(Data Register)
④ 가산기(Adder)


[문제 3번]
설명에 맞는 레지스터를 빈 공간에 넣어주세요 ! 🤗

**[ 명령어 레지스터, 플래그 레지스터, 범용 레지스터, 프로그램 카운터 ]**
**[ 메모리 주소 레지스터, 스택 포인터, 베이스 레지스터, 메모리 버퍼 레지스터 ]**  

- 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터. : `[    ]`
- 해석할 명령을 저장하는 레지스터 : `[    ]`
- 데이터와 주소를 모두 저장하는 레지스터 :  `[    ]`
- 메모리에서 가져올 명령어의 주소를 저장하는 레지스터 : `[    ]`
- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 사용되는 레지스터: `[    ]`
- 메모리와 주고 받은 데이터나 명령어을 저장하는 레지스터 : `[    ]`
- 마지막으로 저장한 값의 위치를 저장하는 레지스터 : `[    ]`
- 기준 주소를 저장하는 레지스터. : `[    ]`
👀Hint 플, 명, 범, 프, 주, 버, 스, 베

[문제 4번]
'알쓰 조'는 인터럽트에 대해 배우게 되었다.

다만 인터럽트가 이해가 안되서 각자 역할을 맡아 역할극을 진행해 보았다.
진행 내용을 보고 알쓰조는 어떻게 행동할지 올바른것을 골라주세요.
CPU의 행동은 알쓰조의 올바른 판단으로 비유합니다.

**[ 현빈 : 프로그램 카운터 ]**
**[ 수연 : 인터럽트 요청 신호 ]**
**[ 다영 : 인터럽트 벡터 ]**
**[ 준수 : 스택 ]**
**[ 진수 : 하드웨어 인터럽트 요청 신호 ]**
**[ 수지 : 플래그 레지스터]**

- 현빈 : 자자 오늘 이분탐색 테마 '회식 날짜 탐색하기' 240312번을 풀 차례입니다. 1분이면 풀죠?  
- 수연 : 어 근데 저희 오늘 1분걸리는 주간 계획부터 짜야하는데요.
- 다영 : 제가 피그마 주소인 10번 링크 가지고 있습니다! (막내미 뿜뿜)
- 준수 : 그럼 제가 백준문제 링크 저장해두겠습니다.
- 현빈 : 그럼 10번 피그마 부터 합시다.
- 진수 : 어 근데 저 마피아 하고싶어요 오랜시간인 10분 정도만 할까요? 
- 수지 : 해도 괜찮을거 같아요 I'm 1입니다.

① 스터디를 종료하기 위해 Discord에서 나간다.
② 진수를 무시하고 피그마로 계획짜기와 백준 문제를 해결하고 마피아를 진행한다.
③ 마피아를 당장 켜 마피아를 즐긴 후, 저장된 주소를 통해 피그마로 이동한다.  
④ 진수님이 저장한 주소를 지운다.

[문제 5번]
제어장치가 어떻게 동작하는지 진수는 정리하고 싶어졌다.

단순히 텍스트로 정리하자 가독성이 떨어졌다 판단한 그는 그림✒을 그리기 시작했는데.
워낙에 그림을 잘그리기로 유명했던 터라 이해가 수월했다. 빈칸을 채워주세요

image 그의 명작 중 하나인 [케찹라면을 먹는 현빈 2024 作] 이다.

[ 명령어 레지스터, 범용 레지스터, 플래그 레지스터, 프로그램 카운터 ]
[ 주소 버스, 스택 포인터, 베이스 레지스터, 제어 버스 ] 

image

정답

1번

시스템 버스(System Bus): 컴퓨터 내의 주요 구성 요소들 사이에서 데이터를 전송하는 데 사용되는 통신 경로입니다. 데이터 버스, 주소 버스, 제어 버스로 구성되어 있습니다.

명령어 레지스터(Instruction Register): 현재 실행 중인 명령어를 저장하는 레지스터입니다. CPU가 수행할 다음 작업을 명령어 레지스터가 보유합니다.

클럭 신호(Clock Signal): 컴퓨터의 다양한 구성 요소가 동기화되어 작동하도록 하는 신호입니다. 클럭 신호는 일정한 간격을 가진 전기적 펄스로, 컴퓨터의 작업 속도를 결정합니다.

제어 버스(Control Bus): CPU와 기타 장치 사이에서 제어 신호를 전송하는 데 사용되는 경로입니다. 이 버스를 통해 CPU는 메모리, 입력 장치, 출력 장치 등에 명령을 내리고 상태 정보를 받습니다.

ALU(Arithmetic Logic Unit): 컴퓨터에서 산술 연산(더하기, 빼기 등)과 논리 연산(AND, OR 등)을 수행하는 하드웨어입니다. CPU의 주요 구성 요소 중 하나로, 실제 계산 작업을 담당합니다.

2번

ALU는 핵심 부분 중 하나로서 산술 및 논리 연산을 수행하는 장치입니다. 산술 연산장치 : 산술 연산을 수행
논리 연산장치 : 논리연산 수행
시프트 레지스터 : 비트들을 좌측 or 우측으로 이동
보수기 : 음수표현
상태레지스터 : 연산 결과의 상태를 나타내는 플래그를 저장

프로그램 카운터는 CPU 내부 레지스터 중 하나입니다.

3번

  • 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터. : 플래그 레지스터
  • 해석할 명령을 저장하는 레지스터 : 명령어 레지스터
  • 데이터와 주소를 모두 저장하는 레지스터 : 범용 레지스터
  • 메모리에서 가져올 명령어의 주소를 저장하는 레지스터 : 프로그램 카운터
  • CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 사용되는 레지스터: 메모리 주소 레지스터
  • 메모리와 주고 받은 데이터나 명령어을 저장하는 레지스터 : 메모리 버퍼 레지스터
  • 마지막으로 저장한 값의 위치를 저장하는 레지스터 : 스택 포인터
  • 기준 주소를 저장하는 레지스터. : 베이스 레지스터

4번

3번. 마피아를 당장 켜 마피아를 즐긴 후, 저장된 주소를 통해 피그마로 이동한다.
하드웨어 인터럽트 발생 시 CPU는 수행하던 작업을 멈추고 하던 작업정보를 백업 후
인터럽트 서비스 루틴을 실행합니다. 이후 백업한 정보를 통해 원래 작업으로 돌아갑니다.

5번

좌측부터

  1. 플래그 레지스터 : 제어장치에게 다양한 플래그 값을 전송합니다.
  2. 명령어 레지스터 : 현재 해석할 명령어를 제어장치로 제공합니다.
  3. 제어 버스 : 제어 신호를 보내는 통로입니다.
⚠️ **GitHub.com Fallback** ⚠️