컴퓨터의 기본 구조

김민제·2023년 10월 13일
0
post-thumbnail
  • 컴퓨터 시스템은 기본적으로 하드웨어와 시스템 소프트웨어로 구성되며 그러한 시스템에 각종 응용 소프트웨어가 탑재되어 사용자와 상호 작용하며 프로그램을 처리한다.

하드웨어

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

소프트웨어

  • 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고 그러한 동작들이 수행될 시간을 지정해주는 명령들의 집합
  • 하드웨어에 의존적이다. → 컴퓨터의 정보처리 능력, 속도 등 기본 능력은 하드웨어에 의해 결정된다.
  • 시스템 소프트웨어 : OS(Windows 10, Unix, Linux 등), 각종 유틸리티 프로그램(프린터 드라이버 등)
  • 응용 소프트웨어 : 워드 프로세서, 웹 브라우저, MS-Excel 등

컴퓨터의 기본 구조

CPU

  • 프로세서(processor)이라 불리기도 하며 컴퓨터의 특성과 성능에 가장 큰 영향을 미치는 구성 요소
  • CPU가 한 번에 처리하는 데이터의 길이(비트 수)에 따라 8비트, 32비트 등의 컴퓨터로 분류되며 컴퓨터의 이론적인 처리 속도는 CPU 성능에 의해 결정된다.

기억장치

  • CPU가 처리할 프로그램 코드와 데이터는 기억장치(memory; 저장장치라고도함)에 저장된다.
  • 주기억장치(main memory)
    • 메인 보드 상에서 CPU 가까이 위치하며 반도체 기억장치 칩들로 이루어져 고속의 읽기 및 쓰기가 가능하다.
    • 가격이 높고 면적을 많이 차지하여 저장 용량에 한계가 있다.
    • 영구저장 능력이 없고 프로그램 실행중에 일시적으로 사용된다.
  • 보조저장장치(auxiliary storage device; 2차기억장치라고도 함)
    • 하드디스크, SSD 등
    • 영구저장이 가능하다.
    • 저장 밀도가 높고 비트당 가격이 저렴하지만 속도가 느리다.
    • CPU가 직접 액세스하지 못하고 별도의 제어기를 통해 가능하다.
  • 입출력 장치(I/O device)
    • 키보드, 모니터, 프린터 등
    • CPU와 직접 데이터를 교환할 수 없고 각 장치마다 별도의 제어기가 CPU의 명령을 받아 장치의 동작을 제어하고 데이터를 이동시킨다.

캐시 메모리 : 캐시 메모리는 CPU의 처리 속도와 주 기억 장치의 접근 속도 차이를 줄이기 위해 사용한다. 자주 쓰는 데이터를 미리 캐시메모리에 가져다 놓고 CPU가 필요한 데이터를 캐시 메모리에서 먼저 찾도록 한다.
→ cpu는 빠른데 기억장치는 느리기 때문

정보의 표현과 저장

  • 컴퓨터가 받아들이고 처리하는 정보의 종류로는 프로그램 코드와 데이터가 있다.
  • 이 정보들은 비트(bit)들의 조합으로 표현된다.

프로그램 코드

기계어(machine language or machine code)

  • 컴퓨터 하드웨어 부품들이 이해할 수 있는 언어
  • 2진 비트들로 구성

어셈블리 언어(assembly language)

  • 고급 언어와 기계어 사이의 중간 언어
  • 어셈블러(assembler)로 번역되며 기계어와 일대일 대응

고급 언어(high-level language)

  • 영문자와 숫자로 구성되어 사람이 이해하기 쉬운 언어
  • 컴파일러(compiler)를 통해 기계어로 번역
  • C, C++, JAVA 등

컴파일러(compiler)

  • 고급언어 프로그램을 기계어 프로그램으로 번역하는 소프트웨어

어셈블러(assembler)

  • 어셈블리 프로그램을 기계어 프로그램으로 번역하는 소프트웨어
  • 니모닉스(mnemonics)
    • 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호
    • ‘LOAD’, ‘ADD’, ‘STOR’ 등

프로그램 언어의 번역 과정 예

  • Z = X + Y
    • LOAD A,X : 기억장치 X번지의 내용을 읽어 레지스터 A에 적재(load)
    • ADD A,Y : 기억장치 Y번지 내용을 읽어 레지스터 A에 적재된 값과 더하고 결과를 다시 A에 적재
    • STOR Z,A : 그 값을 기억장치 Z번지에 저장

기계 명령어의 형식

연산 코드(op code)

  • CPU가 수행할 연산을 지정해주는 비트들
  • 만약 연산 코드가 3비트로 이루어진다면 2^3=8개의 연산들을 지정할 수 있다.

오퍼랜드(operand)

  • 적재될 데이터가 저장되어 있는 기억장치 주소
  • 만약 5개의 오퍼랜드 비트가 있다면 주소를 지정할 수 있는 기억 장소의 최대 수는 2^5=32개가 된다.

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

  • 프로그램 코드(명령어)와 데이터는 지정된 기억 장소에 단어(word) 단위로 저장된다.
    • 단어(word) : 각 기억 장소에 저장되는 정보의 기본단위로 CPU에 의해 한 번에 처리될 수 있는 비트들의 그룹
    • 단어의 길이는 CPU의 하드웨어 구조에 따라 8비트, 16비트, 32비트 등으로 다양하다.

시스템의 구성

CPU와 기억장치의 접속

시스템 버스(system bus)

  • CPU와 시스템 내의 다른 요소들 사이에 정보를 교환하는 통로
  • 기본 구성
    • 주소 버스(address bus)
      • CPU가 외부로 발생하는 주소 정보를 전송하는 신호 선들의 집합
      • 각 주소 선은 하나의 주소 비트를 전송하는데 사용되며, 주소 선의 수는 CPU와 접속될 수 있는 최대 기억장치 용량을 결정한다.
        • ex) 주소 버스 비트 수=16비트라면 최대 2^16=64K개의 기억 장소들의 주소지정이 가능하다.
      • 주소는 CPU에 의해 발생되어 기억장치와 I/O장치로 보내지는 정보이기 때문에 주소 버스는 단방향성이다
    • 데이터 버스(data bus)
      • CPU가 기억 장치 혹은 I/O 장치와의 사이에 데이터를 전송하기 위한 신호 선들의 집합
      • 데이터 선의 수는 CPU가 한 번에 전송할 수 있는 비트 수를 결정한다.
        • ex) 데이터 버스 폭 = 32비트라면 CPU와 기억장치 간의 데이터 전송은 한 번에 32비트씩 가능
      • 읽기,쓰기 동작을 모두 지원하기 때문에 양방향성이다.
    • 제어 버스(control bus)
      • CPU가 시스템 내의 각종 요소들의 동작을 제어하기 위한 신호 선들의 집합
      • I/O 읽기/쓰기 신호, 인터럽트 신호, 버스 제어 신호 등
      • 읽기,쓰기 동작을 모두 지원하기 때문에 양방향성이다.

CPU의 기억장치 액세스

  • 기억장치 쓰기 동작
    • CPU는 데이터를 저장할 기억 장소의 주소와 저장할 데이터를 각각 주소 버스와 데이터 버스를 통하여 보내는 동시에 쓰기 신호를 활성화 시킨다.
    • 이 신호들은 기억장치 쓰기 동작이 완료될 때까지 유지되어야 한다.
  • 기억장치 쓰기 시간
    • CPU가 주소와 데이터를 보낸 순간부터 저장이 완료될 때까지의 시간

  • 기억장치 읽기 동작
    • CPU는 기억 장치 주소와 주소 버스를 통하여 보내는 동시에 읽기 신호를 활성화 시킨다.
    • 일정 지연 시간이 경과한 후 기억장치로부터 읽혀진 데이터가 데이터 버스 상에 실리고 CPU는 그 데이터를 버스 인터페이스 회로를 통해 읽는다.
  • 기억장치 읽기 시간
    • 주소를 발생한 시간부터 기억장치의 데이터가 CPU에 도착할 때까지의 시간

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

  • CPU로부터 I/O 명령을 받아서 해당 I/O 장치를 제어하고 데이터를 이동함으로써 명령을 수행하는 전자회로 장치 (ex. 키보드 제어기, 프린터 제어기 등)

상태 레지스터

  • I/O 장치의 현재 상태를 나타내는 비트들을 저장한 레지스터
  • 준비 상태 비트, 데이터 전송 확인 비트 등

데이터 레지스터

  • CPU와 I/O장치 간에 이동되는 데이터를 일시적으로 저장하는 레지스터

I/O장치의 접속 사례

  • 키보드로부터 데이트를 읽어들이는 과정
    • 키보드의 키 누름
    • 그에 대응되는 8비트(ASCII코드 7비트 + 패리티비트) 데이터가 키보드 제어기로 전송되어 데이터 레지스터에 저장되며 동시에 상태 레지스터의 지정된 Ready 비트 set
    • CPU는 데이터 입력을 원하는 시점에서 상태 레지스터의 Ready 비트가 set되어 있는지 검사
    • set되어 있다면 데이터 레지스터의 내용을 CPU로 읽어들임으로써 데이터 입력과정 완료
    • set되어있지 않다면 CPU는 상태 레지스터의 내용을 읽고 검사하는 동작을 반복하며 대기

보조저장장치의 접속

  • 보조 저장 장치들(디스크, 플래시 메모리, SSD, CD-ROM 등)도 각 장치를 위한 제어기를 통하여 키보드나 프린터와 유사한 방법으로 접속
  • 차이점 : 데이터 전송 단위
    • 키보드 : 바이트 단위 전송
    • 보조저장 장치 : 블록(512/1024/4096 바이트) 단위로 전송
      • 제어기 내에 한 블록 이상을 임시 저장할 수 있는 데이터 기억 장치(버퍼) 필요

전체 시스템의 구성

  • 프로그램 실행 : CPU가 주기억장치로부터 프로그램 코드를 읽어서 실행
  • 데이터 저장 : 프로그램 실행 결과로서 얻어진 데이터를 주기억장치에 저장
  • 데이터 이동 : 디스크나 SSD에 저장되어 있는 프로그램과 데이터 블록을 주기억장치로 이동
  • 데이터 입력/출력 : 사용자가 키보드를 통하여 보내는 명령이나 데이터를 읽어들임. 또한 CPU가 처리한 결과값이나 기억장치의 내용을 프린터 또는 모니터로 출력
  • 제어 : 프로그램이 순서대로 실행되도록 또는 필요에 따라 실행 순서를 변경하도록 조정하며 각종 제어 신호들을 발생

컴퓨터 구조의 발전 과정

주요 부품들의 발전 과정

  • 릴레이 → 진공관 → 트랜지스터 → 반도체 집적 회로
  • 발전 과정에서 개선된 특성
    • 처리속도, 저장용량, 크기, 가격, 신뢰도

대표적인 컴퓨터들

  • ENIAC(Electronic Numerical Integrator And Computer)
    • 1940년대 초, 폰노이만이 개발
    • 진공관을 사용한 최초의 전자식 컴퓨터
    • 폰 노이만의 설계 개념(stored-program 원리) 발표
      • 프로그램과 데이터를 내부에 저장
      • 2진수 체계 사용
  • IAS 컴퓨터
    • 프로그램 저장과 변경이 가능한 최초의 디지털 컴퓨터
    • 주요 구성 요소
      • 프로그램 제어 유니트
      • 산술논리연산장치(ALU)
      • 주기억장치
      • 입출력장치
    • 폰 노이만 아키텍쳐
      • 프로그램 코드들을 기억장치에 저장된 순서대로 실행하며 그 주소는 CPU의 내부 레지스터인 프로그램 카운터에 의해 지정됨
  • VLSI의 출현으로 개인용 컴퓨터가 개발됨
    • VLSI (Very Large Scale IC)
      • 수만 개 혹은 수십만 개 이상의 트랜지스터들이 집적되는 초대규모 IC
      • 마이크로프로세서 칩들과 대용량 반도체 기억장치 칩
profile
오늘의 작은 하루가 쌓여 내일의 내가 된다.🏃

0개의 댓글