2회독(讀)이니까 그림 그리는데 공을 들여보자!!
하면서 draw.io와 excalidraw를 사용하고 있다.
저 갬성은 책 그대로를 살려야 해!!(이번 주는 파이프라인이 그랬다) 싶은 건 유튜브도 보고 있으니까 캡...쳐...
다시 읽으면서 이런 내용도 있었구나 기함하고 있는데,
이번에도 100% 소화하기 어려우니 4-5회독 정도를 각오해야 할 것 같다.
2주차
- Chapter 04 ~ 05
- 기본숙제: p. 125의 확인 문제 2번, p. 155의 확인 문제 4번 풀고 인증하기
- 추가숙제: Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기
플래그 종류 | 사용 예시 |
---|---|
부호 플래그 | 부호 플래그가 1이면 계산 결과는 음수, 0이면 양수를 의미. |
제로 플래그 | 제로 플래그가 1이면 연산 결과는 0, 0인 경우는 0이 아님을 의미한다. |
캐리 플래그 | 캐리 플래그가 1일 경우 올림수나 빌림수가 발생한 경우, 0이면 발생하지 않았음을 의미한다. |
오버플로우 플래그 | 연산 결과가 연산 결과를 담은 레지스터보다 큰 상황이 발생하면 1, 0이면 발생하지 않았음을 의미한다. |
인터럽트 플래그 | 인터럽트가 가능하면 1, 불가능하다면 0 |
슈퍼바이저 플래그 | 커널 모드로 실행중이면 1, 사용자 모드로 실행 중이면 0. |
제어 신호를 보내고, 명령어를 해석하는 장치
CPU마다 이름, 크기, 종료가 매우 다양함. 책에 소개된 것은 많은 CPU가 공통으로 포함하고 있는 레지스터들이다.
low level의 개발일수록 레지스터 안에 어떤 값들이 담기는지 관찰하는 일이 많다!
프로그램 카운터(PC:Program Counter):
명령어 포인터(IP:Instruction Pointer)라고도 부르는 CPU도 있음.
메모리에서 읽어 들일 명령어의 주소 저장
명령어 레지스터(IR:Instruction Register):
방금 메모리에서 읽어 들인 명령어(해석할 명령어)를 저장하는 레지스터
메모리 주소 레지스터(MAR:Memory Address Register):
메모리에 주소를 저장하는 레지스터
메모리 버퍼 레지스터(MBR:Memory Buffer Register):
메모리와 주고받을 값을 저장하는 레지스터
CPU가 정보를 데이터 버스로 주고받을 때 거치는 레지스터
MDR(Memory Data Register)이라고 부르기도 함
순차적인 실행 흐름이 끊기는 경우
- 특정 메모리 주소로 실행 흐름을 이동하는 명령어 실행 시
(JUMP, CONDITIONAL JUMP, CALL, RE)- 인터럽트 발생 시.
플래그 레지스터: 연산 결과 or CPU 상태에 대한 부가 정보 저장
범용 레지스터(general purpose register): 데이터와 주소 모두 저장
스택 포인터: 스택 최상단의 위치를 저장. 스택이 어디까지 차 있는지에 대한 표시
베이스 레지스터(base-register addressing mode):
오퍼랜드와 베이스 레지스터의 값을 더하여 유효 주소를 얻는 방식
변위(displacement)란?
- 메모리 주소를 계산할 때 기준 주소(base address)로부터 떨어진 거리
- 의미는 offset 과 같지만, offset이 더 넓게 쓰이고 displacement는 주로 어셈블리의 메모리 참조 방식에서 많이 쓰인다.
오퍼랜드 필드의 값(변위)과 프로그램 카운터의 값을 더하여 유효 주소 얻기
사실 {실행할 명령어 -1} 번지는 밖에 썼어야 했는데..;
오퍼랜드 필드의 값(변위)과 베이스 레지스터의 값을 더하여 유효 주소 얻기
명령어: cpu가 직접 이해하고 실행하는 가장 작은 단위의 동작
- 어셈블리어의 한 줄이라고 생각하면서 공부하면 이해하기가 좋을 것 같다.
CPU 작업을 방해하는 신호.
cpu가 얼른 처리해야 할 다른 작업이 생겼을 때
주로 입출력 장치에 의해 발생하는 인터럽트
알림과 같은 역할
하드웨어 인터럽트. 입출력 작업 도중에도 효율적으로 명령어를 처리하기 위해.
하드웨어 인터럽트 처리 순서
1) 입출력 장치가 CPU에 인터럽트 요청신호를 보냄(지금 끼어들어도 되나요? 물어봄)
2) CPU가 인터럽트 요청을 확인. 인터럽트 플래그를 통해 받아들일 수 있는지 여부 확인
3) 인터럽트를 받아 들일 수 있다면 CPU는 지금까지의 작업 백업
4) CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴 실행
5) 인터럽트 서비스 루틴 실행이 끝나면 백업해 둔 작업을 복구하여 실행 재개
인터럽트 서비스 루틴(ISR: Interrupt Service Routine): 인터럽트 핸들러라고도 부른다. 어떤 인터럽트가 발생했을 때, 해당 인터럽트를 어떻게 처리하고 작동해야 할지에 대한 정보로 이루어진 프로그램. 메모리에 저장(프로그램이니까).
인터럽트 벡터: 인터럽트 서비스 루틴을 구분하기 위한 정보.(cpu가 해당 인터럽트 주소의 시작 주소를 알기 위해서!) CPU는 하드웨어 인터럽트 요청을 보낸 대상으로부터 데이터 버스를 통해 인터럽트 벡터를 전달받는다.
CPU가 인터럽트를 처리한다
: 인터럽트 서비스 루틴을 실행하고, 본래 수행하던 작업으로 다시 돌아온다.
cf. 막을 수 없는 인터럽트(non mask interrupt, NMI): 치명적인 하드웨어 오류 등 반드시 처리해야 하는 경우.
개념: 클럭, 코어, 스레드
빠른 CPU를 만드는 설계 기법: 멀티 코어, 멀티스레드
1.하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위
(cf. 적절한 이미지를 찾아달라고 퍼플렉시티에게 시켰는데, 그림을 생성해주었다.. 잘 만들었으니 써야지..!)
2.소프트웨어적 스레드: thread(computing), 하나의 프로그램에서 독립적으로 실행되는 단위
CPU를 한시도 쉬지 않고 작동시키는 명령어 병렬 처리 기법
일반적인 과정
1) Insctuction Fetch 명령어 인출
2) Instruction Decode 명령어 해석
3) Execute Instruction 명령어 실행
4) Write Back 결과 저장
명령어 파이프라인/파이프라이닝
CPU 내부에 여러 개의 명령어 파이프라인을 포함한 구조
CPU 속도를 향상시키기 위한 과거의 방법 중 하나
슈퍼스칼라 프로세서, 슈퍼스칼라 CPU: 매 클럭 주기마다 동시에 여러 명령어를 인출할 수도, 실행할 수 있음
명령어 집합(구조)(ISA:Instruction Set Architecture)
CPU가 이해할 수 있는 명령어들의 모음
CPU마다 ISA가 다를 수 있다.
똑같은 프로그램임에도 CPU가 이해하고 실행할 수 있는 명령어가 달라 어셈블리어도 달라진다.
하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속
ISA가 다르면 ➡️ 제어장치가 명령어를 해석하는 방식, 사용되는 레지스터의 종류와 개수, 메모리 관리 방법 등이 함께 달라진다.
명령어 집합(ISA)의 두 축
CISC Complex Instruction Set Computer | RISC Reduced Instruction Set Computer |
---|---|
복잡하고 다양한 명령어 | (장점) 단순하고 적은 명령어 |
가변 길이 명령어(규격화 x) | 고정 길이 명령어(규격화) |
다양한 주소 지정 방식 | 적은 주소 지정 방식 |
(장점) 프로그램을 이루는 명령어 수가 적다 메모리 절약 | (단점) 프로그램을 이루는 명령어 수가 많다 (명령어 종류가 적기 때문에 그렇다) |
여러 클럭에 걸쳐 명령어 수행 | 1클럭 내외로 명령어 수행 |
(단점) 자주 사용하는 명령어만 쓰인다. | (장점) load-store 구조: 메모리에 직접 접근하는 명령어를 load, store로 제한(단순화, 메모리 접근 최소화 -> 레지스터 활용) |
(단점) 파이프라이닝이 어렵다 명령어 복잡 & 명령어 수행 시간이 정형화x CPU의 성장 한계 | (장점) 파이프라이닝이 쉽다 |
(예) x86(32bit), x86-64 | (예) ARM |
답: 코어
CISC(intel 계열) 와 RISC(아무래도 MAC..?)를 대표하는 현재 노트북은 무엇일까?
재미삼아 chatgpt 4.1 에게 물어보았고 24년도 기준으로 다음과 같이 답했다.
(모델명을 하나하나 검색해서 보았는데 나름 알맞은 대답이었다)
최근 주변의 맥북 사용자들을 보면서 전력 효율이 좋고, 가볍고, 최적화가 잘 되어 있어 이래서 쓰는구나 감탄 했었는데..
CISC도 RISC처럼 효율을 높이기 위한 변화가 활발히 이뤄지는 중이라고 한다.
구분 | 대표 모델 | CPU (예시, 실제 탑재 모델별 약간 차이 있음) |
---|---|---|
CISC | Dell XPS 13/14/16 | Intel Core Ultra 7 155H / Ultra 9 185H |
Lenovo ThinkPad X1 Carbon Gen 12 | Intel Core Ultra 7 155H | |
ASUS ZenBook Pro 14 OLED | Intel Core Ultra 9 185H or AMD Ryzen 9 8945H | |
RISC | MacBook Pro 14/16 (2024) | Apple M3 / M3 Pro / M3 Max |
MacBook Air 13/15 (2024) | Apple M3 | |
Surface Laptop 7th (2024) | Qualcomm Snapdragon X Elite |