컴퓨터 구조 / Computer Architecture
1. 컴퓨터의 세 가지 구성요소 = CPU + Memory + IO devices
ㄴ CPU는 Data들이 다니는 길인 Datapath와 Data를 관리를 위한 operation을 선택하는 Controller가 있다.
ㄴ 폰 노이만은 CPU와 각종 프로그램이 내장된 Memory로 컴퓨터를 만들 수 있다고 하였다.
ㄴ 이 Architecture를 폰 노이만 Architecture라고 하며, 현대의 컴퓨터까지 적용되고 있다.
2. Old-School Machine Structures – 컴퓨터 Hierarchy를 나타내고 있다.
ㄴ Compiler – High level language를 Low level language (Machine language)까지 변환.
ㄴ Assembler – Assembler language를 Low level language로 변환.
ㄴ Interpreter – compile 하지 않고 바로 기계어로 변환 (ex. Script 언어)
ㄴ ISA (Instruction set architecture) – 하드웨어와 소프트웨어간 명령어의 집합, 프로그램 명령어 정의함.
3. Abstraction – 세부사항은 간단하게 하거나 숨기고, 주요한 작동만 설명하는 것을 말한다.
ㄴ 장점 : 복잡한 내용을 숨김으로써 명료하고 간단하게 전달할 수 있음.
ㄴ 예시 : 값을 받을 때, 값이 어디 어디부분을 거친다는건 생략, 그냥 Input 을 받는다라고 설명함
4. 6 Great Ideas in Computer Architecture
ㄴ Levels of Representation/Interpretation – Compiler, Assembler등을 통해 언어가 작동하는 방법을 설명
ㄴ Moore’s Law – 18 개월 마다 Transistor 개수가 2배가 된다.
ㄴ Memory Hierarchy – 메모리의 속도 순으로 계층을 그려 놓았다.
– Principle of locality : 시간/공간적으로 가까이 있는 장치가 또 사용될 확률이 높다.
ㄴ Parallelism – 프로세스를 병렬적으로 처리 함으로 써 속도를 높인다. Pipe-lined 되어있는 구조.
ㄴ Performance measurement and Improvement – 성능 측정방법
ㄴ Dependability via Redundancy – 많은 데이터의 양이 더 믿을 만한 추측을 할 수 있게한다.
5. Amdahl’s L:aw – CPU 코어가 x배가 된다고 해도 Performance ratio가 항상 x배가 되진 않음.
Performance increase ratio= 1/(x+ (1-x)/N) ,x:Ratio of code that is sequential,N∶Number of Cores
Performance ratio 는 코드의 Sequential 한 부분에 영향을 받으며, 성능을 높이기 위해서는 이 Sequential 한 부분을 Parallel 하게 바꿔주는 작업이 필요하다. 이것을 Parallel Programming 이라고 한다.
6. Defining Performance : 성능을 측정하는 방법은 크게 두 가지가 있다.
- Execution time (= elapsed time, response time) – 정해진 Task를 수행하는데 걸리는 시간
- Bandwidth time (= though put time) – 주어진 시간당 처리할 수 있는 데이터 량
(ex – 대형 검색 사이트에서는 data가 enormous해 정해져있지 않으므로 Bandwidth time이 중요하다)
7. CPU time : Response time보다 작은 의미로, Response Time중 CPU가 관여한 시간을 의미한다.
ㄴ User CPU time : CPU time중 유저가 사용한 시간, System CPU time : CPU 가 사용한 시간