시스템구조

컴퓨터 구조_CPU_프로그램 실행시간, 명령어수, 클럭 사이클 CPI, 입출력 시간, 속도 CPS, RAM, 암달의 법칙, 스케쥴링, 라운드로빈

스윙스윙 2021. 9. 28. 20:20

▣ 컴퓨터 구조_CPU_프로그램 실행시간 계산, 명령어수, 클럭 사이클, 입출력 시간, 속도, RAM, 암달의 법칙, 스케쥴링, 라운드로빈

 

프로그램 실행시간 = IC(Instruction Counts, 명령어 수) * CPI(Clock cycles per instruction, 명령어 당 클럭사이클) / Clock rate(Cycles per second, 클럭속도)

초 = IC * CPI / CPS

실명씨클

 


2018년 87번

정답 : 4번

 

- 이전 컴파일러

10초 = 명령어수 * CPI(클럭사이클) / 클럭속도

명령어수 = 10초 / CPI * 클럭속도

 

- 새로운 컴파일러

x초 =(명령어수 * 0.5)*(CPI * 1.1) / 클럭속도

      =(10초 / CPI * 클럭속도 * 0.5)*(CPI * 1.1)/ 클럭속도 

      = 10 * 0.5 * 1.1

      = 5.5초

 


2018년 89번

정답 : 2번

 

- A컴퓨터

10초 = 명령어수 * 클럭사이클 / 2GHz

명령어수 = 10초 / 클럭사이클 * 2GHz

 

- B컴퓨터

8초 = 명령어수 * 클럭사이클*1.2 / 클럭속도

클럭속도  = 10초 / 클럭사이클 * 2GHz * 클럭사이클 * 1.2 / 8초

               = 10초 * 2GHz * 1.2 / 8초 = 24GHz / 8초 = 3GHz

 


2017년 100번

정답 : 4번

<현재 벤치마크>
실행시간: 100초
CPU시간: 80초
입출력시간: 20초


<6년 후 벤치마크>
6년 후 CPU개수: 2 → 4 → 8 개 ( 2년마다 두 배씩 증가하므로)
CPU시간: 80 x 1/8 = 10초 (1개 CPU 수행 시 80초, 8개 CPU 수행 시 10초)
입출력시간: 20초 (변화 없음)
실행시간 : 10초(CPU time) + 20초(I/O time) = 30초
입출력 시간 비율 : (20 / 30) x 100 = 66.666666….%

 


2020년 93번

정답 : 2번

64비트 CPU를 위한 주기억장치 모듈(용량:8KB)을 1K×8비트 조직의 램(RAM)을 이용하여 구성하고자함

64비트 CPU란 말은 한 워드 길이가 64비트임

데이터 버스폭이 64비트임

따라서 "1K×8비트"램을 8개 병렬로 연결해야 64비트 폭을 가진 데이터 버스를 구성할 수 있음

 


2012년 90번

정답 : 2번

100초 걸리는 프로그램을 4배 빠르게 실행 -> 25초 

속도 개선이 이루어질 수 없는 부분은 100초 중 20초임 (곱셉연산이 아닌 부분)

곱셉연산이 5초 안에 처리되어야 전체 실행속도 25초를 만족시킬 수 있음

 

속도 개선이 어려운 20초 + 곱셉연산 5초 = 25초

 

80초 / 5초 = 16배

 


2019년 79번

정답 : 2번

 

CPU 스케쥴링 정책은 Round Robin임 (선점 preemption 방식)

선점방식이란 어떤 프로세스가 CPU를 할당 받아 실행 중이더라도 다른 프로세스가 현재 프로세스를 중지시키고 CPU를 강제로 뺏을 수 잇는 방식임

 

Round Robin 준비상태큐의 프로세스들을 번갈아 가면서 실행
가장 대표적 선점방식, 대부분의 OS에서 사용
SRT
(Short Remainning Time)
현재 실행중인 프로세스보다 잔여처리시간이 더 짧은 프로세스가 준비큐에 생기면 실행중인 프로세스를 선점
항상 검사해야 하는 오버헤드 있음
다단계 큐
(multi-level queue)
우선순위가 다른 준비 큐를 단계별로 배치, 프로세스를 우선순위에 따라 큐에 넣고 스케쥴링
하위 단계의 큐에서 실행 중일 때 우선순위 높은 프로세스 들어오면 선점됨, 단계별 준비 큐 간의 프로세스 이동은 불가능

 

타임슬라이스(time slice)가 3ms란 프로세스에 할당된 CPU 사용 시간이 3ms이며 이 시간을 다 쓰면 다른 프로세스로 CPU를 넘겨야 한다는 것임

 

P0가 3ms를 쓰고 P1로 넘김 -> P1도 3m를 쓰고 P2로 넘김 -> P2도 3ms를 쓰고 P3로 넘김 -> P3도 3ms를 쓰고 P0로 넘김 / 여기까지 쓴 시간은 12ms임

P0은 2ms을 쓰고 P1로 넘김 (문제에서 P0실행시간은 Total 5ms라고 되어 있음), 이전 턴에서 3ms실행했기 때문에 2ms만 사용하면 됨 / 여기까지 쓴 시간은 14ms임

15ms순간에 CPU를 잡고 있는 프로세스는 P1이 됨

 


2019년 81번

정답 : 2번

μ = 마이크로(micro) = 10의 -6승

 

1000개 명령어를 실행하는데 0.000002초가 걸림

한 개 명령어가 실행되는데 5클럭 사이클이 필요함

5000클럭 사이클이 실행되는데 걸리는 시간이 0.000002초

 

클럭속도란 1초 동안에 움직이는 클럭 사이클임

5000 클럭 : 0.000002 = x 클럭 : 1초

x = 5000 / 0.000002 = 2,500,000,000 = 2.5 * 10의 9승 = 2.5G(Hz)

 

 

1 000 000 000 000 000 000 000 000 = 10^24 요타 (yotta)
1 000 000 000 000 000 000 000 = 10^21 제타 (zetta)
1 000 000 000 000 000 000 = 10^18 엑사 (exa)
1 000 000 000 000 000 = 10^15 페타 (peta)
1 000 000 000 000 = 10^12 테라 (tera)
1 000 000 000 = 10^9 기가 (giga)
1 000 000 = 10^6 메가 (mega)
1 000 = 10^3 킬로 (kilo)
100 = 10^2 헥토 (hecto)
10 = 10^1 데카 (deka)
0.1 = 10^-1 데시 (deci)
0.01 = 10^-2 센티 (centi)
0.001 = 10^-3 밀리 (milli)
0.000 001 = 10^-6 마이크로 (micro)
0.000 000 001 = 10^-9 나노 (nano)
0.000 000 000 001 = 10^-12 피코 (pico)
0.000 000 000 000 001 = 10^-15 펨토 (femto)
0.000 000 000 000 000 001 = 10^-18 아토 (atto)
0.000 000 000 000 000 000 001 = 10^-21 젭토 (zepto)
0.000 000 000 000 000 000 000 001 = 10^-24 욕토 (yocto)