Kim Seon Deok
[컴퓨터 구조] 1. Abstraction and Computer tech 본문
컴퓨터의 응용분야
1.개인용 컴퓨터(personal computer, PC)
개인용 컴퓨터는 낮은 가격으로 사용자에게 좋은 성능을 제공하는 것을 중요시하며(가격대비 성능에 민감) 제 3자 소프트웨어를 실행하기 위해 주로 사용된다.
2.서버(server)
네트워크를 통해서만 접근되며 대개 대형 작업 수행에 이용된다. 연산과 입출력 용량의 확장성이 PC보다 훨씬 더 크다.
서버가 고장나며 단일 사용자 PC와는 비교할 수 없이 큰 손해가 발생하므로 신용도를 매우 강조한다.
3.슈퍼컴퓨터(supercomputer)
수십만개의 프로세서와 수 TB의 메모리를 가지고있다. 전력소모가 크고 유지비용이 많이 든다.
4.임베디드 컴퓨터(embedded computer)
다른 장치에 포함되어 있어서 미리 정해진 한가지 일이나 몇 가지 소프트웨어만 실행하는 컴퓨터이다.
임베디드 응용은 최소한의 성능만 유지하면서 가격과 소모 전력은 엄격히 제한해야 하는 요구사항을 갖는 경우가 많다.
프로그램의 성능에 영향을 주는 요소
1.알고리즘 > 소스 프로그램 문장 수와 입출력 작업 수
2.프로그래밍 언어, 컴파일러, 컴퓨터 구조, 명령어 집합구조 > 각 소스 프로그램 문장에 해당하는 instruction 수
3.프로세서와 메모리 시스템 > 명령어의 실행속도(단위시간동안 얼마나 많은 명령어를 실행할 것인지)
4.입출력 시스템 > 입출력 작업의 실행속도(단위시간동안 I/O operation을 얼마나 빠르게 수행하는지)
컴퓨터 구조 분야의 성능향상에 기여한 것
1.설계를 단순화하는 추상화(abstraction)
2.자주 생기는 일을 빠르게(common case fast)
3.병렬성을 통한 성능 개선(parallelism)
4.파이프라이닝을 통한 성능 개선(pipelining)
5.예측을 통한 성능 개선(prediction)
6.메모리 계층 구조(memory hierarchy)
7.redundancy를 이용한 신용도 개선(dependability)
Beneath program
복잡한 응용에서 출발해 단순한 명령어까지 내려가려면 높은 수준의 작업을 단순한 컴퓨터 명령어로 번역하는 여러 겹의 소프트웨어가 필요하다.
- 응용 소프트웨어
- 시스템 소프트웨어
- 운영체제 : 사용자 프로그램과 하드웨어 간 인터페이스 역할을 하면서 각종 서비스와 감독 기능을 제공
- 컴파일러 : High level language로 작성된 프로그램을 하드웨어가 실행할 수 있는 명령어(어셈블리어)로 번역
- 하드웨어
프로그램 코드 단계
High level language를 컴파일러를 통해 하드웨어가 실행할 수 있는 어셈블리어로 변경하고 어셈블러를 통해 machine language(0,1로 구성)로 변환한다.
우리가 사용하는 High level language는 자연어와 유사하며 간결한 특성으로 개발기간을 단축해 프로그래머의 생산성을 높여주고, 어느 컴퓨터에서든 실행이 가능하다.
컴퓨터의 구성요소
입/출력 장치, 메모리, datapath, control unit으로 구성되고, datapath와 control unit을 합쳐 프로세서(=CPU)로 부른다.
CPU(Central Processing Unit)
CPU는 datapath와 control unit, cache memory로 구성된다.
- datapath : 데이터가 흘러가는 경로, 연산을 수행
- control unit : 명령어가 뜻하는 바에 따라 datapath, memory, I/O장치가 할 일을 지시
- memory : 실행중인 프로그램과 프로그램이 필요로 하는 데이터를 기억
- DRAM(dynamic random access memory) : 여러 개를 한데 묶어서 프로그램의 명령어와 데이터를 기억하는 데 사용
- cache memory : DRAM의 버퍼역할을 하는 작고 빠른 메모리
- SRAM(static random access memory) : DRAM보다 작고 빠르지만 집적도가 낮다. DRAM과 함께 메모리 계층구조의 두 계층을 구성한다.
Abstaction
소프트웨어는 하드웨어와 instruction set architecture을 사용해 통신한다.
Instruction = 프로그램의 기본단위. 한 instruction을 수행할 때마다 메모리/레지스터의 state를 transition시킴
ISA = 하드웨어와 최하위 계층 소프트웨어 사이의 인터페이스. machine language 프로그램을 작성하기 위해 알아야 하는 모든 정보
ISA는 instruction으로 구성되고 하드웨어와 독립적으로 컴퓨터의 기능을 생각할 수 있게 해 구조의 implementation을 분리해서 생각하도록 한다.
ABI(application binary interface) = 기본 instruction집합 + 운영체제 인터페이스
implementation = 구조 추상화를 준수하는 하드웨어. 같은 ISA를 갖고 있다해도 implementation 각각의 방식은 다르다.
하드웨어와 소프트웨어는 모두 abstraction을 사용해 계층적으로 구성되며 하위계층의 디테일한 부분이 상위계층에는 보이지 않도록 한다. (컴퓨터 내부 복잡함을 숨김)인터페이스를 abstraction함으로써 같은 소프트웨어를 실행하지만 가격과 성능이 다른 여러가지 컴퓨터를 implementation할 수 있다.
Performance
Response time
컴퓨터가 task를 시작하고 완료하기까지 걸린 시간으로 execution time을 말한다.
Throughput
일정한 시간동안 완료하는 task의 수로 bandwidth를 말한다.
기존에 있는 프로세서보다 더 빠른 cpu를 사용하면 response time은 감소해 단위 시간당 처리할 수 있는 task가 증가해 troughput이 증가한다.
기존 cpu에 cpu를 더 추가하면 하나의 core에서 실행하는 시간은 줄지 않아 respose time은 변화가 없다. 하지만 각각의 core에서 다른 일을 할 수 있으므로 단위시간 당 한 일은 2배, 4배...가 되므로 throughput은 증가한다.
따라서 response time은 throughput에 영향을 주지만 throughput은 response time에 영향을 주지 않는다.
성능을 최대화 하기 위해서는 response time/ execution time을 최소화해야한다.
성능은 execution time에 반비례한다. x가 y보다 n배 빠르다면 y의 실행시간이 x에서의 실행시간보다 n배 길다.
Measuring Execution time
시간은 컴퓨터 성능의 가장 기본적인 척도이다. 같은 작업을 최단 시간에 실행하는 컴퓨터가 가장빠른 컴퓨터이다.
Elapsed time
한 작업을 끝내는 데 필요한 전체 시간을 말한다. 디스크 접근, 메모리 접근 입출력 작업, 운영체제 오버헤드 등 모든 시간을 다 더한 것이다.
CPU time
특정 작업의 실행을 위해 CPU가 소비한 실제 시간.
-user CPU time : 프로그램 자체에 소비된 CPU시간
-system CPU time : 프로그램을 수행하기 위해서 운영체제가 소비한 CPU시간
CPU clocking
컴퓨터의 세세한 부분을 평가할 때는 하드웨어 이벤트가 발생하는 시점을 결정하는 클럭을 이용하기도 한다.
clock cycle = 클럭의 시간간격. 1개의 프로그램이 도는데 CPU가 사용한 클럭의 갯수
clock period = clock cycle time = 1클럭주기. 한 클럭 사이클에 걸리는 시간
clock frequency = clock rate = clock speed = 클럭속도. 1/clock period
시간 = 사용자가 사용하는 척도 클럭 = 설계자가 사용하는 척도
서로 다른 척도 간의 상관관계를 구하기 위해 궁극적인 성능 척도인 cpu time을 구한다.
CPU time
클럭사이클의 길이를 줄이거나 프로그램 실행에 필요한 클럭 사이클 수를 줄이면 성능을 개선할 수 있다.
하지만 이 둘 중 하나를 감소시키면 다른 하나가 증가하는 경우가 발생한다. >> trade off 관계
1개의 instruction을 수행하는 데 클럭 사이클의 길이가 줄어들면 클럭 주기는 짧아지지만(= 클럭주파수 증가) 1개의 instruction을 수행하는 데 필요한 클럭갯수는 늘어나게 되므로 오히려 성능이 저하된다.
따라서 클럭 사이클 길이는 늘리면서 1개의 instruction을 수행하는 데 필요한 클럭갯수는 줄여야 한다.
CPU clock cycles = Instruction Count x CPI
Instruction Count = 명령어 개수. 프로그램이 실행한 명렁어의 개수
CPI
명령어 한개 당 필요한 클럭 수
CPI는프로그램 실행에 사용되는 명령어 조합 뿐 아니라 메모리 시스템과 프로세서 구조를 포함하는 여러 가지 컴퓨터 세부 설계에 따라 달라진다. CPI는 instruction집합이 같더라도 구현방식에 따라서 달라질 뿐 아니라 응용프로그램에 따라서도 달라진다. 따라서 클럭속도, 명령어 개수, CPI 3가지는 반드시 비교해야 한다.
컴퓨터 성능에 가장 믿을 만한 척도 = execution time
pentium4가 나오기까지 RISC아키텍쳐와 superscalar연구로 IPC가 증가했다.
클럭을 계속 높이다 보니 에너지를 많이 소모하게 되므로 한계점에 도달했다. 따라서 클럭을 낮추면서 낮은 클럭에서도 계산을 많이 하도록 개선하고 동작전압을 낮추고 트랜지스터의 부하를 낮추기 위해 트랜지스터의 크기를 줄이는 방향으로 변화했다. >> multicore로 빠짐
SPEC(System Performance Evaluation Cooperative)
최신 컴퓨터 시스템을 위한 표준 벤치마크를 만들기 위해 만들어진 단체이다
기준 프로세서의 실행시간을 측정하려는 컴퓨터의 실행시간으로 나누어 실행시간을 정규화한다. >>> spec ratio
spec ratio가 클수록 성능이 더 좋은 컴퓨터이다.
Amdahl법칙
어떤 개선책으로부터 얻을 수 있는 성능의 증가는 개선된 부분이 얼마나 많이 사용되느냐에 따라 제한된다는 법칙.
전체에서 높은 비중을 차지하는 부분을 계산하고 일반적이게 만들도록 함
MIPS(Million Instruction Per Second)
프로그램의 실행속도를 백만 개의 명령어 단위로 나타내는 척도이다. 빠른 컴퓨터일수록 높은 MIPS값을 갖는다.
이는 명령어 하나가 얼마나 많은 일을 수행하는지를 반영하지 않는다. 같은 컴퓨터에서도 어떤 프로그램을 실행하느냐에 따라 MIPS값은 달라진다.
Intergrated circuit = chip
수천만 개의 트랜지스터가 결합된 부품이다.
- Processor = CPU
프로그램의 지시대로 일을 하는 부분으로, 보드 내에서 가장 역동적인 부분이다.
CPU : datapath, control unit으로 구성된 컴퓨터의 핵심부분으로, 숫자를 더하거나 검사하고 입출력장치에 신호를 보내 활성화하는 일을 한다.- datapath : 산술연산을 수행하는 프로세서 구성요소
- contol unit : 명령어가 뜻하는 바에 따라 datapath, memory, I/O장치가 할 일을 지시한다.
- Memory
실행중인 프로그램과 프로그램이 필요로 하는 데이터를 기억한다. DRAM 여러 개를 한데 묶어서 프로그램의 명령어와 데이터를 기억하는 데 사용한다
RAM : 메모리의 어떤 부분을 읽든지 같은 시간이 걸린다.
- Cache memory : DRAM의 버퍼역할을 하는 작고 빠른 메모리. 느리고 큰 memory의 버퍼로 동작하는 작고 속도가 빠른 메모리이다.
- SRAM : DRAM보다 빠르면서 집적도가 낮아 비싼 메모리
- 휘발성 메모리(volatile memory) : DRAM과 같이 전원이 공급되는 동안만 데이터를 기억하는 기억장치 → 메인 메모리(main memory)
- 비휘발성 메모리(nonvolatile memory) : 전원공급이 끊어져도 데이터를 계속 기억하는 기억장치. 다음 실행 때까지 프로그램을 저장 → 보조기억장치(secondary memory)
- 자기 디스크(magnetic disk) : 자성 기록 매체가 코팅된 회전 원반으로 구성된 비휘발성 메모리(excecution time : 5~20ms)
- 플래시 메모리(flash memory) : 자기디스크보다 비싸고 빠르다. (excecution time : 5~50us)
'컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] 4-3. Pipeline Processor (0) | 2022.11.13 |
---|---|
[컴퓨터 구조] 4-2. Multiple - Cycle Processor (0) | 2022.11.12 |
[컴퓨터 구조] 4-1. Single - Cycle Processor (0) | 2022.11.12 |
[컴퓨터 구조] 2-2. MIPS (0) | 2022.11.11 |
[컴퓨터 구조] 2-1. ARM (0) | 2022.11.10 |