컴퓨터구조를 배우면 유용한 이유
- 소프트웨어와 하드웨어의 관계를 이해한다. 소프트웨어가 하드웨어 상에서 어떻게 돌아가는지 아는 것은 고급 엔지니어가 되기 위한 자질 중 하나이다.
- 성능 분석을 통하여 빠른 컴퓨터의 기준을 정할 수 있다.
- 임베디드와 운영체제를 이해하는데 도움이 된다.
우리가 배울 것
- 프로그램이 어떻게 기계어로 번역되는가?
- 하드웨어/소프트웨어 인터페이스란?
- 프로그램 성능을 어떻게 결정하는가?
- 병렬프로세싱이란?
컴퓨터 성능에 관여하는 요소
- 알고리즘
- 프로그래밍 언어, 컴파일러, 아키텍처
- 프로세서와 메모리 계층구조
- 입출력 시스템, 운영체제
소프트웨어의 추상화 구조(abstraction)
- 응용소프트웨어(application software): 고급언어로 작성
- 시스템소프트웨어(system software)
- 컴파일러: HHL(고급 언어)를 기계어로 바꿔준다
- 운영체제: 하드웨어와 사용자 프로그램의 인터페이스
- 하드웨어(hardware)
추상화(Abstraction)
- low-level detail을 숨겨주는 것
- ISA: 하드웨어와 소프트웨어를 나누어서 개발할 수 있게 해주는 인터페이스
- 프로그램의 내부 구조를 감추고 접근할 수 있는 방법인 인터페이스를 제공하여 전문가가 아닌 사람도 쉽게 사용할 수 있게 해주는 역할
ISA(Instrurction Set Architecture)
: 기계어 명령(intstruction)을 실행하는 컴퓨터의 추상화 모델. 컴퓨터 아키텍처와 동의어로 사용된다.
고급 언어(high-level language)를 사용하는 이유
- 프로그래머가 자연어와 가깝게 생각하도록 해준다.
- 프로그래머의 생산성 향상
- 프로그램 유지보수 용이
- 컴퓨터(기계)에 독립적인 프로그램 제작 가능
- 컴파일러에 의한 코드 최적화가 매우 효율적이다. 따라서 오늘날은 어셈블리어를 거의 사용하지 않는다.
무어의 법칙(Moore's law)
인텔의 경영자 무어: 트랜지스터의 집적도가 2년마다 두 배 이상 상승될 것이다(1965)