컴퓨터 구조 (Computer Abstraction & Technology)
컴퓨터의 혁명
컴퓨터 기술은 Moore's Law의 주장에 근거하여 매년 약 2배정도의 기술력 발전을 이룩하고 있다.
기술력 발전은 반도체의 처리(Processor), 저장(Memory) 각각의 분야에서 성과를 보이고 있는 중이다.
컴퓨터의 분류
개인 컴퓨터 / 서버 컴퓨터 / 슈퍼컴퓨터 / 임베디드 컴퓨터 / PostPC Era(PMD, Cloud Computing)
Eight Great Ideas
1. Design for Moore's Law
: 반도체 기술의 발전 속도에 대해서 이야기한 법칙, '2배로 매년 발전한다'
ex. 집적도, 메모리 용량, 프로세싱 속도
2. Use abstraction to simplify design
: 꼭 필요한 부분만 추출해 내는 행위를 통해 간단하게 디자인한다.
ex. java의 public : private : 에서 굳이 private을 공개하지 않는 것처럼
3. Make the common case fast
: 암달의 법칙, application이 동작할 때 가장 많이 사용하는 부분을 빠르게 만들어야한다.
4. performance via parallelism / 5. pipelining / 6. prediction
: multi-core / 분업화해서 결과를 절차대로넘기는 행위 / 예측
7. Hierarchy of memories
: Registers(프로세서 안에) > SRAM(Cache) > DRAM(Main memory) > HDD
-> 용량은 큰 대신에 데이터를 읽어 오는데 오래걸림
<- 용량은 작은 대신에 access time이 매우 빠르다.
8. Dependability via redundancy
: 중복 사용을 통해 신뢰성과 의존성을 조절할 수 있다.
ex. R(Redundant)A(array)i(independent)D(disk) 디스크 시스템
여러개의 독립적인 자원들의 동시사용을 통해 신뢰성을 높이는 시스템.
Moore's Law
무어의 법칙에 따라, 반도체의 성능이 매년 2배씩 증가했다.
컴퓨터에서 사용되는 반도체는 프로세서(흔히 cpu라고 부름) 와 메모리가 있다.
반도체의 성능이 증가하면서 각각의 성능 또한 증가하는데, 발전하는 방향에서 문제가 생긴다.
프로세서의 경우 처리속도가 매년 증가하는데, 메모리의 경우 속도 측면이 아닌 용량이 늘어난 것이다.
따라서, 전체적으로 컴퓨터의 발전 속도는 그 발전 속도를 따라가지 못했다 :(
그것을 보완해 주는 것이 '캐시 메모리' 이다.
메모리가 프로세서의 속도를 따라가지 못하는 것을 보완해주는 방법으로서 '캐시 메모리'가 나오게 되었다.
Abstraction
program code가 처리되는 과정에서도 abstraction이 사용된다.
High-level language 로 작성된 c 프로그램은 컴파일러를 거쳐 어셈블리 언어로 표현된다.
어셈블리언어는 사람들이 보기 편하게 기호로 표현해놓은 것이다. 이것 또한 하드웨어는 읽지 못한다.
하드웨어는 오로지 0과 1로된 binary data만을 읽을 수 있기 때문이다. 이 어셈블리 언어도 어셈블러를 거쳐 binary 기계어로 표현된다. 어셈블리 언어와 binary로 표현된 기계어 명령어 사이에 특별한 관계가 존재하는데, 그것은 어셈블리 문장의 갯수와 기계어 명령수랑 같다는 것이다.
같은 ISA(Instruction Set Architecture)는 버전이 서로 호완해야만 한다. 기존의 프로세서가 처리해오던 방식을 뒤에 나올 ISA Family들이 호완을 해주어야 장애 없이 서비스를 계속 이용 가능하기 때문이다.
Inside the Processor (CPU)
Datapath : 데이터에 operations(여러 연산)을 가하는 장치를 뜻함.
Control : 신호선들을 제어하는 역할을 함.
Datapath에서 처리되거나, bus를 통해 움직이는 신호선들을 제어하는 역할을 하는 것이 control 이다.
Cache memory : 바로 데이터에 access 하기 위한 작고 빠른 SRAM 메모리
A Safe Place for Data
Volatile(휘발성) main memory : DRAM
Non-volatile(비휘발성) secondary memory
- Magnetic disk : HDD
- Flash memory : SSD, USB Flash Drive
- Optical disk : CDROM, DVD, BD
Defining Performance (Response Time and Throughput)
Response time (Execution time) = Elapsed time : 컴퓨터가 온전히 작업을 수행하는데 걸리는 시간
Throughput (Band width) : 단위시간당 처리량
CPU Time : 순수하게 cpu만의 시간을 측정하는 것 < - > Elapsed time (Response time)
Performance = 1/Execution Time
성능은 걸린 시간에 반비례 한다. 즉, 걸린시간이 길어질수록 성능은 좋아지지 않음을 의미한다.
CPU Clocking and CPU Time
CPU Clocking은 컴퓨터 시스템에서의 시계이고, high 와 low로 동작한다.
- Clock period 는 ' --__ ' 와 같이 한 사이클을 의미한다. clock period 혹은 clock cycle time 이라고한다.
- Clock frequency(rate)는 단위시간당 clock cycle의 갯수를 의미하고 (Hz)라는 단위를 사용한다.
ex. 1Hz = 1cc/sec 을 의미 / 4.0GHz = 4 x 10^9 Hz 를 의미한다.
- Clock Cycle Time = 1/Rate 과 같다.
- 따라서, CPU Time 은 CPU Clock Cycles x Clock Cycle Time (갯수 x 길이) 혹은
CPU Clock Cycles을 Clock Rate으로 나눈 값과 같다.