본문 바로가기

CS Knowledge/Computer Structure

Computer Structure - Basic

이 블로그에서는 교재 '최신 컴퓨터 구조(임석구 홍성규 지음)을 참고합니다.

컴퓨터의 기본 구조에 대한 블로그입니다.

 

 

1. 컴퓨터 시스템의 구성

2. 폰 노이드만, 비 폰노이드만, 하버드 구조

 

 

컴퓨터 시스템의 구성

 

 

 

 

하드웨어

 

정의

- 컴퓨터에서 각종 정보를 입력하고 처리하고 저장하는 동작이 실제로 일어나게 해주는 물리적인 설계

 

특징

1) 하드웨어 아래 중앙처리 장치, 기억장치, 입출력 장치 등은 시스템버스로 연결되어 있다.

2) 주기억장치는 휘발성 메모리로 반도체 칩으로 구성되어 고속이다. 캐시역할을 한다, 보조 기억 장치는 비휘발성이다. 

3) 입력장치들은 데이터를 2진 형태로 변환하여 컴퓨터 내부로 전달한다.

 

 

CPU

- 프로그램 실행과 데이터 처리를 담당

- 프로세서 or 마이크로 프로세서로 불림

 

구성

1) 산술 논리 연산 장치 : 산술, 논리, 보수, 시프트 연산등을 수행한다.

2) 제어 장치 : 프로그램의 명령어를 해독하여 명령어 실행에 필요한 제어 신호(입출력 등) 발생

3) 레지스터 : CPU의 임시기억 장치, CPU의 캐시

 

 

시스템 버스

- CPU와 입출력 장치, 기억 장치 사이에 정보 교환하는 통로

- 주기억 장치를 제외하고 CPU와 다른 장치들(보조 기억, 입력장치, 출력장치) 사이의 연결은 제어기가 더해져 연결된다.

 

구성

1) 주소 버스 : 기억, 입출력 장치의 주소 정보를 전송하는 신호선들로 단방향이다.

2) 데이터 버스 : 기억, 입출력 장치 사이에 데이터를 전송하기 위한 신호선들로 양방향이다.데이터의 비트수를 결정한다.

3) 제어 버스 : CPU가 시스템 내의 각종 요소의 동작을 제어하는데 필요한 신호선들의 집합으로 단방향이다.

 

 

 

컴퓨터 시스템의 수행 기능 (하드웨어)

 

프로그램 실행 : CPU가 주기억 장치에서 프로그램 코드를 읽어 실행

데이터 저장 : 프로그램 실행 결과를 주기억 장치에 저장

데이터 이동 : 보조 기억 장치에 저장되어 있는 명령어와 데이터 블록을 주기억 장치로 이동

데이터 입출력 : 입력 장치들을 이용해 데이터 입력, CPU가 처리한 결과를 출력

제어  : 프로그램에서 정해진 순서에 따라 실행되도록 제어 신호를 발생

 

 

 

 

소프트 웨어

 

정의

- 하드웨어를 제어하고 지시하는 모든 종류의 프로그램을 의미

- 시스템, 응용 소프트웨어로 구분.

 

프로그램

- 컴퓨터를 사용해 어떤 일을 처리하기 위해 순차적으로 구성된 명령어들의 집합을 의미.

 

시스템 소프트웨어

- 하드웨어를 관리하고 응용 소프트웨어를 실행시키는 프로그램

 

시스템 소프트웨어의 구성 

- 운영체제 : 하드웨어 장치들을 관리

- 언어 번역 프로그램

   - 인터프리터(소스 프로그램을 한줄씩 기계어로 변환, Python)

   - 컴파일러(소스 프로그램을 한번에 기계어로 변환, JAVA)

- 유틸리티 프로그램

    - 장치들을 구동하는 데 필요한 드라이버 프로그램

    - 백신 프로그램

    - TCP/IP 등의 네트워크 연결 프로그램

- 링커 : 여러 프로그램들로 구성된 하나의 목적 프로그램, 라이브러리들을 하나의 실행가능한 프로그램으로 연결하는 프로그램

- 로더 : 보조 기억 장치의 데이터나 프로그램을 주기억 장치에 적재하고 실행가능한 상태로 만들어 주는 프로그램

 

응용 소프트웨어

- 애플리케이션을 의미

 

프로그램 처리 과정

- 고급언어 프로그램 -> 어셈블리어 프로그램  -> 기계어 프록램 순으로 변환

- 고급언어 : 프로그래밍 언어를 의미.

- 어셈블리어 : 고급언어의 내용에 따라 데이터를 로드하고 더하고 저장하는 작업을 하는 언어

- 기계어 : 2진수로 변환된 언어

 

예시

1. 고급언어

-> Z=X+Y, X와 Y를 합하여 그 결과를 Z에 저장한다.

2. 어셈블리어

-> LOAD A, X, 메모리 X번지의 내용을 읽어 레지스트 A에 로드

-> ADD A, Y. 메모리 Y번지의 내용을 읽어 레지스트 A에 있는 내용괴 더함

-> STOR Z, A. 레지스터 A의 내용을 메모리 Z에 저장한다.

3. 기계어 프로그램(연산코드와 오퍼랜드)

-> 001 01010 

-> 011 01011

-> 010 01100

- 연산코드 : CPU가 수행할 연산을 지정하는 비트들 ex) 001 - LOAD 코드, 011 - ADD 코드, 010 - STOR 코드

- 오퍼랜드 : 연산에 사용될 데이터가 저장되어 있는 기억 장치 주소

 

 

" 결과적으로 고급언어에서 기계어로 변환되어 주기억 장치에 적재 "

-> 주기억 장치에는 워드 단위(연산코드+오퍼랜드)로 명령어 저장

 

 

컴퓨터 시스템의 계층 레벨

레벨 6 : 응용프로그램 ex) IDE, 엑셀 등

-> 사용자 레벨, 응용 프로그램들로 구성

레벨 5 : 고급언어로 구성 ex) JAVA, Python 등

-> 고급언어, 어셈블리어, 기계어 순으로 변환

레벨 4 : 어셈블리어 ex) 어셈블리 코드

-> 하나의 어셈블리 명령어가 하나의 기계어로 변환

레벨 3 : 시스템 소프트웨어 ex) OS 등

-> 운영체제와 라이브러리로 구성, 다중 프로그래밍, 메모리 할당, 프로세스 관리 등 담당

레벨 2.  기계어 ex) 명령어 세트 아키텍셔 등

-> 기계어로 구성.

레벨 1 : 제어 ex) 하드와이어 또는 마이크로 프로그램

-> 레벨2의 명령어 들을 해독하고 실행, 

레벨 0 : 디지털 논리 ex) 논리 게이트, 와이어 등

 

 

 

 

폰노이드만, 비 폰노이드만, 하버드 구조

 

폰노이드만 구조의 프로그램 처리 과정

1. 프로그램 카운터를 이용해 메모리에서 실행할 명령어를 인출한다.

2. 제어 장치는 이 명령어를 해독한다.

3. 명령어를 실행하는데 필요한 데이터를 메모리에서 인출해 레지스터에 저장한다.

4. 산술 논리 연산 장치는 명령어를 수행하고, 레지스터나 메모리에 결과를 저장한다.

 

 

폰노이만 병목 현상

- CPU는 필요한 명령어나 데이터를 메모리에서 가져오고 연산을 한 후, 결과를 다시 메모리에 저장한다. 또한 저장된 데이터가 필요할 땐 메모리에서 다시 가져와 사용한다. 이런 구조는 메모리나 시스템 버스에 병목현상이 생겨 성능을 저하시킨다.

 

 

비 폰노이만 구조

- 폰노이만 구조가 아닌 컴퓨터를 일컫는 말로 데이터 처리 속도를 향상시키기 위해 프로그램 일부를 하드웨어화하거나 병렬 추론 기능 등을 채택한 컴퓨터를 일컫는 말임.

 

 

하버드 구조

- 폰노이만의 병목현상의 문제점을 보완한 구조

-> 명령어 메모리 영역과 데이터 메모리 영역을 분리하고 서로 다른 시스템 버스로 연결하여 CPU는 동시에 명령어와 데이터를 읽기 가능