반응형
이 글은 책 컴퓨터 밑바닥의 비밀 chapter 4.7 의 내용을 읽고 요약한 글입니다.
4.7.1 복잡함을 단순함으로
- 마이크로코드의 설계 아이디어: 복잡한 기계 명령어를 CPU 내부에서 비교적 간단한 기계 명령어로 변환하는것으로 컴파일러는 이 프로세스를 알지 못함
- 마이크로코드에 버그가 있으면 컴파일러는 이를 피하기 위해 할 수 있는 일이 없음
또한 복잡한 기계명령어 하나가 같은 일을 하는 간단한 명령어 여러개보다 느리게 실행된다는 사실을 발견
4.7.2 축소 명령어 집합의 철학
- 복잡 명령어 집합(Complex Instruction Set Computer, CISC) 에 대한 반성으로 축소 명령어(Reduced instruction Set Computer, RISC) 집합의 철학이 탄생
3가지 측면을 주로 반영
1. 명령어 자체의 복잡성
- 복잡한 명령어를 제거하고 간단한 명령어 여러개로 대체
- 마이크로코드 설계가 필요없으며 컴파일러에서 생성된 기계 명령어의 CPU 제어 능력이 크게 향상됨
- 명령어 집합을 줄인다는 아이디어는 명령어 집합의 명령어 개수를 줄이다는 의미가 아니라, 하나의 명령어당 들여야 하는 연산이 더 간단하다는 의미
2. 컴파일러
- 컴파일러가 CPU에 대해 더 강력한 제어권을 갖음
- CPU는 더 많은 세부사항을 컴파일러에 제공함
3. LOAD/STORE 구조
- 복잡한 명령어 집합에서는 기계 명령어 하나로 메모리에서 데이터를 가져오고(IF), 작업을 수행하고(EX), 해당 데이터를 메모리에 다시 쓰는 (WB) 작업을 모두 할 수 있음
- 축소 명령어 집합의 명령어는 레지스터 내 데이터만 처리할 수 있으며, 메모리 내 데이터는 직접 처리할 수 없음
Q. 누가 메모리를 읽고 쓰는 것인가?
- LOAD와 STORE라는 전용 기계 명령어가 메모리의 읽고 쓰기를 책임짐
- 다른 명령어는 CPU 내부의 레지스터만 처리
4.7.3 CISC, RISC 차이
두 숫자가 각각 메모리 주소 A와 주소 B에 저장된 상태에서 두 숫자를 곱한 값을 먼저 계산한 후 결과를 다시 메모리 주소 A에 기록 한다고 가정
(1) CISC의 경우
- CISC는 적은 수의 기계 명령어로 가능한 한 많은 작업을 수행하는 것
- MULT(iplication)이라는 기계 명령어가 있을 수 있으며 명령어를 실행할 때 다음 동작이 수행되어야 함
- 메모리 주소 A의 데이터를 읽어 레지스터에 저장
- 메모리 주소 B의 데이터를 읽어 레지스터에 저장
- ALU가 레지스터 값을 이용하여 곱셈 연산 수행
- 곱셈 결과를 다시 메모리 주소 A에 씀
MULT A B
a = a * b; // 고급 언어와 매우 유사. 이런 설계는 고급 언어와 기계 명령어 사이의 차이를 줄임
(2) RISC의 경우
- 메모리 주소 A의 데이터를 읽어 레지스터에 저장
- B의 데이터를 읽어 레지스터에 저장
- ALU가 레지스터 값을 이용하여 곱셈 연산 수행
- 곱셈 결과를 다시 메모리에 씀
- RISC에서는 LOAD, PROD, STORE 명령어를 사용하여 작업을 단계별로 완료해야 함
- LOAD: 메모리에서 레지스터로 데이터를 적재
- PROD: 두 레지스터에 저장된 숫자의 곱셈 연산을 수행
- STORE: 레지스터의 데이터를 다시 메모리에 씀
어셈블리어 코드
LOAD RA, A
LOAD RB, B
PROD RA, RB
STORE A, RA
- 복잡 명령어 집합을 사용하는 프로그램보다 기계 명령어를 더 많이 사용
- RISC의 의도는 프로그래머가 직접 어셈블리어로 코드를 작성하는 것이 아니라, 이 작업을 컴파일러에게 맡기고 컴파일러가 구체적인 기계 명령어를 자동으로 생성하게 하는 것
4.7.4 명령어 파이프라인
- 위 어셈블리어 코드는 각 명령어가 매우 간단하여 실행 시간이 모두 거의 동일하여 파이프라인 기술을 통해 실행 효율을 높일 수 있음
4.7.5 천하에 명성을 떨치다
- 1980년대 중반 RISC 기반의 CPU가 CISC 기반 CPU를 압도
반응형
'OS' 카테고리의 다른 글
[책리뷰] 컴퓨터 밑바닥의 비밀: ch5.2 어떻게 캐시 친화적인 프로그램을 작성할까? (0) | 2024.09.15 |
---|---|
[책리뷰] 컴퓨터 밑바닥의 비밀: ch5.1 캐시, 어디에나 존재하는 것 (0) | 2024.09.14 |
[책리뷰] 컴퓨터 밑바닥의 비밀: ch4.6 CPU 진화론(상): 복잡 명령어 집합의 탄생 (0) | 2024.09.08 |
[책리뷰] 컴퓨터 밑바닥의 비밀: ch4.2 CPU는 유휴 상태일 때 무엇을 할까? (0) | 2024.09.08 |
[책리뷰] 컴퓨터 밑바닥의 비밀: ch4.1 이 작은 장난감을 CPU라고 부른다 (0) | 2024.09.01 |