on
컴퓨터 구조 - 2
컴퓨터 구조 2강
2강은 전체적으로 컴퓨터 성능에 관한 내용이 많이 나온다. 어떻게 해야 성능이 좋아지는지에 대해 알아볼 것이다.
Relative Performance
\[P = {1 \over \text{Execution Time}}\]기본적으로 컴퓨터의 성능(Performance)는 실행시간에 반비례 한다.
\(Px/Py = \text{Execution Time y / Execution Time x}\)
X가 Y보다 N배 더 빠를 때 X,Y 성능을 비교하는 식이다.
\(\text{CPU Time} = \text{CPU Clock Cycles}*\text{Clock Period} = {\text{CPU Clock Cycles}\over\text{Clock Rate}}\)
- CPU Time : 한 컴퓨터 프로그램이 CPU를 차지하여 일을 한 시간의 양
- User Time : CPU가 사용자 공간(user space)에서 코드를 실행할 때 바쁜 시간의 양.
- System Time : CPU가 커널 공간(kernel space)에서 코드를 실행할 때 바쁜 시간의 양
- Idle Time : CPU가 바쁘지 않은 시간의 양. 시스템 유휴 프로세스의 시간.
-CPU time 자세한 설명 : 출처 Wikipedia
Q1) user space가 무엇인가?
A1)
User space : application 을 실행시키기 위해 할당되는 시스템 메모리.
-
Application이 무엇인가?
컴퓨터에서 실행되는 software program. 각 프로그램이 사용자를 위한 특정 애플리케이션을 가지고 있기 때문에 “응용프로그램”이라는 단어가 사용된다.
Kernel space : kernel 이 실행되고 서비스를 제공하는 곳. kernel과 운영체제를 위해 할당되는 메모리.
- Kernel : 컴퓨터 운영체제의 중심코어을 구성하는 프로그램. kernel은 사용자와 직접적으로 상호작용하지 않고, shell이나 다른프로그램, 그리고 시스템의 H/W devices(CPU, memory, disk drives)와 상호작용을 한다.
Q2) 왜 user, kernel space를 분리시켜 놓은 것인가?
A2) kernel space에서 user space를 분리하면 OS에게 할당된 메모리를 쓸 수 있는 잘못된 프로세스로 부터 시스템을 보호한다. 결과적으로 memory leaks 와 프로그램 충돌이 OS에 영향을 미치지 않게 되는 보다 안정적인 시스템이 된다.
답변들 출처 - user space, application, kernel space, kernel
\(\text{CPU Clock Cycles}=\text{Instruction count(IC)}*\text{Cycles per instruction(CPI)}\)
- Instruction count(IC) : 명령어의 개수. Program, ISA, compiler에 의해 결정된다.
- Cycles per instruction(CPI) : 명령어를 실행하는데 걸리는 cycles 수.
-
power wall : cpu의 필요 전압이 점점 낮아지다가 더이상 낮출 수 없는 상황이 와버린 현상. 전력 때문에 성능향상이 어렵기에 multiprocessor가 등장했다. 이 때부터 듀얼코어, 쿼드코어가 등장.
-
Benchmark : 성능측정을 위해 사용되는 프로그램.
-
Amdahl’s Law : 컴퓨터에서 어떤 한 부분의 성능을 향상 시키면 그 부분이 전체 성능에서 차지하는 비율만큼 전체 성능 향상.
-
Corollary : 전체에서 차지하는 비율이 큰 부분을 빠르게 해야 성능향상이 잘 된다.
‘Make the common case fast’
-
컴퓨터의 성능을 올리기 위해선 Processor의 load에 맞게 전력을 사용하게끔 만들어야 한다.
MIPS(Million Instructions Per Second)
컴퓨터의 연산 속도를 나타내는 단위의 하나로써 1초에 몇백만개의 instruction을 실행키는지 나타낸다.
이제는 잘 안쓰는 단위이다.
-
이유
-
컴퓨터 마다 다른 ISA를 고려 안했다.
=> 인텔 CPU와 ARM CPU가 다른 ISA갖고 있어서 측정되는 성능이 다를 수도 있다.
-
Instruction의 복잡도를 고려 안했다. CPU마다 CPI가 다른게 그걸 고려 안했다.
-
\(\text{CPU Time}=\text{Instruction count}*\text{CPI}*\text{Clock Cycles Time}\)
결론적으로 CPU 실행 시간은 위와 같이 표현할 수 있다.