기록공간

하드웨어와 소프트웨어, 컴퓨터의 성능 본문

Computer Architecture

하드웨어와 소프트웨어, 컴퓨터의 성능

입코딩 2020. 7. 24. 22:34
반응형

컴퓨터 하드웨어는 아주 단순한 저수준의 명령어만을 실행할 수 있다. 오로지 0과 1로 이루어진 저수준 명령어를 기계는 알아듣고 수행할 수 있다.

 

따라서 사용자들이 일반적으로 사용하는 복잡한 응용 프로그램(소프트웨어)은 사실 하드웨어에서 실행되기 위해 번역의 과정을 거친다. 높은 수준의 작업을 저수준의 명령어로 번역하는 여러 단계의 과정에는 시스템 소프트웨어가 필요하다.

 

이러한 소프트웨어들은 계층적으로 구성된다. 크게 하드웨어와 응용 소프트웨어로 구분할 수 있고 이 사이에는 여러 가지 시스템 소프트웨어가 존재한다.

 

1. 사용자가 컴퓨터를 켜서 사용하는 프로그램들 = 응용 소프트웨어

 

2. 응용 소프트웨어가 하드웨어에서 실행되도록 만드는 소프트웨어 = 시스템 소프트웨어

 

3. 실제 소프트웨어가 실행되는 곳 = 하드웨어

 


대략적인 구성 살펴보기


하드웨어

컴퓨터의 5대 구성 요소

 

  • 입력장치 : 마이크, 키보드 등 컴퓨터에 정보를 공급하는 장치

  • 출력장치 : 스피커, 디스플레이 등 연산의 결과를 사용자에게 직접적으로 표현해주는 장치

  • 메모리 : 실행 중인 프로그램과 프로그램이 필요로 하는 데이터를 기억

    • 메모리(RAM, Random Access Memory)는 어떤 부분을 읽든 같은 시간이 소요된다.

    • 메모리는 DRAM(Dynamic Random Access Memory) 칩으로 구성되어 있다.

    • 메모리는 휘발성 메모리로, 컴퓨터에 연결된 전원이 끊어지면 모두 삭제된다.

    • 데이터와 프로그램을 저장할 비휘발성 메모리로 '디스크'가 추가적으로 사용된다.

  • 프로세서(CPU) : 데이터패스 + 제어 유닛, 프로그램의 지시대로 일을 하는 부분으로 연산을 수행하고 입출력 장치에 신호를 보내 작동을 지시

    • 데이터패스(Datapath) : CPU 내부 구성 요소 중 제어 유닛을 제외한 데이터를 연산, 저장하는 부분

    • 제어 유닛(Control Unit) : 명령이 뜻하는 바에 따라 데이터패스, 메모리, 입출력 장치가 할 일을 지시한다.

    • 프로세서의 내부에는 메모리의 버퍼 역할을 하는 작고 빠른 메모리인 '캐시 메모리'가 존재한다.

    • 캐시 메모리는 SRAM(Static Random Access Memory) 기술을 이용한다.

 

 

시스템 소프트웨어

주요 시스템 소프트웨어 : 운영체제(OS), 컴파일러

 

  • 운영체제(OS, Operating System) : 사용자와 하드웨어 사이의 중재자 역할을 하는 프로그램

  • 컴파일러(Compiler) : C, C++, Java와 같은 고수준 언어로 작성된 프로그램을 하드웨어에서 실행할 수 있는 저수준 명령어로 번역해주는 프로그램

 

 

응용 소프트웨어

게임이나 문서 작성 프로그램과 같이, 흔히 사용자가 사용하는 일반적인 프로그램을 모두 응용 소프트웨어라고 표현 할 수 있다.

 

사용자가 설치한 프로그램은 컴퓨터의 전원이 꺼졌다가 다시 켜진 후에도 존재해야하므로, 비휘발성 메모리인 디스크에 저장된다. 이 디스크에 존재하는 프로그램을 실행시키면, 프로그램이 동작하기 위해 다양한 연산이 수행된다.

 


컴퓨터의 성능에 대한 이야기


컴퓨터 간 성능을 비교할 때에는 기준이 있어야 하며, 보통 속도작업 처리량을 그 기준으로 둔다.

 

속도가 기준이 되는 경우, 작업이 시작되고 종료되기까지의 시간인 '응답시간(실행시간)' 이 더 빠른 쪽을 성능이 좋다고 말할 수 있다. 여기서 응답 시간이란, 컴퓨터가 작업을 완료하기까지 소요되는 디스크 및 메모리 접근, 입출력 작업, 운영체제 오버헤드 및 CPU 시간(프로세서가 특정 프로그램을 실행하기 위해 소비한 시간)을 모두 포함한다.

 

작업 처리량이 기준이 되는 경우, 일정한 시간 동안 처리하는 작업의 양인 '처리량(대역폭)' 이 더 많은 쪽을 성능이 좋다고 말할 수 있다. 여기서 처리량이란, 단위 시간당 완료하는 작업의 수를 나타내는 성능 척도이다.

 

이 중 일반적인 사용자가 체감하기 좋은 기준인 시간에 대해 조금 더 살펴보자. 보통 사용하고자 하는 프로그램이 빠르게 실행되는 경우, 사용자는 컴퓨터의 성능이 좋다고 느낀다.

 

프로그램이 빠르게 실행되려면, 프로그램의 CPU 실행시간이 줄어들면 된다. 이 CPU 실행시간에 대해 이야기 하기 전에 클럭에 대해 먼저 알아보자.

 

모든 컴퓨터는 클럭(clock)을 이용하여 만들어진다. 클럭은 하드웨어 이벤트가 발생하는 시점을 결정한다. 컴퓨터는 전원이 들어오는 시점부터, 시계추가 똑딱똑딱 움직이는 것처럼 클럭이라는 일종의 신호가 주기적으로 반복된다. 그리고 이러한 클럭 간의 시간 간격을 클럭 사이클(clock cycle)이라고 한다.

 

클럭을 가지고 CPU의 실행시간을 보면 아래와 같이 나타낼 수 있다.

CPU의 실행 시간 = 프로그램의 CPU 클럭 사이클 수 * 한 클럭 사이클에 걸리는 시간

여기서 프로그램의 CPU 클럭 사이클 수란, 프로그램을 실행하기 위해 필요한 클럭 사이클이다.

 

프로그램이 실행되기 위해 필요한 클럭 사이클 수는 프로그램에 따라 정해져 있을테니, 곧 CPU의 실행시간을 줄이기 위해서는 한 클럭 사이클에 걸리는 시간이 줄어들어야 함을 알 수 있다.

CPU의 실행 시간 = 프로그램의 CPU 클럭 사이클 수 * 한 클럭 사이클에 걸리는 시간

프로그램의 CPU 클럭 사이클 수는 다음과 같이 평균적으로나마 구할 수 있을 것이다.

프로그램의 CPU 클럭 사이클 수 = 프로그램을 구성하는 명령어 수 * 명령어당 평균 클럭 사이클 수

단 명령어당 클럭 사이클 수 (Clock cycles Per Instruction, CPI)는 명령어마다 다르므로 위의 식에서는 평균값을 사용하도록 표시한다. 이 CPI 값은 알고리즘, 프로그래밍 언어, 컴파일러의 영향을 받는다.

 

한 클럭 사이클에 걸리는 시간이 줄어들기 위해서는, 클럭 사이클이 빨리 돌아야 한다. 즉 클럭 속도가 높아야 한다. 이 클럭 속도가 CPU를 구입할 때 흔히 볼 수 있는 GHz(기가 헤르츠) 단위로 표시된 값이다. 결국 이 값이 높을수록 CPU의 실행 시간이 빨라져, 흔히 말하는 '성능이 좋다'라고 느낄 수 있는 것이다. 


본 내용의 출처는 https://cocojelly.github.io/computer/%EB%82%B4-%EB%A7%88%EC%9D%8C%EB%8C%80%EB%A1%9C-%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0-%EC%A0%95%EB%A6%AC%ED%95%98%EA%B8%B0-(1)/입니다.

반응형
Comments