본 정리는 CS422-컴퓨터 구조 및 설계 : 하드웨어/소프트웨어 인터페이스. David A. Patterson,존 헤네시 책을 바탕으로 하고 있음을 미리 알립니다.
컴퓨터의 응용 분야의 종류와 그 특성
- 임베디드 컴퓨터
- 특수한 시스템에 내장된 소형 컴퓨터다.
- 슈퍼 컴퓨터
- 서버의 한 종류이다
- 대용량, 고속 처리를 주목적으로 한다. 연구소, 기업, 은행 등에서 사용한다. 보통 여러 대의 단말기를 연결해서 다수의 사용자가 동시에 사용한다.
- 서버 컴퓨터
- Network에 기반되어있다.
- 높은 성능과 신뢰성, 용량을 갖고 있다.
- 소규모 서버에서 건물의 크기까지 매우 다양하다
- 개인용 컴퓨터
- 개인이 사용하는 컴퓨터 Desktop, Laptop 등이 있고 최근에는 Tablet과 SmartPhone도 PC로 인식한다
Eight Great Ideas in Computer Architecture
1. Moore의 법칙을 고려한 설계
Moore의 법칙 : 18~24개월마다 칩에 집적되는 소자의 수가 2배가 된다는 Intel 창립자 Moore의 1965년 예측.
컴퓨터를 설계하는 데에는 수년이 소요되기 때문에 시작 시점보다 종료 시점의 기술을 예상해야 한다.
2. 설계를 단순화하는 추상화
생산성을 높이기 위해서 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화하는 추상화를 사용한다.
3. 자주 생기는 일을 빠르게
드물게 생기는 일을 최적화하는 것보다 자주 생기는 일을 빠르게 만드는 것이 성능 개선에 도움이 된다.
4. 병렬성을 통한 성능 개선
작업을 병렬적으로 수행하여 성능을 높이는 설계를 한다.
5. 파이프라이닝을 통한 성능 개선
파이프라이닝 : 컴퓨터 구조에서 볼 수 있는 병렬성의 특별한 형태.
6. 예측을 통한 성능 개선
예측을 잘못해서 이를 복구하는 비용이 비싸지 않고 예측이 성공할 확률이 비교적 높은 경우 성능이 빨라질 수 있다.
7. 메모리 계층 구조
빠르고 크고 값싼 메모리가 있다면, 그리고 계속 그렇게 발전된다면 컴퓨터의 성능은 가하 급수적으로 개선될 것이다.
그러나 대게 메모리가 크면 성능이 느리고, 작으면 성능이 빠르며, 크고 빠르면 가격이 너무 비싸진다. (ex: cache, HDD, RAM 등등)
이렇게 상충되는 요구를 메모리 계층 구조로 해결하고 있다.
최상위 계층에는 비트다 가격이 제일 비싸지만 작고 빠른 메모리를 사용하고, 최하위 계층에는 느리지만 크고 비트당 가격이 제일 싼 메모리를 사용한다.
8. 여유분을 이용한 신용도 개선
컴퓨터는 빠르기만 해서는 안되고 신뢰할 수 있어야 한다.
모든 물리 소자는 장애가 발생할 수 있으므로, 장애를 감지하고 장애가 난 소자를 대치할 수 있도록 여유분을 준비하여 컴퓨터의 신용도를 개선한다.
System software
하드웨어와 소프트웨어 사이에 일어나는 복잡한 과정을 추상화하기 위해 그 사이에 존재하는 소프트웨어로 컴파일러와 OS가 있다.
1. 컴파일러 : high-level language(상위 수준 언어)를 machine code로 번역하는 역할을 한다. 컴파일러가 다르다면, 같은 high-level language에 대해서 다양한 machine code가 나올 수도 있다.
*컴파일은 총 4가지의 과정을 거치는데 전처리, 컴파일, 어셈블, 링크의 과정을 거친다.
전처리(Precompile)
첫 번째 단계인 전처리 전처리기에 의해 수행됩니다. #으로 시작되는 C 소스 코드는 전처리기에게 실질적인 컴파일이 이루어지기 전에 무언가를 실행하라고 알려준다.
예를 들어, #include의 파일의 내용을 포함하라고 알려주거나 #define 등의 정보를 미리 선언해주는 역할을 한다
컴파일(Compile)
컴파일러라고 불리는 프로그램은 C 코드를 어셈블리어라는 저수준 프로그래밍 언어로 컴파일
어셈블리어는 아래 참조
어셈블(Assemble)
어셈블리 코드를 오브젝트 코드로 변환시키는 작업이다. 컴퓨터의 중앙처리장치가 프로그램을 어떻게 수행해야 하는지 알 수 있는 명령어 형태인 연속된 0과 1들로 바꿔주는 작업. 어셈블러가 해당 작업을 수행한다.
링크(Link)
만약 프로그램이 여러 개의 파일로 이루어져 있어 하나의 오브젝트 파일로 합쳐져야 한다면 링크라는 컴파일의 마지막 단계가 필요하다. 링커는 여러 개의 다른 오브젝트 코드 파일을 실행 가능한 하나의 오브젝트 코드 파일로 합쳐서 실질적인 a.out 등의 실행 파일을 생성한다.
2. OS : user program과 하드웨어 사이의 interface역할을 한다. (ex: window, Linux, iOS)
- input/output 관리
- 메모리와 저장소 할당
- 컴퓨터를 동시에 사용하는 여러 이용 프로그램들 간의 컴퓨터 자원 공유 방법 제공 (스케쥴링 등등)
Levels of Program Code
High-level language
대게 우리가 직접 작성하는 코드 레벨
사람이 이해하기 쉽게 작성된 프로그래밍 언어로서, 저급의 프로그래밍 언어보다 가독성이 높고 다루기 간단하다는 장점이 있다.
컴파일러가 high-level language로부터 어셈블리어를 만드는데, 컴파일러의 종류는 다양하므로 high-level language와 어셈블리어와는 1 대 다 대응이다.
우리가 복잡한 어셈블리어나 기계어 없이도 비교적 이해하기 쉬운 언어로 프로그램을 만들어 낼 수 있게 한다.
이것이 바로 추상화의 힘이다.
Assembly language
기계어와 1대 1 대응이 되는 저급 언어 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다.
Binary Machine Language
이진수로 표현된 하드웨어 표현 방식의 언어. 어셈블리어를 어셈블러가 이진 코드로 바꾸어서 생성된다. 같은 어셈블리어에는 같은 기계어가 만들어지며, 데이터 혹은 명령어로 해독된다.
요점정리
컴퓨터의 고전적 구성요소 다섯 가지
1. 입력
우리가 흔히 아는 입력 장치들 ex) 키보드, 마우스
2. 출력
우리가 흔히 아는 출력 장치들 ex) 스피커, 모니터
3. 메모리
실행 중인 프로그램과 프로그램이 필요로 하는 데이터를 기억한다. ex) RAM, 캐시 메모리
컴퓨터가 꺼지면 어떻게 될까? 실행 중인 프로그램에 대한 정보는 종료되므로 위에서 설명한 메모리에서 삭제될 것이다.
이때 정보는 보조기억장치에 저장된다.
자세한 사항 ↓
보조기억장치
메모리 계층구조에서 메인 메모리보다 한 단계 아래 계층에 해당한다.
- HDD
매우 크고 싸지만 매우 느리다 ex) 자기 디스크
- SDD
플래시 메모리로 싸지만 상대적으로 빠르고 크다.
100000번 내지 1000000번 쓰기를 한 후에는 못쓰게 된다는 특징이 있다.
4. 데이터패스
프로세스의 논리적 구성 중 한 부분이다. 연산을 직접 수행한다. 인간의 몸으로 생각하면 근육으로 생각하면 될듯하다.
5. 제어 유닛(control)
프로세스의 논리적 구성 중 한 부분이다. 명령어가 뜻하는 바에 따라 데이터 패스, 메모리, 입출력 장치가 할 일을 지시한다.
즉, 크게 입출력 장치의 입출력, 메모리의 저장, CPU의 논리 수행으로 컴퓨터는 이루어진다고 보면 된다.
컴퓨터 간의 통신
지금까지 데이터의 입력, 계산, 출력, 저장방법 등을 정리했는데, 여기서 의문점이 하나 생길 것이다.
바로 컴퓨터 간의 통신 즉, 네트워크이다.
컴퓨터가 네트워크로 연결되어 있으면 다음과 같은 장점이 있다.
- 통신 : 컴퓨터끼리 고속으로 정보를 주고받을 수 있다.
- 자원 공유 : 컴퓨터마다 입출력 장치를 따로따로 갖출 필요 없이 네트워크 상의 모든 컴퓨터가 입출력 장치를 공유할 수 있다.
- 원격 접근 : 컴퓨터들을 연결하면 멀리 떨어져 있는 컴퓨터도 쉽게 이용할 수 있다.
이더넷 (Ethernet)
대략 1KM 정도 거리를 연결할 수 있고, 초당 40기가바이트를 전송할 수 있다.
근거리 네트워크의 일종이다. (LAN)
원거리 네트워크 (WAN)
여러 대륙들을 연결하여 웹을 지원하고 있는 인터넷의 근간을 이룬다.
보통 광섬유로 구성하며 통신회사에서 임대해 준다.
Abstractions
추상화의 주된 목적은 하드웨어 상에서 돌아가는 machine code, 각종 회로들, 저장장치들의 복잡한 것을 모두 알기에는 배울 것이 너무 많고 복잡하기 때문에 이것을 단순화하는 데에 목적이 있다.
Instruction Set Architecture
- 하드웨어와 low-level software 사이의 인터페이스이다.
- machine language bit patterns 등의 명령어를 표준화한다.
→ Binary compatibility (이진 코드 호환성)란?
중앙 처리 장치의 구조가 동일한 컴퓨터들 사이에서, 응용 프로그램의 호환 운영이 가능하도록 만든 규격.
( ex) 맥 os에서 맥 프로그램들만 window os에선 window기반 프로그램들만 돌아간다.)
즉, ISA를 통해 다른 컴퓨터들 사이에서의 같은 응용 프로그램의 실행이 가능해졌다.
'CS > 컴퓨터 구조' 카테고리의 다른 글
[Chapter 2.2 컴퓨터 구조 및 설계] 2진법, 2의 보수, 16진법 (0) | 2022.07.07 |
---|---|
[Chapter 2.1 컴퓨터 구조 및 설계] 레지스터의 역할과 메모리의 역할 / MIPS 어셈블리어 (산술 연산, 메모리 연산, 상수 연산) (0) | 2022.07.07 |
[Chapter 1.4 컴퓨터 구조 및 설계] 1장 총 정리 (0) | 2022.07.06 |
[Chapter 1.3 컴퓨터 구조 및 설계] 컴퓨터 발전의 장벽과 병렬프로세서의 등장, Amdal's law와 MIPS (0) | 2022.07.06 |
[Chapter 1.2 컴퓨터 구조 및 설계] 컴퓨터의 성능과 CPU Time (0) | 2022.07.05 |