컴퓨터의 종류
•
Personal Computer (PC)
개인을 위한 컴퓨터. 개인에게 low cost로 좋은 성능을 제공하고 third-party소프트웨어를 제공한다.
first party = 운영체제를 개발한 회사에서 만든 프로그램(ppt,word등)
second-party = 해당회사에서 판매하지만 직접 제작하지는 않은 프로그램
third-party = 상관없는 회사에서 만든 프로그램
•
server
더 큰 프로그램을 multiple user에게 제공함. 네트워크를 통해서만 접근할 수 있음
더 좋은 컴퓨팅 능력을 제공하고 큰 스토리지 IO capacity도 큼
신뢰성을 강조함 = 안정적이라고 신뢰할 수 있어야함
서버 관리자는 소모되는 램이나 그래픽 카드 등 바꿔주고 프로그램을 관리하는 역할을 함
•
슈퍼컴퓨터
과학적, 공학적인 계산을 위해서 사용 비싸서 시장점유율 낮음
•
embedded computers
다른 기기 안에 들어있는 컴퓨터 정해져있는 작업만 수행하도록 되어있다. 로봇, 드론 등에 많이 사용. 사용되는 비용과 소비전력을 줄이는게 중요. lower tolerance for failure.
•
Personal Mobile Device(PMD)
스마트폰 등.
작아야하고 선이 없고 인터넷에 연결이 되어야한다
•
Cloud computing
인터넷을 통해서 서비스를 제공함. 서버가 모여서 만들어짐.
Big Picture
프로세서는 datapath와 control로 구분됨
datapath는 컴퓨터가 사칙연산을 수행하는 방법이고, control은 프로세서가 컴퓨터에게 명령을 내리는 방법.
Interface는 컴파일러를 통해 소스코드를 바이너리로 바꾼다.
LCD = 입출력 담당
배터리, 메인보드 power management IC(전원공급) 등으로 이루어져 있음.
그 외에는 프로세서와 메모리가 존재함. SD카드는 플래시 메모리의 일종이다.
core는 control unit으로 datapath가 들어있으며 datapath에 어떤 작업을 수행할지 명령을 내린다.
datapath는 명령에 따라서 계산을 수행한다.
아이폰도마찬가지로 lcd, batter, 메인보드로 구성됨.
PMIC = power management IC, 오디오 출력기관, 메모리와 A12칩 등이 들어있다.
L2 bank = 캐시메모리이며 GPU, NPU는 on-device AI 처리하기 위해서 들어감.
NPU는 neural processing unit으로 딥러닝 AI를 돌리기 위한 칩.
primary/main 메모리는 휘발성 메모리로 전원이 꺼지면 사라진다. 프로그램이 돌고 있을 때 메모리를 홀드하기 위한 용도로 사용되는 메모리이다.
메인 메모리는 DRAM IC(직접회로)를 이용해서 만들어졌으며 Dynamic, Random Access 메모리이다.
데이터를 홀드하기 위해서는 주기적으로 데이터를 리프레시하기 위해서 전원을 공급해줘야하며 그렇지않으면 시간이 지나면서 전하가 decrease되어서 신호가 휘발된다.
비휘발성 메모리는 secondary memory라고 부르며 실행되지 않을때 프로그램을 저장하는 공간이다
플래시 메모리, HDD(하드디스크) 등이 해당한다. 플래시메모리는 DRAM보다 싸고 느리지만 HDD보다 훨씬 빠르고 모바일 디바이스에 많이 사용된다.
SSD는 플래시메모리 여러 개 연결해서 구현된 메모리이다.
7 Great ideas in Computer architecture
•
Moore’s law
무어의 법칙 = 1년에 반도체에 들어가는 트랜지스터 집적도가 2배가 된다는 법칙
2013년도 이후로 더이상 성립하지 않는다
•
Abstraction to Simplify Design
•
performance via parallelism
•
performance via pipelining
•
performance via prediction
•
메모리의 계층화
•
Dependability via Redundancy
신뢰성을 위해서 필요한 공간보다 더 큰 메모리 공간을 둔다
Below your program
•
Application software
high level language(C, Java등)으로 작성된 소프트웨어
•
System Software
운영체제: IO operation handling, 메모리 관리, 스케줄링 등.
컴파일러: high level language로 쓰인 코드를 어셈블리로 바꿔준다
이후 어셈블러가 바이너리로 어셈블한다.
옛날에는 C로 컴파일해서 사용하면 컴파일러의 최적화 성능이 떨어져서 어셈블리어로 직쩝 짰다.
•
하드웨어
프로세서, 메모리, IO Controllers
Building processors and Memory
트랜지스터 하나는 on,off 스위치랑 똑같다. on = 1 off = 0
트랜지스터 하나가 바이너리 하나를 차지함
실리콘 주괴를 고열로 녹여서 모양을 잡고 잘라서 원형으로 자른다. 실리콘이 100프로 순도가 아니라 천천히 ingot을 돌리면 불순물들이 아래로 내려간다. 불순물들이 아래로 모이는걸 자름 그리고 식히면 순도 100프로 웨이퍼가 만들어지고 웨이퍼에 패턴을 넣는다.
테스트를 통해서 불량인 부분을 자르고 패키지를 만들고 다시 테스트해서 불량인 부분 있으면 또 버린다
그럼 반도체 칩이 완성된다.
수율 = 웨이퍼 하나를 가지고 있다면 얼마나 고순도의 반도체를 많이 뽑아내는지를 나타내는 수치.
수율 100프로면 불량 없음
Cost per die 계산법
웨이퍼는 동그랗게 생겼고 die는 사각형이기 때문에 approximation으로 계산한다.
수율 계산식은 실험적으로 발견한 값이다.
Performance 측정
performance = execution time이 짧을때 높다
execution time y / execution time x = n
Execution time을 계산하는 방법으로는 Elapsed Time으로 계산하는 방법과 CPU time으로 계산하는 방법이 있다.
Elapsed time: I/O, idle time, OS overhead등을 포함한 response에 걸리는 시간
CPU time: I/O, 다른 job의 share는 제외하고 주어진 job을 processing하는데 걸린 시간.
Execution time을 계산할 때는 일반적으로 CPU time을 사용한다.
Clock cycle
A clock cycle, or simply a "cycle," is a single electronic pulse of a CPU, periodically showing high and low logic states. During each cycle, a CPU can perform a basic operation such as fetching an instruction, accessing memory, or writing data.
rate은 clock period의 역수(GHz). cpu 클럭수가 빠를수록 더 많은 양을 처리할 수 있다.
컴퓨터는 데이터 전달하고 받고 덧셈계산 등 모든 작업을 한 클락 사이클 단위로 수행한다.
clock period가 짧을수록 computation을 더 많이 할 수 있고 단위시간당 할 수 있는 일의 양이 많다.
rising edge에서 일어나는 update state는 레지스터 값의 업데이트 등이 일어난다.
CPU Performance
clock period의 역수를 취하면 rate가 된다.
performance는 CPU execution time의 역수.
CPI: clock cycles per instruction. 한 instruction당 필요한 평균 clock cycle 수를 나타낸다.
ISA: Instruction Set Architecture. 어떤 set을 쓰냐에 따라서 instruction 수가 달라진다.
컴파일러도 instruction수에 영향을 미친다. 얼마나 최적화를 잘 수행하는 컴파일러인가에 따라 다르다.
CPI는 하드웨어의 성능에 따라서 결정된다.
클럭 사이클 수 / 클럭 Rate = instruction count * cpi / clock rate
Example1: which computer is faster, and how much?
– Computer A: clock cycle time = 250ps, CPI = 2.0
– Computer B: clock cycle time = 500ps, CPI = 1.2
– Two computers have the same ISA.
CPU time = instruction count * CPI * Clock Cycle time이므로
A의 경우 i * 2 * 250 = 500i
B의 경우 1.2 *500 = 600i
따라서 A가 1.2배 더 빠르다.
토탈 cycle 수를 계산하면 1번은 10, 2번은 9이다.
1번 코드의 instruction count가 더 짧지만
각 CPI는2, 1.5이고 CPI가 크면 performance는 작아진다. 따라서 1번이 2번보다 1.33배 빠르다
•
알고리즘: Instruction count, CPI영향.
알고리즘이 무겁다는 것은 instruction수가 많다는 것이고 CPI가 높아진다는 것이다.
•
프로그래밍 언어: Instruction count, CPI영향.
똑같은 코드라도 파이썬, C는 코드의 양이 달라지며 자바는 간접호출을 요구하기 때문에 C보다 CPI가 크다.
•
컴파일러: Instruction count, CPI 영향.
컴파일러가 어떤 버전인지에 따라 어떤 instruction을 사용할지도 달라지며 성능에 영향을 준다.
•
ISA: instruction count, CPI, clock rate 영향.
ISA의 설계에 따라서 프로세서의 clock rate도 영향을 준다.
Power trends
열이 CPU performance에 직접적인 영향을 준다. power가 커져서 열이 많이 발생하면 저항때문에 성능이 잘 안 나온다. 따라서 성능을 높이기 위해서 clock rate를 유지하면서 전력을 떨어뜨리기 위해서 저전력 cpu가 나왔다. USB C타입, 썬더볼트 등을 도입하면서도 power가 내려갔다.
practical power limit은 100정도이다.
Power 계산방법
frequency switched는 clock rate를 의미한다. 빨리 움직이면 전력소비가 크다
트랜지스터 하나하나가 capacitor이다. 집적되는 수가 많으면 전력소비가 커진다.
clock rate는 천배가 넘게 증가했는데 power는 왜 30배만 증가한 이유는 voltage가 내려갔기 때문이다.
voltage는 square에 비례하기때문에 줄이면 효율이 좋기 때문에 5v를 1v까지 줄였다.
하지만 전압도 누설전류가 발생할 수 있기 때문에 무한정으로 낮출수는 없다.
따라서 더 쿨링할 수 없는 제한선이 생기게 되는데 그 선을 power wall이라고 부른다.
일반적으로 프로세서에 로드가 100% 부과되는 경우는 거의 없기 때문에 로드와 전력이 비례하게 설계하는것이 중요하다.
암달의 법칙
execution time을 measure하는 이유는 performance는 실행시간의 역수이기 때문.
improvement가 영향을 주는 부분과 주지 않는 부분이 있기 때문에 주는곳만 나눠줘야 한다.
따라서 performance가 무한히 상승할수는 없다는 법칙이다.
결과: 불가능. improvement가 무한대여야함
MIPS = million instruction per second. 클수록 성능이 좋다.



















