Chapter 04 CPU와 작동 원리 문제 - goorm-6th-Als/for_study_Algorithm GitHub Wiki
'알쓰조 현빈'은 ALU에 대해 '혼공컴운'책을 통해 배우고 노션에 정리했습니다.
그런데 어떤 못된 사람이 정리한 노션을 바꿔버린것입니다.. (제 TIL는 어디간거에요 네?!) 😡
다행히도 '현빈'은 이런일이 '빈'번했기에 다시 정리할 수 있었습니다. 빈칸에 올바른 내용을 넣어주세요.
<Notion>
[ 시스템 버스 ]
[ 명령어 레지스터 ]
[ 클럭 신호 ]
[ 제어 버스 ]
[ ALU ]
- 컴퓨터 내의 주요 구성 요소들 사이에서 데이터를 전송하는 데 사용되는 통신 경로. :
[ ]
- CPU가 수행할 다음 작업을 보관하는 곳 :
[ ]
- 일정한 간격을 가진 전기적 펄스로, 컴퓨터의 작업 속도를 결정한다 :
[ ]
- CPU가 메모리, 입력 장치, 출력 장치 등에 명령을 내리고 상태 정보를 받는 경로 :
[ ]
- 산술, 논리 연산을 수행하는 장치 (+, -, X, %), (&, |, ^, !) :
[ ]
다음 중 산술논리연산장치(ALU)에 사용되는 레지스터들 중에 올바르지 않은 것은?
① 상태 레지스터(Status Register)
② 프로그램 카운터(Program Counter)
③ 데이터 레지스터(Data Register)
④ 가산기(Adder)
**[ 명령어 레지스터, 플래그 레지스터, 범용 레지스터, 프로그램 카운터 ]**
**[ 메모리 주소 레지스터, 스택 포인터, 베이스 레지스터, 메모리 버퍼 레지스터 ]**
- 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터. : `[ ]`
- 해석할 명령을 저장하는 레지스터 : `[ ]`
- 데이터와 주소를 모두 저장하는 레지스터 : `[ ]`
- 메모리에서 가져올 명령어의 주소를 저장하는 레지스터 : `[ ]`
- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 사용되는 레지스터: `[ ]`
- 메모리와 주고 받은 데이터나 명령어을 저장하는 레지스터 : `[ ]`
- 마지막으로 저장한 값의 위치를 저장하는 레지스터 : `[ ]`
- 기준 주소를 저장하는 레지스터. : `[ ]`
👀Hint
플, 명, 범, 프, 주, 버, 스, 베다만 인터럽트가 이해가 안되서 각자 역할을 맡아 역할극을 진행해 보았다.
진행 내용을 보고 알쓰조는 어떻게 행동할지 올바른것을 골라주세요.
CPU의 행동은 알쓰조의 올바른 판단으로 비유합니다.
**[ 현빈 : 프로그램 카운터 ]**
**[ 수연 : 인터럽트 요청 신호 ]**
**[ 다영 : 인터럽트 벡터 ]**
**[ 준수 : 스택 ]**
**[ 진수 : 하드웨어 인터럽트 요청 신호 ]**
**[ 수지 : 플래그 레지스터]**
- 현빈 : 자자 오늘 이분탐색 테마 '회식 날짜 탐색하기' 240312번을 풀 차례입니다. 1분이면 풀죠?
- 수연 : 어 근데 저희 오늘 1분걸리는 주간 계획부터 짜야하는데요.
- 다영 : 제가 피그마 주소인 10번 링크 가지고 있습니다! (막내미 뿜뿜)
- 준수 : 그럼 제가 백준문제 링크 저장해두겠습니다.
- 현빈 : 그럼 10번 피그마 부터 합시다.
- 진수 : 어 근데 저 마피아 하고싶어요 오랜시간인 10분 정도만 할까요?
- 수지 : 해도 괜찮을거 같아요 I'm 1입니다.
① 스터디를 종료하기 위해 Discord에서 나간다.
② 진수를 무시하고 피그마로 계획짜기와 백준 문제를 해결하고 마피아를 진행한다.
③ 마피아를 당장 켜 마피아를 즐긴 후, 저장된 주소를 통해 피그마로 이동한다.
④ 진수님이 저장한 주소를 지운다.
단순히 텍스트로 정리하자 가독성이 떨어졌다 판단한 그는 그림✒을 그리기 시작했는데.
워낙에 그림을 잘그리기로 유명했던 터라 이해가 수월했다. 빈칸을 채워주세요
그의 명작 중 하나인 [케찹라면을 먹는 현빈 2024 作] 이다.
[ 명령어 레지스터, 범용 레지스터, 플래그 레지스터, 프로그램 카운터 ]
[ 주소 버스, 스택 포인터, 베이스 레지스터, 제어 버스 ]
정답
시스템 버스(System Bus): 컴퓨터 내의 주요 구성 요소들 사이에서 데이터를 전송하는 데 사용되는 통신 경로입니다. 데이터 버스, 주소 버스, 제어 버스로 구성되어 있습니다.
명령어 레지스터(Instruction Register): 현재 실행 중인 명령어를 저장하는 레지스터입니다. CPU가 수행할 다음 작업을 명령어 레지스터가 보유합니다.
클럭 신호(Clock Signal): 컴퓨터의 다양한 구성 요소가 동기화되어 작동하도록 하는 신호입니다. 클럭 신호는 일정한 간격을 가진 전기적 펄스로, 컴퓨터의 작업 속도를 결정합니다.
제어 버스(Control Bus): CPU와 기타 장치 사이에서 제어 신호를 전송하는 데 사용되는 경로입니다. 이 버스를 통해 CPU는 메모리, 입력 장치, 출력 장치 등에 명령을 내리고 상태 정보를 받습니다.
ALU(Arithmetic Logic Unit): 컴퓨터에서 산술 연산(더하기, 빼기 등)과 논리 연산(AND, OR 등)을 수행하는 하드웨어입니다. CPU의 주요 구성 요소 중 하나로, 실제 계산 작업을 담당합니다.
ALU는 핵심 부분 중 하나로서 산술 및 논리 연산을 수행하는 장치입니다.
산술 연산장치 : 산술 연산을 수행
논리 연산장치 : 논리연산 수행
시프트 레지스터 : 비트들을 좌측 or 우측으로 이동
보수기 : 음수표현
상태레지스터 : 연산 결과의 상태를 나타내는 플래그를 저장
프로그램 카운터는 CPU 내부 레지스터 중 하나입니다.
- 연산 결과 혹은 CPU 상태에 대한 부가 정보를 저장하는 레지스터. : 플래그 레지스터
- 해석할 명령을 저장하는 레지스터 : 명령어 레지스터
- 데이터와 주소를 모두 저장하는 레지스터 : 범용 레지스터
- 메모리에서 가져올 명령어의 주소를 저장하는 레지스터 : 프로그램 카운터
- CPU가 읽어 들이고자 하는 주소 값을 주소 버스로 보낼 때 사용되는 레지스터: 메모리 주소 레지스터
- 메모리와 주고 받은 데이터나 명령어을 저장하는 레지스터 : 메모리 버퍼 레지스터
- 마지막으로 저장한 값의 위치를 저장하는 레지스터 : 스택 포인터
- 기준 주소를 저장하는 레지스터. : 베이스 레지스터
3번. 마피아를 당장 켜 마피아를 즐긴 후, 저장된 주소를 통해 피그마로 이동한다.
하드웨어 인터럽트 발생 시 CPU는 수행하던 작업을 멈추고 하던 작업정보를 백업 후
인터럽트 서비스 루틴을 실행합니다. 이후 백업한 정보를 통해 원래 작업으로 돌아갑니다.
좌측부터
- 플래그 레지스터 : 제어장치에게 다양한 플래그 값을 전송합니다.
- 명령어 레지스터 : 현재 해석할 명령어를 제어장치로 제공합니다.
- 제어 버스 : 제어 신호를 보내는 통로입니다.