Computer Organization and Design MIPS Edition | David A. (Pardee Professor of Computer Science, Emeritus, University of Californ
Computer Organization and Design MIPS Edition | The fifth edition of Computer Organization and Design-winner of a 2014 Textbook Excellence Award (Texty) from The Text and Academic Authors Association-moves forward into the post-PC era with new examples, ex
product.kyobobook.co.kr
컴퓨터의 발전
지속적인 컴퓨터의 발전은 우리 삶에 많은 영향을 미치고 있다. (자율주행 자동차, 모바일, 휴먼 게놈 프로젝트, WWW, AI 등..)
컴퓨터의 종류
PC, Server computer, Super computer, Embedded computer 등 전통적인 컴퓨터들이 있고, 하드웨어와 기술이 발전함에 따라 PostPC가 등장했다.
The PostPC Era
Personal Mobile Device
이젠 PC 산업보다 모바일 산업이 더 발전하고 있고, 이러한 스마트폰을 PMD라고 한다.
Cloud computing
기존 서버를 대체하는 클라우드 서비스
대용량의 자원을 인터넷을 사용하여 서비스한다.
소프트웨어 자원 또한 인터넷을 사용하여 서비스할 수 있다 (ex: MS Office)
Understanding Performance
어떠한 요소들이 프로그램의 성능에 영향을 미치는가
- Algorithm
수행되는 operation의 수로 정의된다.
- 프로그래밍 언어, 컴파일러, 아키텍처
operation 당 수행되는 machine instruction의 수로 정의된다.
operation은 좀 더 추상화된 개념이며, machine instruction은 CPU에서 수행되는 어셈블리 수준의 명령같이 기계어 수준을 말한다.
- 프로세서와 메모리 시스템
명령이 얼마나 빠르게 수행되는가로 정의된다.
- I/O 시스템
입출력 작업이 얼마나 빠르게 수행되는가로 정의된다.
Seven Great Ideas in Computer Architecture
- Use Abstraction to Simplify Design
추상화를 통해 Hardware와 Software를 구분하고, Hardware를 단순하게 디자인 할 수 있게 했다.
- Make the Common Case Fast
많이 쓰이는 Instruction을 빠르게 만들었다.
- Performance via Parallelism
대규모의 명령어를 한 번에 처리할 수 있도록 병렬 처리 기술을 발전시켰다.
- Performance via Pipelining
Instruction의 흐름을 효율적으로 처리할 수 있도록 시간적으로 병렬 처리를 할 수 있는 파이프라인 기술을 발전시켰다.
- Performance via Prediction
Instruction의 수행 결과를 예측하여 성능을 발전시켰다.
- Hierarchy of Memories
속도가 빠르고 용량이 큰 값싼 메모리는 없다.
상황에 맞게 빠르고 비싼 메모리는 작게 만들어 CPU 근처에 두고, 크고 느린 메모리는 Main memory로 둔다. (계층적 구조)
- Dependability via Redundancy
컴퓨터의 신뢰성을 높이기 위한 여분 저장 기술..
Below You Program - Program에 대해서 자세히..
- Applications software
일반적으로 사용자들이 사용하는 high-level language로 쓰여졌다.
high-level language : 사람의 입장에서 쓰이는 언어. 기계어를 사람이 쓰기 쉽게 만들었기 때문에 생산성과 이식성이 높다.
Assembly language : Instruction을 나타내는 문자 표현. high-level language가 컴파일러에 의해 어셈블리어로 번역된다.
Hardware representation : 이진 표현. Instruction과 Data를 나타낸다.
- Systems software
컴파일러나 OS같은 기본적인 시스템 소프트웨어.
컴파일러 : high-level language를 기계어로 번역시켜준다.
OS: 프로그램과 하드웨어 사이의 interface 역할. OS가 있기 때문에 PC에서 다양한 기능을 손쉽게 사용할 수 있다.
- Hardware
프로세서, 메모리, 입출력 장치 등 가장 마지막에 처리.
Components of Computer
컴퓨터의 구성 요소들
- I/O 장치를 갖추고 있음
- User-interface devices : 디스플레이, 키보드, 마우스 등
- Storage devices : HDD, SSD, CD 등 (휘발성/비휘발성)
- Network Adaptor : 다른 컴퓨터들과 상호작용하기 위한 것들
Abstractions
추상화는 low-level에서 신경써야할 복잡함을 줄여준다.
ISA (Instruction Set Architecture)
- 하드웨어와 소프트웨어 사이의 소통을 도와주는 인터페이스.
- 소프트웨어는 Instruction으로 구성되어 있고, 하드웨어는 이것을 실행하고 Instruction을 통해 데이터를 교환한다.
Application binary interface
컴파일러 등 system software가 application을 실행시킬 수 있도록 도와준다.
Implementation
low-level의 복잡한 것들을 감춰줌으로써 high-level의 것들을 좀 더 구현하기 쉽게 도와준다.
Instruction Set & Instruction Set Architecture
- 하드웨어와 소프트웨어는 각자 무엇을 하는지 모르고, 서로 instruction이 들어오면 처리해서 결과를 넘겨준다.
- 이 때, 하드웨어와 소프트웨어가 서로 연결될 수 있도록 도와주는 것이 바로 Instruction Set.
Instruction Set Architecture
- 하드웨어와 소프트웨어 사이의 가장 중요한 인터페이스.
- Instruction Set을 설계하고 구현하는 방법을 표준화한 것. 한마디로 ISA는 명령어의 집합을 설계하는 방법에 대한 명세서이고, Instruction Set은 명세서에서 정의한 명령어 집합 자체이다.
- 장점 : 같은 아키텍처로 다른 implement를 만들 수 있다. (ex: intel, amd의 프로세서. (x86 아키텍처 사용))
- 단점 : 새로운 아키텍처가 나오기 어렵다. (새로운 ISA가 도입되기 위해서는 기존과의 호환성이 보장되어야 하는데, 이것이 쉽지 않음)