[Computer Architecture] Ch.1 Computer System Outline (1)

2024. 4. 16. 02:32카테고리 없음

< 컴퓨터 시스템 개요 차시의 목차 >

- 기본

- 1.1 컴퓨터의 기본 구조

- 1.2 정보의 표현과 저장

- 1.3 시스템의 구성

- 1.4 컴퓨터구조의 발전과정

 

< 기본 >

1. 컴퓨터 시스템의 구성

- 소프트웨어

: 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(command)들의 집합

    => 응용 소프트웨어(문서, 웹브라우저, ...)

    => 시스템 소프트웨어(OS, ...)

- 하드웨어

: 컴퓨터 정보들의 전송 통로를 제공해주고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체

 

2. 컴퓨터 하드웨어의 주요 요소들

  1. 매인 보드: 주 기판(모든 장치를 연결)
  2. CPU 및 GPU 칩: GPU는 AI, Graphics, 병렬처리에 쓰임
  3. 주기억장치: 메모리
  4. 확장보드: 사운드 카드 등
  5. 전원 공급 장치(power supply): 냉각기 필수
  6. 광 저장장치(보조기억장치): CD-ROM, DVD
  7. 하드 디스크, SSD(보조기억장치)
  8. 키보드(입력장치)
  9. 마우스(입력장치)
  10. 디스플레이 모니터(출력장치)

 

< 1.1 컴퓨터의 기본 구조 >

- 컴퓨터의 기능: 프로그램 코드를 정해진 순서대로 수행

> 데이터를 읽어서, 처리하고, 저장한다(read, processing, store).

- 주요 구성요소들: 중앙처리장치, 기억장치, 입출력장치

1. 컴퓨터의 기본적인 구성요소들

 

1) 중앙처리장치(CPU, Central Processing Unit)

> 프로세서(processor)라고도 함

> '프로그램 실행'과 '데이터 처리'의 역할

> CPU가 한 번에 처리하는 데이터 길이(비트수)에 따라 8비트, 32비트, 64비트 컴퓨터로 분류

 

2) 주기억장치(main memory)

> CPU와 가까이에 위치

> 고속 접근(읽기, 쓰기) 가능

> 고가 & 면적이 넓다 ~> 저장 용량에 한계

> 영구 저장 능력이 없기에, 일시적 저장장치로만 사용

 

3) 보조기억장치(auxiliary storage device)

> 저가 & 저장 밀도가 높음

> 영구 저장 능력이 있다

> 하드디스크, 플레시 메모리, CD-ROM

 

4) 입출력장치(I/O device)

> 주변장치(peripheral device)라고도 부름

> CPU는 해당 장치 제어기를 통하여 동작을 제어한다(CPU의 직접적인 access 불가하기에 별도의 제어기 필요)

 

 

 

< 1.2 정보의 표현과 저장 >

- 컴퓨터 정보: 2진수 비트들로 표현된 프로그램 코드와 데이터

- 프로그램 코드

> 기계어(machine language)

=> 기계 코드(machine code)라고도 함

=> 저급언어(CPU별로 달라질 수 있다)

=> 2진수 비트들로 구성

 

> 어셈블리 언어(assembly language)

=> 고급 언어와 기계어 사이의 중간 언어(저급언어로 분류)

=> 어셈블러(assembler)로 번역되며, 기계어와 일대일 대응

 

> 고급 언어(high-level language)

=> 컴파일러를 이용하여 기계어로 번역

=> C와 C++(중간언어), PASCAL, Python 등

 

 

1. 프로그램 언어의 번역 과정

[예] Z = X + Y
  • LOAD A, X: 기억장치 X번지의 내용을 읽어서, 레지스터 A에 적재(LOAD)
  • ADD A, Y: 기억장치 Y번지의 내용을 읽어서, 레지스터 A에 적재된 값과 더하고(ADD), 결과를 다시 A에 적재
  • STOR Z, A: 그 값을 기억장치 Z번지에 저장(STORE)
     
Z = X + Y의 예
ex. LOAD 명령어 ( 001 00101 )
- 001: '레지스터 A에 적재하라'는 연산 지정 비트
- 00101: 적재될 데이터가 저장된 기억장치의 주소(5번지)
~> 기억장치 5번지의 내용을 읽어서 레지스터 A에 적재(LOAD)하라.

 

2. 프로그램 언어 번역 소프트웨어

- 컴파일러(compiler)

: 고급언어 프로그램을 기계어 프로그램으로 번역

- 어셈블러(assembler)

: 어셈블리 프로그램을 기계어 프로그램으로 번역

> 니모닉스(mnemonics)

=> 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호

=> 'LOAD', 'ADD', 'STOR' 등

 

 

3. 기계어(machine language) 형식

- 연산 코드(op code)

> CPU가 수행할 연산을 지정해주는 비트

> 비트 수 = '3'이라면, 지정될 수 있는 연산의 최대수: 2의 3승 = 8개

 

- 오퍼랜드(operand)

> 연산에 사용될 데이터 혹은 데이터가 저장된 기억장치 주소(memory address)

> 비트 수 = '5'라면, 주소지정(addressing)할 수 있는 기억장소의 최대수: 2의 5승 = 32개

op code와 operand

 

4. 프로그램 코드와 데이터의 기억장치 저장

- 프로그램 코드(명령어)와 데이터는 지정된 기억 장소에 저장

- 단어(word) 단위로 저장

  • 단어: 각 기억장소에 저장되는 정보의 기본단위로서, CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
  • 단어 길이의 예: 8비트, 16비트, 32비트, 64비트
  • 주소지정 단위: 단어 단위 혹은 바이트(byte) 단위

 

< 1.3 시스템의 구성 >

<1.3.1 CPU와 기억장치의 접속 >

1. 시스템 버스(system bus)

> CPU와 시스템 내의 다른 요소들 사이에 정보를 교환하는 통로

> 기본 구성: 주소버스(address bus), 데이터 버스(data bus), 제어 버스(control bus)

 

- 주소 버스(단방향성)

> CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합

> 각 주소 선은 하나의 주소 비트를 전송하는데 사용된다

> 전체 주소 선의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정

> CPU가 발생하는 주소 비트들의 수 = 주소 버스의 폭

=> 주소 버스의 비트 수(폭) = 16비트라면, 최대 2의 16승(64K)개 기억 장소들의 주소지정 가능

 

- 데이터 버스(양방향성)

> 데이터 버스가 하나인 것이 폰노이만 구조이다

> CPU가 기억장치 혹은 I/O장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합

> 워드 단위로 전송

> 데이터 버스의 폭은 한 번에 전송될 수 있는 데이터 비트의 수를 결정한다

=> 데이터 버스 폭 = 32비트라면, CPU는 기억장치로부터 한 번에 32비트씩 읽어올 수 있다

 

- 제어 버스(양방향성)

> CPU가 시스템 내의 각종 요소들의 동작을 제어하는데 필요한 신호 선들의 집합

> 제어 신호 선들의 수는 CPU & 시스템 구성에 따라 달라진다

> 기본적인 제어 신호

=> 기억장치 읽기/쓰기 신호

=> I/O 읽기/쓰기 신호

=> 인터럽트(Interrupt) 신호

=> 버스 제어(Bus Control) 신호

 

2. CPU와 시스템 버스 간의 접속

CPU와 시스템 버스 간의 접속

- 주소 버스: 단방향성(unidirectional)

> 주소는 CPU로부터 기억장치 혹은 I/O장치들로 보내지는 정보이다

- 데이터 버스, 제어 버스: 양방향성(bidirectional)

> 읽기와 쓰기 동작을 모두 지원한다

 

3. CPU와 기억장치 간의 접속

- 필요한 버스 및 제어신호

> 주소 버스, 데이터 버스, 제어신호: 기억장치 읽기 신호, 기억장치 쓰기 신호

CPU와 기억장치 간의 접속

- 기억장치 쓰기 동작

: CPU가 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내는 동시에, 쓰기 신호를 활성화

기억장치 쓰기 동작의 시간 흐름도

- 기억장치 쓰기 시간

: CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간

 

- 기억장치 읽기 동작

> CPU가 기억장치 주소를 주소 버스를 통하여 보내는 동시에, 읽기 신호를 활성화

> 일정 지연시간이 경과한 후에 기억장치로부터 읽힌 데이터가 데이터 버스 상에 실리고, CPU는 그 데이터를 버스 인터페이스 회로를 통하여 읽음

기억장치 읽기 동작의 시간 흐름도

 

- 기억장치 읽기 시간

: 주소를 발생한 시간부터 기억장치의 데이터가 CPU에 도착했을 때까지의 시간

 

 

< 1.3.2 CPU와 I/O장치의 접속 >

- 필요한 버스 및 제어 신호

> 주소 버스, 데이터 버스, 제어 신호(I/O읽기신호, I/O쓰기신호)

- 접속 경로

: CPU <-> 시스템 버스 <-> IO 장치 제어기 <-> I/O 장치

I/O장치 접속 사례: CPU - 키보드&프린터

1. I/O 장치 제어기(I/O device controller)

- 기능

> CPU로부터 I/O 명령을 받아서, 해당 I/O 장치를 제어하고, 데이터를 이동함으로써 명령을 수행하는 전자회로 장치

ex. 키보드 제어기, 프린터 제어기 등

- 상태 레지스터

> I/O 장치의 상태를 나타내는 비트들을 저장하는 레지스터

- 데이터 레지스터

> CPU와 I/O 장치 간의 임시 데이터 기억장치

- Buffer 역할(for 일시적 저장) ~> 데이터 버퍼(Data Buffer)라고도 부른다.

 

2. 키보드의 데이터 입력 과정

- 키보드 제어기

> 키보드의 어떤 한 키(key)를 누르면, 그 키에 대응되는 ASCII 코드가 키보드 제어기의 데이터 레지스터에 저장되고, 동시에 상태 레지스터의 In_RDY 비트가 1로 세트

 

- CPU

1) 키보드 제어기로부터 상태 레지스터의 내용을 읽어서 In_RDY 비트가 세트되었는지 검사(In_RDY 비트는 데이터 레지스터에 외부로부터 데이터가 적재되었는지를 표시)

2) 만약 세트되지 않았다면, 1번을 반복하여 대기. 만약 세트되었다면, 데이터 레지스터의 내용을 읽음

키보드의 데이터 입력 과정 구상도
키보드의 데이터 입력 과정

 

3. 프린터의 데이터 출력 과정

- CPU

1) 프린터 제어기의 상태 레지스터의 내용을 읽어서 Out_RDY 비트 검사(Out_RDY 비트: 프린터가 출력할 준비가 되었는지를 표시)

2) 만약 세트되지 않았으면, 1)번을 반복하며 대기. 만약 세트되었다면, 프린트할 데이터를 프린터 제어기의 데이터 레지스터에 저장(데이터 블록 전체를 제어기 내의 데이터 기억장치에 저장하는 것도 가능: spooling)

 

- 프린터 제어기:

1) 데이터 레지스터(혹은 데이터 기억장치)의 내용을 프린터로 보내고,

2) 프린터의 하드웨어를 제어하면서 인쇄 동작 수행

프린터의 데이터 출력 과정 구상도
프린터의 데이터 출력 과정

 

 

4. CPU와 보조저장장치의 접속

  > 보조저장장치들: 디스크, 플레시 메모리, SSD, CD-ROM 등

 

- 차이점: 데이터 전송 단위

  > 데이터 사이즈 大(비트단위X, 블록단위O로 대량 전송)

  > 키보드: 바이트 단위 전송

  > 보조저장장치: 블록(512bytes) 혹은 페이지(2K, 4K bytes) 단위로 전송

 

 

 

< 1.3.3 컴퓨터시스템의 전체 구성 >

1. 컴퓨터시스템의 전체 구성

 

2. 컴퓨터의 기본적인 기능들

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

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

- 데이터 이동: 디스크 혹은 SSD에 저장되어 있는 프로그램과 데이터 블록을 기억장치로 이동

- 데이터 입력/출력: 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어 들인다. 또한 CPU가 처리한 결과값이나 기억장치의 내용을 프린터(혹은 모니터)로 출력

- 제어: 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며, 각종 제어 신호들을 발생

 

 

 

 

 

< 1.4 컴퓨터 구조의 발전 과정 >은 다음 장에서 다루도록 함.