The computer Revolution
Classes of Computers
- Personal computers (Desktop)
- 범용적인 목표를 갖고, 다양한 소프트웨어가 작동되야 합니다.
- 일반적으로 성능과 비용의 trade-off관계가 성립할 수 있습니다.
- Server computers
- 네트워크 베이스
- 높은 용량과 성능, 신뢰가 필요합니다.
- Supercomputers
- 서버 컴퓨터의 한 종류입니다.
- 높은 수준의 과학/공학적 계산을 수행합니다. 하지만 전체적인 컴퓨터 시장에서 매우 작은 부분을 차지합니다.
- Embedded computers
- 어떤 시스템에 숨겨진 부분으로서 동작합니다.
- 성능이나 비용, 배터리 등 다양한 제약조건이 존재합니다.
The postPC era
- Personal Mobile Device (PMD)
- 개인용 모바일 기기
- 배터리에 의해 동작되고 인터넷과 연결되어있습니다.
- 작은 스마트폰부터 시작해서 태블릿, VR기기 등 다양하게 존재합니다.
- Cloud computing
- Warehouse Scale Computers (WSC): 창고처럼 쌓여있는 서버를 말합니다. 수천개의 서버를 연결하여 하나의 cluster를 만듭니다.
- Software as a Service (Saas): Saas모델에서는 사용자가 소프트웨어를 본인의 기기에 설치하지 않고도 서비스를 사용가능합니다.
Understanding Performance
컴퓨터 성능에 영향을 미치는 요소들입니다.
- Algorithm
- 좋은 알고리즘은 동작해야하는 명령, 계산의 수를 결정합니다(Big-O notation).
- Programing language, compiler, architecture
- 프로그래밍 언어나 컴파일러, 컴퓨터 구조는 하나의 명령당 수행해야하는 machine instruction의 수를 결정합니다. 즉, Instruction Count를 결정합니다.
- Processor and memory system
- 얼마나 빠르게 실행되는지를 결정합니다.
- I/O system (including OS)
- I/O 명령이 얼마나 빠르게 실행되는지를 결정합니다.
Below Your Program
(1) 먼저 응용 프로그램이 가장 위에 존재합니다. 이는 높은 수준(high-level)의 언어로 작성된 프로그램입니다. (2) 그 다음으로는 System software가 존재합니다. Compiler와 OS가 그 예시입니다. Compiler는 인간이 작성한 코드를 기계 코드로 번역하는 역할을, OS는 프로그램을 감독하며 자원들을 관리하는 역할을 수행합니다. (3) 가장 아래에는 Hardware가 존재합니다. Processor, memory, I/O controller등이 있습니다.
Levels of Program Code
Program code에도 수준이 존재합니다.
- High-level language
- 기계 독립적인 언어입니다(e.g., C). 이를 통해 높은 생산성과 이식성을 제공받습니다.
- 이렇게 높은 수준의 언어를 통해 프로그래머가 좀 더 자연어스럽게 생각할 수 있게 됩니다. 또한 코드를 읽고 이해하기 쉽기 때문에 디버깅이 편리하는 등 생산성과 유지보수성의 향상으로 이어집니다.
- 또한 기계 독립적이기에 매우 효과적으로 프로그램을 생산할 수 있습니다.
- Assembly language
- 기계어를 읽을 수 있게 표현한 언어입니다.
- High-level language를 compiler를 통해 compile하면 생기는 언어입니다.
- Binary Machine language
- bits으로 표현되는 언어입니다.
- 기계 종속적인 언어로 Assembly어로 표현된 언어를 Assembler를 통해 컴파일하면 생기는 언어입니다.
Abstractions
추상화를 통해 사용자는 낮은 수준의 복잡성을 다루는데 도움을 받습니다. 이는 Instruction set architecture(ISA)를 통해 이루어집니다.
ISA를 통해 SW와 HW를 연결시킬 수 있습니다. SW는 HW의 구조에 상관없이 ISA가 제공하는 인터페이스에 따라 동작하면 되고, HW도 마찬가지입니다. 이는 사용자가 HW의 내부적인 디테일까지 신경쓰지 않아도 됨을 의미합니다.
https://inyongs.tistory.com/108
[ 컴퓨터구조 ] ISA (Instruction Set Architecture)
ISA (Instruction Set Architecture) ISA란? 하드웨어와 소프트웨어 사이의 Interface를 정의하는 것. 하드웨어와 프로그램 사이의 매개체 역할을 하는 것이다. ISA는 많다 세상에는 많은 ISA가 있다. 칩을 만드
inyongs.tistory.com