1️⃣ ALU
1) 레지스터에서 피연산자를 받아들임
2) 제어 장치에서 제어 신호를 받아들여 연산 수행
3) 결괏값을 레지스터에 저장
4) 플래그 레지스터에 플래그를 내보냄
✏️ 플래그
연산 결과에 대한 추가적인 정보
종류: 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그
2️⃣ 제어장치
- 클럭 신호, 해석해야 할 명령어, 플래그 값, 제어 신호를 받아들인다.
- CPU의 내/외부로 제어 신호를 보내고 명령어를 해석한다.
⇨ CPU 외부: 메모리, 입출력장치(값을 읽거나 쓰고 싶을 때)
⇨ CPU 내부: ALU(수행할 연산 지시), 레지스터(레지스터 간 데이터 이동, 저장된 명령어 해석)
3️⃣ 레지스터
1. 프로그램 카운터 PC (Program Counter): 메모리에서 가져올 명령어의 주소, 즉 메모리를 읽어 들일 명령어의 주소를 저장 (IP - Instruction Pointer)
2. 명령어 레지스터 IR (Instruction Register): 방금 메모리에서 읽어 들인 명령어를 저장
3. 메모리 주소 레지스터 MAR (Memory Address Register): 메모리의 주소를 저장
4. 메모리 버퍼 레지스터 MBR (Memory Buffer Register) 혹은 MDR(Memory Data Register): 메모리와 주고받을 값(데이터와 명령어)을 저장
5. 플래그 레지스터: 연산 결과 또는 CPU 상태에 대한 부가적인 정보를 저장
6. 범용 레지스터: 데이터와 주소를 모두 저장할 수 있는 레지스터.
✓ 특정 레지스터를 이용한 주소 지정 방식
- 스택 주소 지정 방식: 스택과 스택 포인터(스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터)를 이용한 주소 방식.
- 변위주소지정방식 : 오퍼랜드 필드의 값(변위)과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 주소 지정 방식
- 상대 주소 지정 방식: 오퍼랜드 + 프로그램 카운터
- 베이스 레지스터 주소 지정 방식: 오퍼랜드(기준 주소) + 베이스 레지스터의 값(기준 주소로부터 떨어진 거리)
4️⃣ 명령어 사이클과 인터럽트
✏️ 명령어 사이클 Instruction Cycle
1) 인출 사이클 fetch cycle
2) 실행 사이클 execusion cycle
3) 간접 사이클 indirect cycle
3) 인터럽트 사이클 Inturrupt cycle
✓ 인터럽트의 종류
- 동기 인터럽트 synchronous interrupts: CPU에 의해 발생하는 인터럽트 (예외)
동기 인터럽트의 종류:
- 폴트 fault (예외 처리 후 예외가 발생한 명령어부터 실행 재개)
- 트랩 trap (예외 처리 후 예외가 발생한 명령어의 다음 명령어부터 실행 재개 / 디버깅)
- 중단 abort (프로그램 강제 중단)
- 비동기 인터럽트 asynchronous interrupts: 입출력장치에 의해 발생하는 인터럽트 (하드웨어 인터럽트)
하드웨어 인터럽트 처리 순서:
1. 인터럽트 요청 신호
2. 인터럽트 여부 확인
3. 인터럽트 요청을 확인 후 인터럽트 플래그(가능/불가능)를 통해 인터럽트를 받아들일 수 있는지 여부 확인
4. 지금까지의 작업 백업 (스택에 백업 / 메모리의 스택 영역)
5. 인터럽트 벡터(인터럽트 서비스 루틴을 식별하기 위한 정보)를 참조하여 인터럽트 서비스 루틴(인터럽트 핸들러)을 실행
6. 서비스 루틴 실행이 끝나면 백업해둔 작업 복구하여 실행 재개
인터럽트의 종류:
- 막을 수 있는 인터럽트 maskable interrupt
- 막을 수 없는 인터럽트 non maskable interrupt : 가장 우선순위가 높은 인터럽트 (정전, 하드웨어 고장)
'컴퓨터 & 코딩 > CS' 카테고리의 다른 글
[혼공학습단 10기][혼공컴운] 2주차 미션 (0) | 2023.07.04 |
---|---|
[혼공학습단 10기][혼공컴운] 빠른 CPU를 위한 설계 기법 (0) | 2023.07.04 |
[혼공학습단 10기][혼공컴운] 명령어와 주소 지정 방식 (0) | 2023.07.03 |
[혼공학습단 10기][혼공컴운] 컴퓨터 구조의 큰 그림 / 0과 1로 숫자 및 문자 표현하는 방법 (0) | 2023.07.03 |
[혼공학습단 10기][혼공컴운] 1주차 미션 (0) | 2023.06.29 |