컴퓨터의 구분
1. personal computers
랩탑, 데스크탑 등
2. server computers
고사양 고성능, 크기가 다양하다.
3. super computers
고가, 특별한 목적으로만 사용된다.
4. embedded computers(임베디드 시스템)
컴퓨터가 시스템 내부에 들어가 있는 것. 저비용, 저성능 등

메모리에서는 2의n승, n byte사용, 통신에서는 10의 n승 씀(상황에 따라 사용 다르게 함)
PostPC Era
Personal Mobile Device(PMD)
Cloud computing
아마존 구글 등 많은 서비스 제공
실행하는 명령어 수 결정된다.
명령어들을 얼마나 빨리 실행시키는가
얼마나 빨리 I/O시스템을 처리하는가
프로그램
컴파일러: HLL코드를 머신코드로 변환합니다.
운영체제: 서비스 코드(입출력처리, 메모리 관리, 작업예약 및 리소스공유)

inside the Processor
datapath: 데이터를 처리할때 어떤식으로 처리해 나가는지 //4장
control: 각각의 cpu에 있는 컨퍼런스들을 제어 //4장
Cache memory: 빠른 연산을 위해 cpu내부에 SRAM메모리가 있다. //5장
복잡한 문제를 처리 할때, 문제를 단순화 할 수 있다. (쉽게 이해할 수 있음)
컴구에서의 용도: Instruction set Architecture(ISA)
소프트웨어, 하드웨어 인터페이스
Application binary interface(ISA + 시스템 소프트웨어 인터페이스)
의미: ABI에서 실행된 프로그램들은 다른 컴퓨터에서도 실행이 된다.
Implementation: ISA를 어떻게 실제적으로 구현할 것인가
객체지향 프로그래밍의 네번째 개념으로 "추상"이라는 용어의 사전적 의미는 "사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것" 이라 정의한다.
여태 상속이 하위 클래스를 정의하는데 상위 클래스를 사용한 것이라 하면, 추상화는 반대라 생각하면 된다
기존 클래스들의 공통적인 요소들을 추출해 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 개략화(사전 : 대강 추리는 일) 하는 것,상위 클래스를 만들어 내는 것이라 한다.



main memory: 휘발성 주기억장치(끄면 데이터 손실)
secondary memory: 비휘발성 주기억장치
etc. magnetic disk, 플래시 메모리, Optical disk

공정
수율: wafer당 동작하는 dies의 비율
Throughput (처리량) : 단위시간당 수행할 수 있는 Operation의 수
Response Time (처리시간) : 한 Operation을 수행하는데 걸리는 시간
Response time을 줄이면 Throughput은 올라간다
하나의 프로세서를 추가한다면: 시간은 동일, 한번에 2가지 일 할 수 있으므로 Throughput증가

컴퓨터 x는 y보다 빠르다.
1) Elapse Time : Total Response Time, 프로세싱이나 I/O, OS의 오버헤드, 유휴시간 등 모든 실행 시간을 포함하는 Excecution Time을 Elapse Time이라고 한다. 이 Elapse Time은 전체 시스템의 Performance를 결정하게 된다.
2) CPU Time : Processing Time, 오직 프로세싱을 수행하는데 걸린 시간으로 User CPU Time, System CPU Time로 나눌 수 있다. User CPU Time은 유저가 실행한 실행한 소프트웨어를 실행하는데 걸린 시간만을 의미하고, System CPU Time은 시스템이 실행한 소프트웨어까지 포함한 수행시간이다.

Clock Period : 한 기준점 (상승엣지, 하강엣지) 부터 다음 기준점까지의 시간(초)
Clock Rate : Clock Period의 역수(Hz), CPU 성능평가에 있어 자주 쓰이는 단위
clock period는 clock rate와 반비례관계
CPU Time(by Cycle)

cpuTime= 회전수(Cycles) x 1회 회전시간(ClockPeriod)
cpuTime의 시간을 줄여야 한다 = 회전수와 1화 회전시간을 줄인다.
CPU Time(by Instructions)


예시(시험 낸적 있음)


1. instruction count(IC): 프로그램에 의해 결정됨
2. cpi: 전체 걸리는 instruction을 clock으로 나눔
3. clock period: 전체걸린 시간을 clock cycle로 나눔

프로세서가 발전하면서 필요 전력량(Power)은 더 이상 높힐 수 없을 정도로 높아지며 발열문제를 겪고 있었고, 때문에 전력을 유지하면서 미세공정으로 전압 (Voltage)을 낮춰서 트랜지스터를 더 많이 집적하거나(Capacity Load) 클럭(Frequancy)을 더 높게 올리는 방식으로 성능을 개선했다.
전압의 경우 제곱으로 곱해지기 때문에 전압을 2배 낮추면, 전력은 4배 만큼 적어도 동일한 양의 Capacity Load나 Frequancy를 유지할 수 있다. 실제로 지금까지 CPU의 필요 전압은 점점 낮아져왔다. 하지만 어느순간부터 더 이상 전압을 낮추면 전류가 새어버리는 지경에 도달했고, 결국 더이상 전압을 낮출 수 없게 되면서 이 방법으로 성능을 확보하는게 어려워졌다. 이러한 현상을 학계에서는 전력 장벽 (Power Wall)이라고 부른다.
멀티코어프로세서
장점: 여러개의 프로그램을 동시에 돌리는 parallel programming이 가능해짐
(프로그램 자체를 동시에 돌림)
단점: 프로그래밍 하기 어려움
load balancing(두 프로그램의 속도차이가 남)
프로그램간의 통신에 싱크로율이 발생(성능 제약)

특징: I/O시간이 아주 짧고, CPU시간이 아주 길다.(CPU에 중점을 둔다)
정수형과 실수형 프로그램 두가지로 나눠져있음.
1) Performance: ssj_ops/sec
2) Power: Watts (Joules/sec)

위 사진 oversum의 ssj_ops/watts 한 값이 높을수록 전력효육이 좋다.
어떤 작업의 시간 효율을 개선할 때, 전체 작업시간에 대해 P만큼의 작업시간을 차지하는 작업 시간을 S만큼 향상시켰다고 가정하자. 그렇다면 전체 작업 효율은 다음과 같이 향상된다는 법칙이다. 공식은 외울필요도 없다. 간단하게 생각해보자. 전체 1에서
P 를 P/S로 대체한 것뿐이다.
한 부분의 성능을 향상시키려면 그 부분이 전체 성능의 비율과 비례해야 성능을 향상시킬 수 있다. 전체성능중 큰 비중 차지하는 성능을 향상시키는것이 영향을 많이 미친다.
암달의 법칙은 다음과 같은 의미를 지닌다.
1) 전체 작업의 효율을 크게 증가시키고 싶으면 가장 비중이 큰 작업부터 초점을 맞추는 것이 좋음.
2) 일부 작업이 개선의 여지가 없을 때, 전체 작업이 최대 어느정도 개선 효율을 보일지 예측 가능.
로드에 비례하게 전력을 소비할 수 있게끔 만드는게 중요
초당 수백만개의 명령어를 수행한다.
단점: 컴퓨터마다의 아키텍쳐고려하지 않음
컴퓨터마다의 instruction(CPI)고려하지 않음