봉황대 in CS

[Chapter 1. 컴퓨터 추상화 및 관련 기술] 컴퓨터와 추상화, 명령어 집합 구조(ISA) 본문

Computer Science & Engineering/Computer Architecture

[Chapter 1. 컴퓨터 추상화 및 관련 기술] 컴퓨터와 추상화, 명령어 집합 구조(ISA)

등 긁는 봉황대 2022. 8. 12. 23:27

* 본 글은 '컴퓨터 구조 및 설계: 하드웨어/소프트웨어 인터페이스(Computer Organization and Design: The Hardware/Software Interface) 5th edition'의 내용과 2021학년도 1학기에 수강한 '컴퓨터 구조' 과목 강의 내용을 함께 정리하여 작성하였습니다.

 

컴퓨터 응용 분야의 종류와 그 특성


개인용 컴퓨터 (Personal Computer, PC)

일반적으로 사용되는 컴퓨터

낮은 가격으로 단일 사용자에게 좋은 성능을 제공하는 것이 중요시된다.

 

 

서버 컴퓨터 (Server Computer)

보통 네트워크를 통해서만 접근된다.

 

높은 성능을 가지며, 연산과 입출력 용량의 확장성이 크다.

고장이 난다면 큰 손해가 발생하기 때문에 높은 신뢰성을 필요로 한다.

(high performance, capacity, reliability)

 

 

슈퍼 컴퓨터 (Super Computer)

서버의 한 종류로, 여러 대의 단말기를 연결해서 다수의 사용자가 동시에 사용한다.

대용량, 고속 처리를 주목적으로 하여 대형 과학 및 공학 계산에 주로 사용된다. (ex. 일기 예보, 석유 탐사, 단백질 구조 결정 등)

 

 

임베디드 컴퓨터 (Embedded Computer)

보통 다른 하드웨어와 한 덩이로 묶인 단일 시스템으로 공급된다.

한 가지 응용을 수행하거나 서로 연관된 일련의 프로그램을 실행하도록 설계되어 있다.

 

컴퓨터 구조 분야의 8가지 위대한 아이디어


1. Moore의 법칙을 고려한 설계

Moore의 법칙(Moore's Law)이란,

18~24개월마다 칩에 집적되는 소자의 수가 2배가 된다는 Intel 창립자 Moore의 1965년 예측을 말한다.

 

즉, 컴퓨터를 설계하는 데에는 수년이 소요되기 때문에 시작 시점보다 종료 시점의 기술을 예상해야 한다는 것이다.

 

 

2. 설계를 단순화하는 추상화 (Use Abstraction to Simplify Design)

추상화(abstraction)란, 하위 수준의 상세한 사항을 안 보이게 함으로써 상위 수준 모델을 단순화하는 것이다.

생산성을 높이는 핵심 기술 중 하나는 추상화를 사용하는 것이다.

 

 

 

3. 자주 생기는 일을 빠르게 (Make the Common Case Fast)

드물게 생기는 일을 최적화하는 것보다 자주 생기는 일을 빠르게 만드는 것이 성능 개선에 도움이 된다.

 

 

 

4. 병렬성을 통한 성능 개선 (Performace vie Parallelism)

작업을 병렬적으로 수행하여 성능을 높이는 설계를 한다.

 

 

 

5. 파이프라이닝을 통한 성능 개선 (Performance via Pipelining)

파이프라이닝(pipelining)은 컴퓨터 구조에서 많이 볼 수 있는 병렬성의 특별한 형태이다.

 

 

 

6. 예측을 통한 성능 개선 (Performance via Prediction)

예측을 잘못해서 이를 복구하는 비용이 비싸지 않고 예측이 성공할 확률이 비교적 높은 경우,

예측을 통해 성능이 빨라질 수 있다.

 

 

 

7. 메모리 계층구조 (Hierarchy of Memories)

메모리의 속도는 컴퓨터의 성능을 좌우하고, 메모리의 크기가 풀 수 있는 문제의 크기를 제한한다.

우리는 빠르고 크고 값싼 메모리를 원한다.

 

하지만 대게 메모리가 크면 성능이 느리고, 작으면 성능이 빠르며, 크고 빠르면 가격이 너무 비싸진다.

 

이렇게 상충되는 요구를 컴퓨터 설계자들은 메모리 계층 구조로 해결하고 있다.

 

최상위 계층에는 비트 당 가격이 제일 비싸지만 작고 빠른 메모리를 사용하고,

최하위 계층에는 느리지만 크고 비트 당 가격이 가장 싼 메모리를 사용한다.

 

 

 

8. 여유분을 이용한 신용도 개선 (Dependability via Redundancy)

컴퓨터는 빠르기만 해서는 안 되고 신뢰할 수 있어야 한다.

 

모든 물리 소자는 장애가 발생할 수 있으므로,

장애를 감지하고 장애가 난 소자를 대치할 수 있도록 여유분을 준비하여 컴퓨터의 신용도를 개선한다.

 

 

프로그램 밑의 세계


시스템 소프트웨어 (System Software)

응용 프로그램은 수백만 줄의 코드로 구성되지만, 컴퓨터 하드웨어는 단순한 저수준의 명령어만 실행 가능하다.

 

하드웨어와 응용 소프트웨어 사이에 일어나는 복잡한 과정을 추상화하기 위해

그 사이에는 여러 가지 시스템 소프트웨어가 존재하며, 그 종류로는 운영체제, 컴파일러, 로더, 어셈블러가 있다.

 

오늘날 모든 컴퓨터 시스템에서 중심이 되는 두 가지는 운영체제와 컴파일러이다.

 

 

1. 운영체제 (Operating System)

 

사용자 프로그램과 하드웨어 간의 인터페이스 역할을 하며,

실행 프로그램을 위해 컴퓨터 내의 자원에 대한 각종 서비스와 감독 기능을 제공한다.

 

1. Input / Output 관리

2. 보조 기억 장치 및 메모리 할당

3. 컴퓨터를 동시에 사용하는 여러 응용 프로그램들 간의 컴퓨터 자원 공유 방법 제공 (스케줄링 등등)

 

 

2. 컴파일러 (Compiler)

 

상위 수준 언어(high-level programming language)로 작성된 프로그램을

하드웨어가 실행할 수 있는 명령어, 어셈블리 언어(assembly language)로 번역하는 일을 한다.

 

컴파일러가 다르다면, 같은 상위 수준 언어에 대해서 다양한 기계어가 나올 수도 있다.

 

* 컴파일은 총 4가지의 과정을 거친다. (전처리 - 컴파일 - 어셈블 - 링크)

 

 

 

프로그램 코드의 단계 (Levels of Program Code)

1. 상위 수준 언어 (High-level Language)

사람이 이해하기 쉽게 작성된 프로그래밍 언어로서, 저급(low-level)의 프로그래밍 언어보다 가독성이 높고 다루기 간단하다.

(ex. C, C++, Java)

 

컴파일러나 어셈블러는 상위 수준 언어 프로그램을 어떤 컴퓨터의 기계어로도 번역할 수 있기 때문에

프로그램을 개발한 기종과 상관없이 어느 컴퓨터에서든 실행이 가능하다. (machine non-dependent)

 

 

컴파일러(Compiler)가 상위 수준 언어를 어셈블리 언어로 번역하는데,

컴파일러의 종류는 다양하므로 상위 수준 언어와 어셈블리 언어와는 1 대 다 대응이다. (one-to-many)

 

 

2. 어셈블리 언어 (Assembly Language)

기계 명령어를 기호 형태로 표현한 것이다.

add A, B

컴퓨터가 수행할 명령어를 한 줄에 하나씩 작성해야 한다.

 

 

어셈블러(Assembler)가 어셈블리 언어를 기계어(이진 코드)로 번역한다.

같은 어셈블리어에는 같은 기계어가 만들어지며, 데이터 혹은 명령어로 해독된다.

 

 

3. 기계어 (Binary Machine Language)

이진수로 표현된 하드웨어 표현 방식의 언어이다.

1000110010100000

각 문자를 이진 자리 수(binary digit) 또는 비트(bit)라고 부른다.

 

명령어(instruction)는 컴퓨터 하드웨어가 이해하고 수행하는 명령이다.

위의 비트는 컴퓨터에게 두 숫자를 더하라는 명령이 된다.

 

저급 언어 컴퓨터 구조에 따라 사용하는 기계어가 달라진다. (machine dependent)

어셈블리 언어와 기계어는 1대 1 대응(one-to-one)이며, 기계어에 대응되어 만들어지는 어셈블리 언어도 각각 다르게 된다.

 

 

 

우리는 복잡한 어셈블리 언어나 기계어 없이, 이해하기 쉬운 상위 수준 언어로 프로그램을 만들어 낼 수 있다.

이것은 추상화 덕분에 가능해진 것이다.

 

컴퓨터의 구성 요소


컴퓨터의 고전적 구성 요소 다섯 가지는 입력, 출력, 메모리, 데이터패스(datapath), 제어(control) 유닛이다.

데이터패스와 제어는 묶어서 프로세서(processor) 또는 CPU(Central Processor Unit)로 부른다.

 

1. 프로세서는 메모리(memory)에서 명령어와 데이터를 읽는다.

 

2. 데이터패스는 연산을 수행하고,

    제어 유닛은 데이터패스, 메모리, 입력장치, 입출력 장치의 동작을 결정하는 신호를 내보낸다.

 

3. 입력장치는 메모리에 데이터를 쓰고, 출력장치는 메모리에서 데이터를 읽는다.

 

 

 

메모리 (Memory)

메모리는 실행 중인 프로그램과 프로그램 실행에 필요한 데이터의 저장소이다.

이는 DRAM(Dynamic Random Access Memory) 칩으로 구성되어 있다.

 

DRAM 여러 개를 묶어 프로그램의 명령어와 데이터를 기억하는 데 사용되는데,

DRAM은 용량이 크지만 속도가 느리다.

 

따라서 DRAM의 버퍼 역할을 하는 작고 빠른 메모리, 캐시 메모리(cache memory)를 프로세서 내부에 둔다.

 

캐시는 SRAM(Static Random Access Memory)이라는 다른 메모리 기술을 이용하며,

속도가 DRAM보다 빠르지만 집적도가 낮아서 가격이 비싸다.

 

* 집적도 : 동일한 면적에서 반도체 칩이 얼마나 많은 논리소자로 구성되어 있는지를 나타내는 척도

* 논리소자 : 논리 연산을 하는 최소 단위의 회로

 

 

 

DRAM과 SRAM은 메모리 계층구조의 두 계층을 구성한다.

 

컴퓨터 간의 통신

컴퓨터 네트워크를 통해서 컴퓨터 전체가 서로 연결되어 사용자의 계산 능력을 확장시켜 준다.

네트워크로 컴퓨터들을 연결하면 다음과 같은 장점이 있다.

 

1. 통신

컴퓨터끼리 고속으로 정보를 주고받을 수 있다.

 

2. 자원 공유

컴퓨터마다 입출력 장치를 따로따로 갖출 필요 없이

네트워크 상의 모든 컴퓨터가 입출력 장치를 공유할 수 있다.

 

3. 원격 접근

컴퓨터들을 연결하면 멀리 떨어져 있는 컴퓨터도 쉽게 이용할 수 있다.

 

 

근거리 네트워크 (Local Area Network, LAN)

지리적으로 제한된 지역(ex. 한 건물 내)에서 데이터를 주고받도록 설계된 네트워크를 말한다.

 

가장 널리 알려진 이더넷(Ethernet)이 LAN의 일종이다.

(연결할 수 있는 거리는 대략 1km 정도, 초당 40기가 비트 전송 가능)

 

 

원거리 네트워크 (Wide Area Network, WAN)

여러 대륙들을 연결하여 웹(World Wide Web)을 지원하고 있는 인터넷(Internet)의 근간을 이루는 네트워크를 말한다.

보통 광섬유(optical fiber)로 구성하며, 통신회사에서 임대해준다.

 

명령어 집합 구조 (Instruction Set Architecture)


하드웨어와 소프트웨어는 추상화를 이용하여 계층적으로 구성된다.

즉, 각 하위 계층의 복잡하고 세세한 부분이 상위 계층에서는 보이지 않도록 하는 것이다.

 

여러 계층의 추상화 중 가장 중요한 부분은 하드웨어와 최하위 소프트웨어 간의 인터페이스이다.

이를 명령어 집합 구조(Instruction Set Architecture)라고 하며, 단순히 구조(Architecture)라고도 부른다.

 

 

장점

같은 ISA 위에서는 여러가지의 구현이 가능하다. (똑같은 명령어에 대하여 다른 결과를 낼 수 있음)

ISA를 통해 다른 컴퓨터들 사이에서 같은 응용 프로그램의 실행이 가능해졌다.

 

단점

새로운 ISA로 변경할 경우 기존의 소프트웨어들이 실행되지 않기 때문에

새로운 ISA가 등장할 가능성이 적어 시장이 독점된다.

 

 

* 이진 코드 호환성 (Binary Compatibility)

중앙 처리 장치의 구조가 동일한 컴퓨터들 사이에서 응용 프로그램의 호환 운영이 가능하도록 만든 규격

 

 


 

정리하자면,

하드웨어 상에서 돌아가는 기계어나 각종 회로들, 저장 장치들의 세세한 모든 것들은 너무 많고 복잡하기 때문에

이를 단순화하는 목적으로 컴퓨터 시스템에 추상화가 사용된다.

 

 

반응형
Comments