본문 바로가기
시스템프로그램

[컴퓨터구조개론] 1. Computer abstraction and technology

by 케찹이 2020. 10. 17.

computer revolution 현대의 revolution은 거진 끝나고 거의 모든 부분에 컴퓨터가 있다. ), 스마트폰, 비행기 등이미 보편적

computer revolution뒤에는 무어의 법칙이 있었다. 무어의 법칙은 얼마나 컴퓨터가 빨리 진화하는 지 보여준다. (novel: 새로운)

 

무어의 법칙이란?

무어의 법칙은 1965에 제시되었다. 무어의 법칙은 microprocessor제작과 아키텍쳐에서 가장 중요한 가이드라인이다. “각칩의 트렌지스터가 18개월마다 두배가량 증가될 것이다.” 트렌지스터가 많을 수록 더 나은 performance를 시행할 수 있다. “칩이 더 복잡해질수록(기능이 좋아질수록) 제작시 쓰는 돈이 늘어날 것이다.” 무어의 법칙은 40년동안 실행이 되었다.

 

컴퓨터의 종류는?

1.     Personal 컴퓨터. 우리가 평상시 사용하는 컴퓨터. 게임, 워드, 인터넷서칭 많은 걸 사용할 수 있는 아주 일반적인 컴퓨터

2.     서버 컴퓨터. 빠른 네트워크와 연결되어 다른 서버와 인터넷을 사용. 일반적으로 데이터 센터에 있음. 네이버, 다음 같은 인터넷 시스템이 서버 컴퓨터를 사용함. 그래서 우리가 매일 사용하고 있지만 실제로는 보지 못함. 큰 용량,performance,reliability. Range of the size가 매우 넓음

3.     임베디드 컴퓨터. 컨트롤 시스템의 일종임. 시스템 구성에 숨겨져있음. 무인자동차 같은 경우가 그의 예시가 됨. 또는 로켓 같은 경우도 예시임.

각 컴퓨터 종류마다 사용하는 이유가 있음. personal컴퓨터는 가격이 굉장히 중요할 것. 서버 컴퓨터는 가격은 그렇게 중요하지 않음. 더 중요한 것은 그것의 performance이기 때문. 임베디드 시스템은 cost가 중요함. 이는 시스템의 구성이기 때문에 컴퓨터의 cost가 올라가면 제품이 cost가 오르기 때문에 중요하다. 그리고 또 중요한 것은 power 소비량이다. 파워소비량은 꽤나 제한적이기 때문이다 스마트폰처럼.

 

 

The PostPc Era

2007~2012통계자료. pc자체의 수요는 줄고 스마트폰,테블릿등의 수요가 증가중. 우리는 지금 포스트pc  시대에 살고 있다.

Personal mobile 기계들은 배터리, 인터넷과 연결되있고 가격은 수백달러이다.

반면에 데이터 센터에는 cloud computing시스템이 있다. 기업용 컴퓨터는 cloud computing으로 가고 pc의 수요는 점차 줄고 있다. 지금은 cloud 또는 personal mobile이 요구된다.

 

Below your Program

우리가 매일 사용하는 것이 application software이다.애플리캐이션 소프트웨어는 보통 high-level언어로 쓰여진다. 예로 크롬, 파워포인트 등이 있다.

Application software 밑에는 시스템소프트웨어가 있다. 컴파일러, operating system이 포함되어있다. 그리고 그 밑에 하드웨어가 있다.

애플리케이션은 바로 하드웨어에게 명령을 전달 할 수 없다. 시스템소프트웨어에게 명령 전달 후 하드웨어를 사용할 수 있다. 시스템소프트웨어는 애플리케이션의 mediate이다.

왜 이런 과정을 거쳐야 할까?

많은 이유가 있는데 첫번째 하드웨어는 바이너리 인스트럭션을 사용한다. 하지만 바이너리는 이해할 수가 없어 어셈블리어를 개발했다. 그래도 어려워서 하이레벨 언어를 개발했다.

컴파일러가 하이레벨을 어셈블리로 어셈블러가 어셈블리를 바이너리로 전환해준다.

 

Abstraction:

ISA(instruction set architecture) 하드웨어와 소프트웨어의 interface라고 생각하자. 하드웨어의 복잡한 동작을 하지만 세부적인 동작을 알 필요는 없고 그저 ISA를 사용하여 하드웨어를 사용할 수 있다.

 

데이터 저장소

두가지의 데이터 저장소가 있다

1.     Volatile main memory. 휘발성 메모리이다. 빠르지만 파워가 끊기면 데이터를 잃는다.ex>DRAM

2.     Non_volatile secondary memory. 느리지만 파워가 끊겨도 데이터를 잃지 않는다. )Magnetic disk, flash memory, Optical Disk(CDROM, DVD)

 

네트워크

Local area Network(LAN) ethernet 가까운 위치의 두 컴퓨터을 연결 할 수 있다.

Wide area Network(WAN) Internet

Wireless Network: 와이파이, 블루투스등이 있다.

 

Technology 트렌드

Logic capacity 매년 30%씩 복잡해지고 clock rate는 매년 20%씩 짧아지고 있다. 이는 무어의 법칙와 final process 때문이다.

디스크 크기 또한 매년 60프로씩 늘어난다.

DRAM크기도 매년 60%씩 늘어난다. 속도는 10%.

 

여기까지가 그냥 역사와 이런저런 배경 이야기. 여기서부터 중요한 주제들

Performance

Response Time and Throughput

Response time: 한 업무를 하기 위해 걸리는 시간(업무는 다르겠지만 웹 서버를 구매한다면 servicing web request가 되겠다)

Throughput: 한 유닛 time당 할 수 있는 총 일

비슷하지만 다른 컨셉. Pcresponse time이 중요 근데 서버 컴퓨터는 throughput이 더 중요

근데 우리는 response time에 더 집중을 할 거임

 

Relative performance

Performance = 1/execution time

“X n만큼 Y보다 빠르다

PerformanceX/PerformanceY = ExecutionY/ExecutionX = n

 

Measuring Execution Time

Elapsed Time(경과시간) : 그냥 우리가 손목시계로 제는 시간 다른 이름으로 Wallclock time 모든 방면들이 다 포함된 시간. )Processing, I/O Time, OS, overhead, idle time…

근데 이런 모든 방면이 포함된 것이 아니라 cpu가 소비한 시간만을 찾기 위해서 뭐가 생겼다…performance 측면에선 굉장히 적게만 알려주는 것이었다..

CPU Time: 주어진 업무를 수행하는 시간. Load HTML, image file. 이는 굉장히 performance CPU time에 굉장히 영향을 많이 끼친다. 그리고 CPU Time은 또 user CPU Time system CPU Time으로 갈라진다. 어플리케이션이 수행하는 시간을 user CPU Time, OS가 수행하는 시간을 system CPU Time이라고 부른다. User 그리고 system CPU Time이 합쳐서 CPU Time이 나온다.

 

CPU Clocking

한 사이클의 up n down1 clock period이다. ) 250ps = 0.25ns = 250 * 10^12s

Clock period하나당 operation하나를 수행한다.

Clock cycle을 알면 clock rate(frequency)도 알 수 있다. Clock rate는 매초마다의 cycle이다

) 4.0GHz = 4000MHz = 4.0 * 10^9Hz

1/Clock cycle = frequency

 

다시 CPU Time

CPU Time I/O 또는 다른 프로그램의 실행 시간을 포함하지 않은 순수 cpu수행 시간.

CPU Time = CPU Clock cycle * Clock Cycle Time = CPU Clock Cycles / Clock Rate

그럼 이를 통해 CPU Time을 줄이는 방법을 알 수 있다.

-clock cycle횟수를 줄인다

-clock rate를 높인다

-그치만 clock cycle횟수를 줄이면 일반적으로 clock cycle time이 스스로 올라가게 된다. 그래서 하드웨어 디자이너가 clock cycle numberclock cycle time의 중간 비율 지점을 잘 찾아야한다.

Instruction Count and CPI

Instruction Count란 하나의 프로그램을 수행하기 위한 instruction의 총량이다. 그리고 이는 프로그램, ISA 그리고 컴파일러에 의해 결정된다.

Instruction count를 알았으니 프로그램이 종료되기까지 얼마만큼의 clock cycle이 필요한지 궁금해진다. 이는

Clock cycles = instruction count * cycles per instruction(이 친구를 알아야 한다)

그리고 cycles per instruction은 다른 instruction마다 다른 값을 가지고 있다. 다른 말로 해서 CPU하드웨어마다 다른 cyclers per instruction을 가지고 있다. 그래서 우리는 Average cycles per instruction을 사용한다.

CPU Time = instruction count * CPI(cycles per instruction) * clock cycle time = instruction count * CPI / clock rate

 

댓글