[컴퓨터 구조] 제 1장. 컴퓨터 추상화 및 기술
Classes of Computers
- Personal computers (PCs)
일반적인 목적과 다양한 소프트웨어
비용과 성능의 tradeoff을 필요로함.
- Servers
보통 네트워크를 통해 연결됨.
높은 용량, 높은 성능, 그리고 높은 신뢰성
작은 것부터 빌딩 크기까지의 사이즈
- Low-end : 작은 비즈니스나 웹서비스
- High-end : 100~1000개의 프로세서와 테라바이트의 메모리 페타바이트의 저장소를 가지고 있는 슈퍼컴퓨터나 데이터센터
-Embedded computers
다른 장치 내부의 컴퓨터
Post-PC Era
현재 PC는 personal mobile devices(PMDs)로 대체되고 있습니다.
기존의 서버에서 cloud computing으로 넘어가고 있습니다.
Post-PCs 종류) 웨어러블 , smart farming, automobile, robotics, 3D printing 등등..

Electronic Control Unit (ECU)
ECU는 차량의 전기 시스템을 제어하는 자동차 전자 장치에 내장된 시스템(embedded system)입니다.
즉 ECU가 차에 내장된 컴퓨터의 조종을 도와줌
→ ㅋㅋ 이게 기출이라니
Eight Great Ideas in Computer Architecture
- Design for Moore’s Law
반도체칩에 집적할 수 있는 트랜지스터 수가 18~24개월마다 두 배씩 증가한다는 가설
- 간단한 설계를 위해 abstraction(추상화)을 사용해라
다양한 레벨들에서 디자인을 특성화하기 위한 추상화
- 자주 사용하는 경우를 빠르게 만들어라
희귀한 케이스를 최적화하는 것보다 더 나은 성능향상
- parallelism(병렬화)를 통한 performance
operations를 병렬적으로 처리함으로써 더 나은 성능을 얻는다.
-pipelining을 통한 performance
병렬화의 특정한 패턴
-prediction을 통한 performance
기다리는 것 보다 평균을 추측해서 작업을 시작하는것이 더 빠르다. (4장에 prediction에 관한 내용이 나옵니다.)
-Hierarchy of memories
주소 사이즈와 속도에 따른 메모리의 계층
-Dependability via redundancy(여유분을 통한 신용도 개선)
중복 작업을 통한 컴퓨터의 신뢰성
Below Your Program
소프트웨어의 단계들은 계층구조에 정렬되어있습니다.
- Application software (C/C++, java)는 high-level 언어로 쓰여져있습니다.
- System software는 hardware와 application software사이에 있습니다.
- 사용자 프로그램과 하드웨어 간의 Operating system(운영 체제 인터페이스)
- 기본적인 input/output 연산을 수행합니다.
- 메모리와 저장공간을 할당합니다. (malloc)
- resource sharing and task scheduling
- e.x) Linux, Windows, iOS
- Compiler는 고수준언어들을 instruction으로 변환하여 줍니다.
- hardware는 processor, memory, I/O controller, etc를 포함하고 있습니다.

High-Level Language to Language of Hardware
- HIgh-level language는 ‘problem domain’에 가까운 추상화 단계입니다.
- 생산성과 portability(이식성?)을 제공함. (e.x, C++)
- Compilers는 프로그램을 instruction으로 변환합니다.
- Assembly language는 machine instruction들과 대응 되는 컴퓨터 프로그래밍의 저급언어 입니다.
- Assemblers는 instruction들을 이진수로 바꾸어줍니다.
- Machine language는 machine instructions의 하드웨어 표현입니다.
- 2진수로 표현되어집니다.
- instruction과 data가 인코딩 되어있습니다.

Organization of a Computer
컴퓨터의 기본적인 5가지 요소는 input, output, memory, datapath, control입니다.
- Processor : datapath(연산을 수행) + control → 메모리와만 통신
이거 기출
- 프로세서는 메모리로부터 instruction과 data를 가져옵니다.
- Input은 메모리에 데이터를 작성합니다.
- Output은 메모리로부터 data를 읽어옵니다.
- Control은 datapath, memory, input, output의 작동을 결정하는 신호들을 보냅니다.
컴퓨터의 모든 종류들은 똑같은 component를 가지고 있습니다.
(ex) 데스크탑, 서버, 임베디드

Opening the Box
Memory는 프로그램들이 실행중일 때에 데이터가 작동중일 때 데이터들이 저장되어지는 곳입니다.
메모리는 프로그램의 데이터와 instruction들이 포함된 DRAM(dynamic random access memory)으로 만들어진 칩들입니다.
- Cache memory(캐시 메모리)는 DRAM의 버퍼 역할을 하는 작고, 빠른 메모리들로 이루어져 있습니다.
- Cache는 SRAM(static random access memory)을 사용하여 만들어졌습니다.
- → SRAM은 DRAM보다 더 작고 빠르지만 비쌉니다.
- Abstraction은 lower-level (hierarchy에서 낮은 레벨 즉 프로세서와 멈)의 detail을 숨김으로써 복잡함을 다룹니다.
A Safe Place for Data
- Volatile memory(휘발성 메모리)는 전원이 꺼질 때 데이터와 인스트럭션들을 잃어버립니다.
- Main memory 또는 primary memory
- 보통 작고 빠릅니다
- ex) DRAM, SRAM
-
- Secondory 메모리
- 메인 메모리보다 큰 사이즈와 느린 속도
- ex) magnetic (hard)disk, flash memory, optical disk(CD,DVD), SSDNonvolatile memory(비휘발성)는 전원이 꺼질때 데이터와 프로그램들이 유지됩니다.
Communicating with Other Computers
- 네트워크는 모든 컴퓨터들을 상호연결 시켜주고, 네트워크에 접속된 컴퓨터들은 몇가지 주요 장점들을 가집니다.
- Communication: 빠른속도로 컴퓨터들끼리 빠른속도로 정보를 교환합니다.
- Resource sharing: 네트워크 상에서 컴퓨터들이 I/O 장치들을 공유합니다.
- Nonlocal access(원격접근): 사용자들은 그들이 사용할 컴퓨터와 가까이 있을 필요가 없습니다.
- Local area network (LAN)은 위치적으로 한정된 공간 내에서 데이터를 옮기도록 설계 되었습니다. (한 건물) → Ethernet(이더넷)
- Wide area network (WAN)은 수백km 이상(대륙 단위)로 확장된 네트워크입니다. → Internet
- Wireless network : 와이파이, 블루투스
Response Time and Throughput
- 개인용 컴퓨터 사용자는 response time(응답시간)을 줄이는 것에 관심이 있습니다.
- 일의 시작과 끝 사이의 시간을 execution time(실행 시간)이라 합니다.
- 데이터센터 관리자는 through(bandwidth)를 늘리는 것을 신경씁니다.
- through(bandwidth) → 한 번에 얼마나 처리할 수 있는가 (대역폭)
- 주어진 시간내에서 완료할 수 있는 작업의 양
프로세서를 더 빠른것으로 교환 → response time과 throughput 둘 다 향상
프로세서를 추가 → response time은 그대로이고 throughput만 향상
우리의 관심사는 response time이며 컴퓨터 X의 성능은 아래로 정의되어집니다.

Measuring Performance
- Time은 컴퓨터 성능의 측정입니다.
- Time: 가장 기본적인 유닛
- 시간의 가장 간단한 정의는 wall clock time, response time, elapsed time이라고 불립니다.
- 이 용어들은 디스크/메모리 accesses, input/output (I/O)activities, 운영체제의 모든 것들을 포함하여 한 작업을 끝내는데 필요한 전체 시간을 의미합니다.
- CPU execution time(or CPU time)은 CPU가 일을 위해 수행한 시간입니다.
- 이것은 I/O 그리고 다른 프로그램들에 의해 사용된 시간을 포함하지 않습니다!!
- CPU time은 user CPU time과 system CPU time으로 나뉘어집니다.
CPU Clocking
→ 1GHz, 2GHz, ….
clock cycle은 프로그램을 실행하기 위해 필요한 clock의 개수이고,
clock time은 clock cycle의 시간입니다.
- 모든 컴퓨터들은 하드웨어에서 작업이 수행될때를 결정하는 clock을 사용하여 만들어집니다.
- clock이 없으면 동작x
- 이런 분리된 시간 간격들은 clock cycles(or ticks, clock ticks, clock periods, clocks, cycles)라고 불립니다.

- 개발자들은 clock period의 길이를 완전한 clock cycle을 위한 시간과 clock rate (frequency)라고 부른다.
- Clock period: clock cycle의 기간 (ex, 250ps)
- Clock rate (or clock frequency): 초당 cycles (ex, 4 GHz)
CPU Performance
- 하드웨어 디자이너가 성능을 향상시키는 방법
- clock cycles의 수를 줄입니다.
- clock cycle의 길이를 줄입니다. (i.e., clock rate를 늘리기)
- 디자이너는 clock cycles와 clock rate를 잘 조율해야합니다.
- CPU execution time은 아래와 같습니다.

- 하드웨어 디자이너들은 아래의 방법으로 성능을 향상 시킬 수 있습니다.
- 프로그램에 요구되는 clock cycles의 수를 줄입니다.
- clock cycle의 길이를 줄입니다.
- 설계자는 clock cycle의 수와 clock rate를 적절히 조율해야합니다.
Instruction Performance
- 프로그램의 실행 시간은 number of Instruction에 달려있습니다.

- Instruction count는 Program, ISA, 그리고 compiler에 의해 결정되어집니다.
- CPI (Clock cycle per instruction)은 프로그램을 실행하기 위한 Instruction들의 평균 수이다.
- CPU hardware에 의해 결정됨.
- 다른 instruction들은 각기 다른 clock cycles을 가지고 있습니다.
Performance Summary

CPU Time은 (프로그램의 명령어 수) * (명령어의 사이클 횟수) * (그것을 수행하는 clock rate)의 값으로 나타납니다.

Amdahl’s Law
▪ Improving an aspect of a computer and expecting a proportional improvement in overall performance
- 컴퓨터의 전체적인 성능을 끌어올리는 것에 관한 법칙이 있습니다.

프로그램을 100초 동안 실행할 때, 80초를 곱셈연산에 사용한다고 가정해봅시다.
이때 곱셈연산의 성능을 5배 향상셔봅시다.

여기서 80/n이 0이 나올 수는 없으므로 5배 이상 향상시키는 방법은 없다는 것을 알 수 있습니다.
- 그러므로, 전체적인 성능을 향상시키기 위해선 특정 부분이 아닌 공통적인 case를 빠르게 하는 것이 좋습니다.
MIPS as a Performance Metric
- MIPS는 컴퓨터의 성능을 측정하기 위하여 사용됩니다.

→ 컴퓨터가 빠를수록 MIPS의 값이 큽니다!
- MIPS는 아래 두개를 의미하는 것은 아닙니다.
- differences in ISAs between computers (같은 컴퓨터에서도 어떤 프로그램을 사용하느냐에 따라 MIPS의 값은 달라집니다.)
- differences in complexity between insturctions
p.s. 노션에서 티스토리로 옮기기 생각보다 귀찮네요...... 꾸며놓은 것도 다 깨지고........