Chapter1. Computer Abstractions and Technology (컴퓨터 추상화와 기술)
Risc-V와 MIPS의 차이
Risc-V
- 2010년 캘리포니아 대학교(버클리)에서 설계한 오픈 소스 명령어 집합 구조(ISA == open-source instruction set architecture)
- 기존의 독점적인 ISA의 한계와 폐쇄성에 대응하여 개발됨
MIPS
- 1980년대 스탠포드 대학교 연구원들이 개발한 RISC 기반의 명령어 집합 구조
- 가전제품 및 임베디드 시스템을 포함한 다양한 산업에서 널리 사용됨
RISC-V의 장점
- 오픈소스 ISA -> 하드웨어 및 소프트웨어 개발에서 맞춤화, 유연성, 혁신을 가능하게 함 + 협업과 커뮤니티 중심의 개선을 촉진하여 독점 아키텍처에 대한의존 낮아짐
- 다양한 산업 및 응용분야에서 활용
임베디드 시스템, 사물인터넷(IoT), 고성능 컴퓨팅, 서버 등에서 주목받음 (오픈소스이므로 컴퓨터 외 다른 영역에도 활용)
- 고정된 수의 레지스터 but 정수와 부동소수점 연산을 위해 별도의 레지스터 파일 사용! (x0-x31) => 분리된 레지스터 인해 연산 100배 이상 fast(인공지능에서 쓰이는 이유)
vs MIPS
- not 오픈소스 -> 맞춤화 및 수정이 제한됨
- 네트워킹, 통신, 가전제품, 디지털 미디어 응용 분야에서 강력한 입지 (not 오픈소스이므로 컴퓨터공학 강세한 부분에서 쓰임)
- 고정된 수의 레지스터 but 정수와 부동소수점 연산을 위해 통합된 레지스터 파일 사용! ($0-$31)
Below Your Program(프로그램의 하위 계층)

- Application Software
- 고급 언어(HLL == high-level)로 작성됨
- 시스템 소프트웨어(System software)
- 컴파일러(compiler): HLL을 기계어로 변환
- 운영체제(operating system)
- 입력과 출력 처리
- 메모리와 저장소 관리
- 작업 스케쥴링 & 자원 공유
- 하드웨어(Hardware)
- 프로세서, 메모리, I/O 컨트롤러
Software의 적용
컴퓨터 자체의 운영과 관련x인 특정 작업을 수행하기 위해 설계된 software로, 최종 사용자가 사용함!
- 3가지 유형
- Desktop App(데스크톱 앱): 개인용 컴퓨터, 노트북에서 실행되는 앱
- Web App(웹 앱): 인터넷과 인트라넷 같은 네트워크로 접근하는 앱
- Mobile App(모바일 앱): 스마트폰, 태블릿 등 기타 모바일 기기에서 실행되도록 설계된 앱
System Software

하드웨어와 직접적으로 관련된 프로그램으로, 하드웨어를 제어하고 활용하는 작업을 수행함
- 3가지 유형
- 시스템 제어 프로그램: 프로그램의 실행 제어, 컴퓨터의 저장 및 처리 자원을 관리, 기타 관리 및 모니터링 기능을 수행 ex. OS(운영체제)
- 시스템 지원 프로그램: 다른 컴퓨터 프로그램과 사용자에게 일상적인 서비스를 제공 ex. 유틸리티 프로그램
- 시스템 개발 프로그램: 응용 프로그램을 생성하는 데 도움 ex. 컴파일러, 어셈블러
Program Code의 Level

- HLL(고급언어) : 사람이 이해할 수 o
- 생산성과 이식성(portability)을 제공함
- 문제 도메인과 가까운 추상화 수준
- 어셈블리어
- 하드웨어 표현
- 이진수(bit)로 표현
- 인코딩돤 명령어와 데이터
🚨순서
우리가 작성한 코드(c언어-HLL) ---(컴파일러)---> 어셈블리어 ---> 2진수 기계어
Volatile vs Non-volatile 기억장치 차이

-
Volatile Main Memory(휘발성 주기억장치)
-전원이 꺼지면 명령어와 데이터 사라짐 ex. 캐시메모리
-> 빠르게 동작할 수 있게 함!
-
Non-Volatile Secondary Memory(비휘발성 주기억장치)
- Magnetic disk 자기디스크 ex. HDD
- Flash memory 플래시메모리 ex. USB, SD
- Optical disk (CDROM, DVD) 광학디스크 ex. CD
공식
집적 회로 비용(Integrated Circuit Cost)

- 면적과 결함률(defect rate)의 비선형 관계
- wafer의 비용, 면적은 고정되어 있음
- defect rate은 제조 공정에서 결정됨
- die 면적은 아키텍쳐와 회로 설계에 의해 결정됨

- 성능 = 1 / 실행시간
- X는 Y보다 n배 더 빠르다 (== X의 성능이 n
Define Performance = 1/Execution Time
(성능 정의: 성능 = 1 / 실행 시간)
CPU Clocking

- 디지털 하드웨어의 동작은 일정한 속도의 clock에 의해 제어됨
- clock period(클럭 주기): clock 사이클의 지속 시간
-ps -> ns (250ps = 0.25ns = 250×10¹²s)
- clock frequency(rate) (클럭 주파수, 속도): 초 당 사이클 수
Clock (cycles)
-GHz -> MHz (4.0GHz = 4000MHz = 4.0×10⁹Hz)
CPU Time

- 성능 개선하려면?
- clock cycle의 수 줄임
- clock rate 높임
- 하드웨어 설계자는 클록 사이클 수와 속도를 잘 절충해야함 (trade-off)
Instruction Count and CPI (명령어 수와 CPI)

- 프로그램의 명령어 수
- 명령어당 평균 사이클 수, CPI(cycles per instruction)
- CPU 하드웨어에 의해 결정됨
- 서로 다른 명령어들이 다른 CPI를 가질 경우, 명령어 구성에 따라 평균 CPI가 영향받음

서로 다른 명령어가 서로 다른 사이클 수를 요구하는 경우

- 성능에 영향을 미치는 것
- 알고리즘: IC(명령어 수) (가끔 CPI에도 영향 줌)
- 프로그래밍 언어: IC, CPI
- 컴파일러: IC, CPI
- ISA(명령어 집합 아키텍쳐): IC, CPI, 클록 사이클 시간
Power Trends

암달의 법칙(Amdahl's Law) :성능 향상의 한계
Pitfall(함정): 컴퓨터의 한 부분을 개선하면, 전체 성능이 비례하여 향상될것이라고 기대하는 것.
즉, 시스템의 일부를 개선한다고 해서 전체 성능이 항상 비례해서 개선되는 것은 아니라는 것을 설명하는 법칙
(== 즉, 성능 개선을 할 수 있는 부분이 작으면, 해당 부분을 아무리 빠르게 해도 전체 시스템 성능에는 큰 영향을 미치지 않는다는 것을 의미)

ex. 곱셈 연산이 100초 중 80초를 차지하는 경우, 전체 성능을 5배 향상시키기 위해서는 곱셈 성능을 얼마나 개선해야할까?

=> 불가능하다는 결론이 나옴
즉, 결론은 자주 발생하는 case를 빠르게 처리하는 것이 필요함