컴퓨터의 구성
- 어플리케이션 소프트웨어
- 시스템 소프트웨어
- compiler
-HLL(high-level language) code를 기계어로 변환
- Operating System(OS)
-사용자 프로그램과 하드웨어 간의 인터페이스 역할
-각종 서비스와 감독 기능
-기본적 입출력 작업의 처리
-보조기억장치 및 메모리 할당
-컴퓨터를 동시에 사용하는 여러 응용들 간의 컴퓨터 공유 방법 제공
- 하드웨어
-processor, memory, I/O controllers(Input/output)
프로그램 언어 레벨
-
high-level language
- c, c++,자바와 같이 단어와 수식으로 구성되는 이식성 있는 언어.
컴파일러가 어셈블리어로 번역할 수 있다.
-
Assembly language
- 기계 명령어를 기호로 표현한것
- 어셈블러가 기계어로 번역해준다.
-
Hardware representation
컴퓨터의 구성요소
- 모든 컴퓨터의 구성요소
- I/O 요소
- User-interface 장치
- 저장장치
- 네트워크 어뎁터
CPU (프로세서)
- 프로그램의 지시대로 일을 하는 부분, 가장 역동적
- 숫자를 더하고, 검사하고, 입출력장치에 신호를 보내 작동을 지시
- 데이터패스(근육) + 제어 유닛(두뇌)
- 데이터패스 : 연산수행
- 제어 유닛 : 명령어가 뜻하는 바에 따라 데이터패스, 메모리,입출력 장치가 할일을 지시
추상화
- 제일 중요한 추상화중 하나는 하드웨어와 최하위 소프트웨어 간의 인터페이스이다. --->명령어 집합 구조(ISA)
- ISA(Instruction set architecture)
- 이진 기계어 작성을 위해 프로그래머가 알아야할 것들이 모두 포함
- 입출력 작업, 메모리할당 및 기타 저수준 시스템 기능의 세부사항, 보통 운영체제(OS)가 감추어서 프로그래머가 이러한 세세한 걱정 안해도 되게 해준다.
- ABI(application binary interface)
- ISA + System software interface(운영체제 인터페이스)
- Implementation(구현)
메모리
- Volatile main memory
- 전원이 꺼지면 instruction과 data가 손실됨
- DRAM
- Non-volatile secondary memory
- Magnetic disk
- Flash memory
- Optical disk(CDROM,DVD)
네트워크
-
통신
-
자원 공유
- 컴퓨터마다 입출력장치를 따로따로 갖출 필요 없이 네트워크상의 모든 컴퓨터가 입출력 장치를 공유할 수 있다.
-
LAN(Local area network)
- Ethernet : 근거리 네트워크, 같은 건물에서 쓰기에 유리,
거리: 1km, 초당 40기가비트
-
WAN(Wide area network)
- Internet: 원거리 네트워크, 여러 대륙 연결 world wide web 지원, 광섬유로 구성, 통신회사에서 임대해줌
-
Wireless network
프로그램 컴파일
- 프로그램
- 컴파일러
- 프로그램을 어셈블리어로 변환
- parsing : compile 과정에서 특정 프로그램 언어의 문법을 검사하는 것
- 최적화
Assembly & Machine Language
- 어셈블리어
- 기계어
- 기계가 읽을 수 있는 표현
- 1,0(보통 16진수로 보여줌)
- 어셈블러
Instruction Codes
- 프로그램
- (machine) instructions
- 특정한 operation을 하라고 컴퓨터에게 알려주는 bit로 된 그룹
- instruction들은 메모리에 저장된다.
Example of Instruction Codes
- Load
- 메모리에 저장된 data를 register로 load 한다.
- Store
- register에 있는 data를 memory에 저장한다.
- Add
- Increment
- register에 저장된 한 숫자를 증가시킨다.
- Clear
컴퓨터가 instruction들을 실행하는 방법
- 메모리에 저장된 instruction
- 메모리로부터 instruction을 읽어서 CPU로 간다.
- 프로세서(program counter)<------> main memory(program A,data A)<-------> hard disk(program A)
- main memory에 processor 가 접근해서 data를 load/store를 한다.
-hard disk도 main memory에 접근해서 I/O 를 한다.
성능
application 성능 지표
- Response Time
- Throughput(처리량)
- Performance = 1/Execution Time
- X 가 Y보다 n 배 빠르다.
- PerformanceX / PerformanceY = Execution timeY / ExecutionX = n
- Example : 프로그램 실행하기 위해 걸리는 시간
- A : 10초, B: 15초
- Execution TimeB / Execution TimeA = 15s / 10s = 1.5
- A가 B보다 1.5배 빠르다.
- Elapsed time
- 시작 ~ 끝까지 걸리는 시간
- processing, I/O, OS overhead(OS를 사용한다는것), idle time(공회전 시간)
- System performance를 결정
- CPU time
- CPU만 사용하는데 걸린시간
- I/O time, 다른 프로그램 실행하는데 걸리는 시간 제외
- 프로그램에 컴퓨터 시스템의 성능 중 민감하게 영향을 받는 부분이 서로 다르다
CPU CLOCK
- digital system이 operate하고 있다.(사람 심장처럼)
- clock cycle : clock의 시간 간격
- clock period : 한 clock cycle에 걸리는 시간
- ex)250ps=0.25ns=250×10−12s
- clock frequency(rate): 초당 cycles수
- ex)4GHz = 4000MHZ = 4.0×109Hz
CPU Time
-
CPU execution time(CPU time)
- CPU가 일처리하는데 걸리는 시간
- I/O, 다른 프로그램 실행하는데 걸리는 시간 제외
-
CPUtime=CPUClcokCycles×ClockCycleTime=ClockRateCPUClockCycles
-
사용자 CPU시간
-
시스템 CPU시간
- 프로그램의 수행을 위해서 운영체제가 소비한 CPU시간
-
문제
- 2GHz 클럭의 컴퓨터 A에 10초에 수행되는 프로그램이 있다.
이 프로그램을 6초 동안에 실행할 컴퓨터B를 만들고자 한다. 클럭속도는 얼마든지 빠르게 만들 수 있는데, 이렇게 하면 CPU다른 부분의 설계에 영향을 미쳐 같은 프로그램에 대해 A보다 1.2배 많은 클럭 사이클이 필요하게 된다고 한다. 컴퓨터 B의 클럭 속도는 얼마로 해야 할까?
- CPU시간×clock속도=CPUclockcycle수
- A CPU clock cycle수 = 20
- B: CPU시간(6)×Clock속도(클럭사이클이1.2배많아지므로,1.2배느려짐)
- $20=6×1.2BClock속도
- B Clock속도 = 4
- 1.2배 많은 클럭 사이클이 필요하다는건 instruction을 처리하는데 1.2배의 클럭사이클이 더 필요하다-> 더 오래걸린다.
Instruction Count and CPI
-
CPI : clock cylcle per instruction(명령어당 클럭 사이클 수)
-
컴파일러가 코드를 효율적으로 컴파일 해줘야 필요한 instruction이 줄어든다.
-
instruction마다 CPI가 다르다.
-
ClockCycles=InstructionCount(instruction수)×CyclesperInstruction(instruction평균cycle수)
-
CPUtime=InstructionCount×CPI×ClockCycleTime
-
CPUtime=ClockRateInstructionCount×CPI
-
ex) 컴퓨터 A의 클럭 사이클 시간은 250ps이고 어떤 프로그램에 대한 CPI는 2.0이며, 컴퓨터 B의 클럭 사이클 시간은 500ps,CPI는 1.2이다 이프로그램에 관해서는 어떤 컴퓨터가 얼마나 더 빠른가?
A: 클럭사이클시간: 250 CPI 2.0 곱하면 5000
B: 클럭사이클시간: 500 CPI 1.2 곱하면 6000
B가 56만큼 더 시간이 오래걸리므로 A가 56배 더빠름
CPI Example
class | A | B | C |
---|
CPI for class | 1 | 2 | 3 |
IC int sequence 1 | 2 | 1 | 2 |
IC in sequence 2 | 4 | 1 | 1 |
-
IC = Instruction Count
-
Sequence 1 : IC = 5 //sequence 1의 총합
- ClockCycles=2×1+1×2+2×3=10
- Avg.CPI = 10/5 = 2.0
-
sequence 2 : IC = 6
- ClockCycles=4×1+1×2+1×3=9
- Avg.CPI = 9/6 = 1.5
-
CPU Time =ProgramInstruction×InstructionClockcycles×ClockcycleSeconds
-
performance에 영향을 주는것들
- Alogritm: IC,CPI
- 프로그래밍 언어: IC, CPI
- Complier : IC, CPI
- Instruction의 구조 :CPI,IC,Clock rate.
전력장벽
- CMOS(반도체에서 사용)가 에너지를 사용하는 주된 원인은 동적 에너지
- 동적에너지: 트랜지스터가 0 에서 1로 혹은 그반대로 스위칭 하는 동안에 소비되는 에너지
- 에너지 ∝ Capacitive(용량성 부하) ×Voltage2
- 전력 ∝ Capacitive(용량성 부하) ×Voltage2×Frequency(스위칭빈도)
- 스위칭 빈도:0과 1로 바뀌는 빈도 ,Clock 속도 함수
- 전압에 영향을 많이 받는다.
- 복잡한 구형 프로세서와 비교해 용량성 부하가 85%인 신형 프로세서를 개발하였다고 하자. 신형 프로세서는 가변전압 기능이 있어서, 구형에 비해 전압을 15% 줄일 수 있었고 따라서 주파수도 15% 낮추었다면,동전력에는 어떤 영향을 미쳤겠는가?
- Capacitive(0.85)×voltage2(0.852)×스위칭빈도(0.85)
- 0.854=0.52
- 오늘날의 문제는 전압을 더 이상 낮추면 트렌지스터 누설 전류가 너무 커진다는 것. 이는 꽉 잠기지 않은 수도꼭지와 같다.
- 전력장벽에 부딪힌 컴퓨터 설계자들은 multi processor를 만들기 시작한다.
멀티프로세서
-
마이크로 프로세서: 여러개의 프로세서를 집적
-
프로세서와 마이크로 프로세서 용어 혼란 줄이기 위해 프로세서를 '코어' 라고 부름
-
마이크로프로세서를 '멀티코어 마이크로프로세서'라고 부르기 시작
-
쿼드 코어 마이크로프로세서는 4개의 프로세서,즉 4개의 코어를 포함한 칩
-
병렬성
- 명령어 수준 병렬성
- 파이프라이닝:명령어 실행을 중첩시켜서 프로그램을 빠르게 실행시킨다.
- 프로그래머가 병렬 프로그램 작성이 어려운 이유
- 병렬 프로그램은 성능을 중요시 하는 프로그램, 프로그래밍의 어려움을 가중시킨다.
- 각 프로세서에 비슷한 양의 일을 처리하도록 해야 빨리 처리할 수 있다. 이게 어려움.
- 통신 및 동기화 오류 줄이기위한 주의 필요
Amdahl's Law
-
설계자들이 자주하는 실수
- 컴퓨터의 한부분만 개선하고 개선된 양에 비례해서 전체 성능이 좋아지리라 기대하는 것.
-
개선후 실행시간 =개선의크기개선에의해영향을받는실행시간 + 영향을 받지 않는 실행시간
-
예를 들어, 어떤 컴퓨터에서 100초 걸리는 프로그램이 있는데, 그중 80초는 곱하기 계산에 소요된다 가정하자. 이프로그램이 다섯배 빠르게 실행되려면 곱셈 속도를 얼마나 개선해야 할까?
- 개선후 실행시간 = n80초+(100−80)초
- 20초 = n80초+20초
- 0초 = n80초
- 곱셈이 전체부하의 80%인경우, 아무리 빨리하더라도 전체 성능을 다섯배로 증가시킬 수 없다.
- 이때문에 제일 많이 사용하는 프로그램은 최적화 해야한다.
MIPS
- MIPS(million instructions per second)
- MIPS = 실행시간×106명령어개수
- MIPS = 클럭속도명령어개수×CPI×106명령어개수
- 프로그램의 실행 속도를 백만 개의 명령어 단위로 나타내는 척도
- 예제)
-
측정값 | 컴퓨터 A | 컴퓨터 B |
---|
명령어개수 | 100억 | 80억 |
클럭속도 | 4GHz | 4GHz |
CPI | 1.0 | 1.1 |
- 어느 컴퓨터가 MIPS가 더 높은가
실행시간은 클럭속도에 반비례하고 CPI에 비례한다. 따라서,
명령어개수 ×클럭속도/CPI 가 높은것이 MIPS가 높다.