▶ 소프트웨어 계층
시스템 소프트웨어는 사용자 애플리케이션이 하드웨어에서 실행할 수 있도록 도움을 제공
OS의 역할
- 메모리와 저장장치 할당
- 입/출력 동작을 처리
- 애플리케이션의 병렬 처리
- 기타
컴파일러의 역할
- 고수준 언어로 작성된 프로그램을 하드웨어가 실행할 수 있는 명령어로 변환
c=a+b와 같은 고수준 언어는 바이너리로 된 머신 코드로 변환
- 하드웨어는 바이너리 값을 처리
ex. 1001111010
▶ From High-Level Language to Machine Code

C언어와 같은 고수준언어를 어셈블리어로 변환한 후 기계 언어로 변환
코드로 변환할 때 여러 용어가 사용
- Compiling, Assembling, Linking, Building
- 일부 컴파일러는 중간 과정을 생략하고 직접 바이너리 코드를 만들기도 함.
고수준 언어를 강조하는 이유
장점
- 프로그래머의 자연스러운 이해
- 프로그래머의 생산성 증대
- 개발 시간 절약
- 개발하는 컴퓨터와 무관하게 프로그램을 만들 수 있음
- 대상이 되는 머신에 최적화 된 효율적인 어셈블리 코드를 만드는 컴파일러의 등장
즉, 컴파일러는 연구는 긴 역사를 가지고 있음.
▶ 디바이스 컴포넌트 예

apple iPad 2
- Display
- Battery
- Logic Board
Logic Board of Apple iPad 2

- A5 chip
- Flash memory
- Power controller chip
- I/O controller chip
디바이스 컴포넌트 예

Inside the A5 chip
- Two ARM processors
- GPU with four data paths
- DRAM interfaces
- I/O controller chip
Intergrated circuit(chip, package)
Processors(a.k.a central processor unit, CPU)
- 1) Datapath
: performs arithmetic operations
- 2) Control
: tells datapath, memory, I/O device what to do
Interfaces & controllers
Cache memory(SRAM)
Storage
- Non-volatile(비휘발성): it fkeeps data after power loss
- Hard disk drives(HDDs) or Solid state drives(SSDs) based on flash
Main memory
- Volatile(휘발성): data is lost when power is removed
- Dynamic: random access memory(DRAM)
- Faster than storage, high cost per bit
Cache memory(built from SRAM)
- Volatile as well
- Static random access memory(SRAM)
- Faster than DRAM, more expensive than DRAM
캐시 메모리는 SRAM으로 구성. SRAM은 정적 랜덤 액세스 메모리로, DRAM보다 더 빠르지만 더 비쌈. 또한 캐시 메모리는 휘발성이며, 전원이 차단되면 데이터가 손실
성능이 좋다는 것은 무슨 의미?
-
작업(task) 시작 시간과 완료 시간 사이의 차이
-
개발 사용자에게 중요
-
임베디드 혹은 랩탑 컴퓨터의 성능 평가에 사용
-
Throughput(처리량, bandwidth) - MB/s, GB/s ...
: 주어진 시간에 완료한 전체 작업 량
: 데이터 센터 관리자에게 매우 중요
: 서버의 성능을 평가하는데 사용
-
응답시간 줄면 대부분 처리량이 개선
실행 시간 측정(Measuring Execution Time)
- 성능 비교
: 컴퓨터 A가 10초 안에 프로그램을 싱행하고, 컴퓨터 B가 같은 프로그램을 12초 안에 실행한다면 컴퓨터 A의 성능 1프로그램/10초 0.1프로그램/초, 컴퓨터 비의 성능은 1프로그램/12초 = 0.0833 프로그램/초
- 만약 B실행시간/A실행시간=N이면 A가 B보다 N배 빠르다.
- 즉, 15/10이므로 A가 B보다 1.5배 빠르다.
두 가지 실행 시간
경과 시간(Elapsed time)
- 작업(task)을 완료하는ㄷ 걸린 전체 시간
- disk accesses, memory accesses, IO activities, operating system overhead 포함
CPU TIME
- 작업을 위해 CPU를 사용한 시간
- 다른 동작에 사용한 시간은 포함하지 않음
- User CPU time + System CPU time