Search

컴퓨터구조 1,2강

Performance의 정의

computer technoloogy의 발전
Moore's Law
Makes novel applications feasible
computers in automobiles
cell phones
human genome project
world wide web
search engines
computers are pervasive(만연한)

Moore's Law

하나의 칩에 들어갈 수 있는 트랜지스터의 개수는 매 2년마다 2배씩 늘어날 것이다
→ 실제로는 더 빨리 더 많이 증가하였다 (log Scale로)
⇒ 무어의 법칙이 잘 맞아 떨어졌다
but 현재는 폐기되었다. 더이상 무어의 법칙은 유효하지 않다.
왜? 2000년대 초반 이후 하나의 칩 내에 들어갈 수 있는 트랜지스터 개수가 제한되기 시작했다.

Classes of Computers

personal computers
일반인들이 사용하는 일반적 컴퓨터
일반적 목적, 다양한 소프트웨어
subject to cost/performance tradeoff
server computers
고사양(high capacity, performance, reliability)
Network based
Range form small servers to building sized(작은 것부터 빌딩만한 사이즈까지 다양함)
Super computers
High-end scientific and engineering calculations 아주 고도의 과학적이고 기술적인 계산을 위해서 사용
Highest capability but represent a small fraction of the overall computer market 매우 특수한 목적으로 사용됨 - 컴퓨터 시장을 아주아주아주 조금 차지함
Embedded computers
시스템의 구성요소로 들어가있음
power/performance/cost 한계가 강력하다 - 저전원 저사양 저비용이어야함
some basic definitions

PostPC Era

Personal Mobile Device (PMD)
a.
배터리로 동작
b.
인터넷에 연결
c.
수백달러
d.
스마트폰, 태블릿, 전자안경
Cloud Computing
a.
Warehouse Scale Computers(WSC)
b.
Software as a Service(SaaS)
c.
SW의 일부는 PMD에서, 또 일부는 Cloud에서 실행된다.
d.
Amazon, Google

Performance 이해하기

1.
Algorithm
실행하는 operations수를 결정
2.
Programming language, compiler, architecture 실행하는 명령어 수를 결정
3.
Processor and memory system 얼마나 빠르게 명령어들이 실행되는지 결정
4.
I/O System(including OS) 얼마나 빠르게 I/O operations가 실행되는지 결정

Computer architecture를 발전시킨 8가지

[앞으로 다룰 것]
1.
Moore's Law
2.
Use abstraction to simplify design
3.
Make the common case fast
4.
Performance via parallelism
5.
Performance via pipelining
6.
Performance via prediction
7.
Hierarchy of memories
8.
Dependability via redundancy

Below Your Program

Application software ⇒ 사용자가 실행하는 SW
high-level language로 작성되어있음
System software
Compiler : HLL code(우리가 작성한 코드) 를 machine code로 번역 ⇒ 이렇게 번역한 것이 Application software
Operating System (OS) : service code
Handling input/output
Managing memory and storage
scheduling tasks & sharing resources
Hardware
processor, memory, I/O controllers

Levels of Program Code

1.
High-level language
python, java 등
level of abstraction closer to problem domain - 사람이 좀 더 이해하기 쉬운 정도의 언어
provides for productivity and portability - 생산성과 휴대성 향상
2.
Assembly language
Textual representation of machinary instructions - 기계적 명령(binary 표현)의 텍스트적 표현
아직 사람이 프로그래밍할 수 있을 정도의 레벨이 되긴 하지만 High-level language보다 훨씬 복잡하다
3.
hardware representation
binary digits(bits)
Encoded instructions and data
사람이 이해할 수 없음. 프로세서만 이해 가능

컴퓨터의 요소

모든 컴퓨터의 공통되는 요소 - Desktop, server, embedded
Input/output에 관련된 것
User-interface devices - Display, Keyboard, mouse, ...
저장장치 - Hard disk, CD/DVD, flash(memory), usb(memory) , ...
Network adapters for communicating with other computers

Inside the Processor(CPU)

나중에 더 자세히
1.
Datapath : 말그대로 데이터가 흘러가는 경로. performs operations on data, 데이터를 처리
2.
Control : CPU의 요소들을 컨트롤. sequences datapath, memory, ...
3.
Cache memory: 빠른 연산을 위해 CPU에 달린 작은 SRAM memory. CPU는 이 SRAM memory의 데이터를 통해 연산을 한다. Small fast SRAM memory for immediate access to data

Abstractions

abstractions helps us deal with complexity
hide lower-level detail (문제를 단순화)
컴구에서의 abstractions 활용 - Instruction set architecture(ISA)
= The hardware/software interface
SW와 HW가 independent하도록 만들어주는 역할
SW는 ISA에서 지원해주는 Instructions를 가지고 프로그램이 만들어진 것
HW는 ISA에서 지원해주는 Instructions를 실행하는 것
Application binary interface(ABI)
= ISA + system software interface
어떤 시스템에 존재하는 프로그램이 다른 컴퓨터에서 실행될 수 있는지 없는지의 조건이 된다
A라는 컴퓨터와 B라는 컴퓨터가 같은 ABI를 사용한다면 A라는 컴퓨터에서 실행되는 프로그램은 B라는 컴퓨터에서도 실행이 된다.
Implementation
The details underlying and interface
ISA를 어떻게 실질적으로 구현할 것인가
ISA를 policy라고 볼 수 있고, 실제로 프로세서가 ISA를 지원하기 위해 어떻게 구현되는지가 Implementation
프로세서 내부적으로 구현

A Safe Place for Data

1.
Volatile main memory
(예) DRAM
전원이 꺼지면 instructions와 data를 잃는다(휘발성)
2.
Non-volarile secondary memory(Storage)
전원이 꺼져도 instructions와 data 잃지않음(비휘발성)
(예)Magnetic disk, Flas', Optical

Networks

communication
resource sharing
nonlocal access
a.
Local area network(LAN) : Ethernet
b.
Wide area network(WAN) : the Internet
c.
Wireless network : Wifi, Bluetooth

Technology Trends

그래프를 보면 DRAM의 capacity가 Moore's Law에 맞게 급격히 증가
Electoronic technology는 계속해서 증가
용량과 성능은 증가하고 비용은 감소
비용 대비 성능이 아주 빠르게 증가했다

Semiconductor Technology

semiconductor는 silicon으로 만들어진다
성질을 변환시키기 위해 몇몇 물질을 추가한다
conductors
insulators
switch
간단한 공정 설명...추억의 반도체 공정....
Yield(수율) = wafer당 working dies의 비율
technology의 의미 - 하나의 회로선의 폭이 32nm다(아주 미세) 최신은 10nm정도
thchnology가 작을수록 칩 하나에 많은 프로세서 들어가겠죠
= 원가 절감 = 전력소비 감소

Performance

Performance의 정의

performance를 어떻게 정의하냐에 따라서 어떤 것이 성능이 좋은지가 달라짐
⇒ 잘 정의해줘야함
1.
Response time( latency)
하나의 일을 처리하는데 얼마나 걸리는지
2.
Throughput
단위시간당 몇개의 일을 하는가
(예) 시간당 처리 task수, 시간당 처리 transactions
3.
Response time 과 Throughput은 어떤 것에 어떻게 영향을 받는가
a.
프로세서를 더 빠른 버전으로 대체 → response time 감소 throughput 증가
b.
더 많은 프로세서 추가 → response time 그대로, throughput 증가
⇒ 일단 지금은 Performance 는 Response time 관점으로 생각

Relative Performance

performance = 1/Execution time으로 정의
X는 Y의 n배만큼 빠르다 ⇒
Performance_x / Performance_y = Execution time_y / Execution time_x = n
(예) 한 프로그램을 실행하는데 걸리는 시간
A에선 10s , B에선 15s
Execution time_B / Execution time_A = 15s/10s = 1.5
A가 B보다 1.5배 빠르다

Measuring Execution Time

Elapsed time
말그래도 전체 걸린 시간 = Total response time (모든 영향 포함)
(processing, I/O, OS overhead, idle time 등)
CPU time
(CPU에서만)주어진 일을 처리하는데 걸린 시간
Discounts I/O time, other jobs' shares - 오직 CPU에서만 걸리는 시간 고려
= user CPU time + system CPU time
다른 프로그램들은 CPU와 시스템performance에 대해 다 다르게 영향을 받는다

CPU Clocking

Operation of digit hardware governed by a constant-rate clock
clock period = 한 clock cycle 길이 (s)
clock rate = 초당 clock cycle 개수 = 1 ÷ clock period ( Hz)
clock rate (Hz) = 1 ÷ clock cycle time(clock period)
M = 10^6
G = 10^9
p = pico = 10^-12