1.1 컴퓨터 응용 분야의 종류와 특성
개괄적으로 컴퓨터는 세가지 응용분야에서 사용
수퍼컴퓨터?
성능과 가격이 높은 컴퓨터 종류
포스트 PC 시대(The PostPC Era)
- 개인 휴대용 기기(personal mobile device, PMD)
- 배터리로 동작
- 인터넷으로 연결
- 앱을 다운로드해서 소프트웨어를 설치
- 터치스트린을 상요하는 것이 보통
- 클라우드 컴퓨팅
- 창고 규모의 컴퓨팅(warehouse-scale computing, WSC)
- 서비스로서의 소프트웨어(software as a service, SaaS)
SaaS?
클라우드 환경에서 운영되는 애플리케이션 서비스
- eg.구글 Docs, 구름 IDE, 네이버워드
- Algorithm
- Programming language, compiler, architecture
- Processor and memory system
- I/O System(including OS)
- 얼마나 빠르게 I/O operations가 실행되는지 결정
1.2 Computer architecture를 발전시킨 7가지 아이디어
- Use abstraction to simplify design - 설계를 단순화 하는 추상화
- 하위단의 구체적 사항을 윗단에서는 몰라도 되도록 간단하게 만든다.
- eg. 우리는 CPU살 때 CPU내부 구조를 모두 알 필요없다. 그냥 성능이랑 호환가능한지만 알면 됨.
- Make the common case fast - 자주 생기는 일을 빠르게
- 내가 맨날 쓰는 것(자주 쓰는것)을 쓰기 편한 곳에 두는 것 ->cache의 이용
- Performance via parallelism - 병렬성을 통한 성능 개선
- Performance via pipelining - 파이프 라이닝을 통한 성능 개선
- 과정을 분할해서 분할된 과정을 역할분담하면 똑같은 일이 여러개 주어졌을 때 더 빨리 끝낼 수 있음.(병렬성의 특별한 형태)
- eg.건조까지 통으로 하는 세탁기(한번에 2시간으로 가정) vs 세탁기(1시간)와 건조기(1시간)
- 빨래를 5번에 나눠서 할 때, '세탁기와 건조기'의 경우 세탁기를 돌리면서 건조를 할 수 있음.-->10시간 vs 6시간
- Performance via prediction - 예측을 통한 성능 개선
- 앞으로 해야할 일을 미리 알면 미리 준비하고 있다가 처리가능
- Hierarchy of memories - 메모리 계층 구조
- Dependability via redundancy - 여유분을 위한 신용도 개선
- data를 중복성있게 저장해서 data의 신뢰성을 향상
1.3 프로그램 밑의 세계
소프트웨어의 계층적 구성

- Application software ⇒ 사용자가 실행하는 SW
- high-level language로 작성되어있음
- System software
- Compiler : HLL code(우리가 작성한 코드) 를 machine code로 번역
- 이렇게 번역한 것이 Application software
- Operating System (OS) : service code
- Handling input/output
- Managing memory and storage
- scheduling tasks & sharing resources
- Hardware
- processor, memory, I/O controllers
Levels of Program Code

- High-level language(고급어)
- python, java 등
- level of abstraction closer to problem domain - 사람이 좀 더 이해하기 쉬운 정도의 언어
- provides for productivity and portability - 생산성과 휴대성 향상
- Assembly language(어셈블리어)
- Textual representation of machinary instructions - 기계적 명령(binary 표현)의 텍스트적 표현
- 아직 사람이 프로그래밍할 수 있을 정도의 레벨이 되긴 하지만 High-level language보다 훨씬 복잡하다
- cpu 아키텍쳐마다 다르다
- hardware representation
- binary digits(bits)
- Encoded instructions and data
- 사람이 이해할 수 없음. 프로세서만 이해 가능
1.4 케이스를 열고
컴퓨터의 구성요소

- 모든 컴퓨터(데스크탑, 서버, 임베디드)들은 고전적인 5대 구성요소를 따른다.
터치 디스플레이
- 키보드와 마우스를 대체한다
- 저항식(감압식)과 정전용량식으로 나뉜다.
- 정전용량식은 다중 터치를 지원한다.
디스플레이(LCD)

- 화소의 행렬로 구성
- 각 화소당 4비트가 들어감(비트가 많을수록 많은 색표현 가능)
CPU 내부
- 프로세서의 내부요소
- Datapath(데이터 패스)
- Control Unit(제어 유닛)
- datapath, memory등의 순서처리
- Cache
- Memory data에 직접 접근하는 작고 빠른 SRAM 메모리
추상화(Abstractions)
- abstractions helps us deal with complexity
- hide lower-level detail (문제를 단순화)
- Instruction set architecture(ISA)(컴구에서의 abstractions 활용)
- = The hardware/software interface
- SW와 HW가 independent하도록 만들어주는 역할
- SW는 ISA에서 지원해주는 Instructions를 가지고 프로그램이 만들어진 것
- HW는 ISA에서 지원해주는 Instructions를 실행하는 것
- Application binary interface(ABI)
- = ISA + system software interface
- 어떤 시스템에 존재하는 프로그램이 다른 컴퓨터에서 실행될 수 있는지 없는지의 조건이 된다
- A라는 컴퓨터와 B라는 컴퓨터가 같은 ABI를 사용한다면 A라는 컴퓨터에서 실행되는 프로그램은 B라는 컴퓨터에서도 실행이 된다.
- Implementation
- The details underlying and interface
- ISA를 어떻게 실질적으로 구현할 것인가
- ISA를 policy라고 볼 수 있고, 실제로 프로세서가 ISA를 지원하기 위해 어떻게 구현되는지가 Implementation
- 프로세서 내부적으로 구현
A Safe Place for Data
Networks
-
communication, resource sharing, nonlocal access
-
Local area network(LAN) : Ethernet
-
Wide area network(WAN) : the Internet
-
Metropolitan area network(MAN) : 도시 네트워크 (교수님의 추가설명)
-
Wireless network : Wifi, Bluetooth
1.5 프로세서와 메모리 생산 기술
Technology Trends


- Electoronic technology는 계속해서 증가
- 용량과 성능은 증가하고 비용은 감소
Semiconductor Technology
- semiconductor는 silicon으로 만들어진다
- 성질을 변환시키기 위해 몇몇 물질을 추가한다
- conductors
- insulators
- switch


Integrated Circuit Cost

- 한글로 번역하면 더 어렵다
- Cost per die
- Dies per wafer X Yield = working Dies(불량 아닌 다이)
- 간단하게 풀어쓰면 웨이퍼 가격을 불량아닌 다이 갯수로 나눈 것
- Dies per wafer
- 웨이퍼 넓이/다이넓이
- 그러나 원의 형태이기 때문에 실제로는 짤려나가는 다이가 존재한다
- Yield
- 어떻게 정의된 형태가 아니라, 공장에서의 관찰치로 결정된 것임.
- 교재에서 숫자 2는 오타임. 2를 n으로 고칠 것
- 다이크기랑 결함률이 선형적으로 비례하지는 않는다.
- 구조 및 회로설계 등등 복합적인 요인이 반영된다.
- performance를 어떻게 정의하냐에 따라서 어떤 것이 성능이 좋은지가 달라짐
⇒ 잘 정의해줘야함
- Response time(latency) : 실행시간. 응답시간.
- Throughput
- 단위시간당 몇개의 일을 하는가
- (예) 시간당 처리 task수, 시간당 처리 transactions
- Response time 과 Throughput은 어떤 것에 어떻게 영향을 받는가
- 프로세서를 더 빠른 버전으로 대체? → response time 감소↔ throughput 증가
- 더 많은 프로세서 추가? → response time 그대로, throughput 증가
⇒ 일단 지금은 Performance 는 Response time 관점으로 Focus
이 이후는 대부분 식으로 CPU의 performance를 계산해나간다