2- 컴퓨터의 구조와 핵심

2024. 12. 17. 18:45·컴퓨터 과학/프로그래밍 기초
목차
  1. 컴퓨터의 핵심 부품 - CU, ALU, 레지스터
  2. CU, ALU, 레지스터만 가지고있는 구조의 문제
  3. 문제의 해결 - 비휘발성 저장 매체 (메모리 계층화)
  4. 문제의 해결 - BUS (부품, 장치의 연결)
  5. 문제의 해결 - 클럭 (연결된 부품 간의 소통 타이밍)
  6. 컴퓨터의 핵심

컴퓨터의 핵심 부품 - CU, ALU, 레지스터

앞선 글들에서 컴퓨터는 전기를 통해서 '계산' 이 목적인 기계이며, 목적을 위해서 저장, 연산, 제어라는 요소가 필요하다는 것을 알았고, 각각에 맞게 플립플롭, ALU, CU 라는 것이 등장했다는 것을 알았다.

 

이 중에서 플립플롭은 1bit 의 정보만 저장할 수 있기 때문에 다룰 수 있는 값이 적으니까, 이걸 연결해서 8bit(1byte) 의 값을 저장할 수 있도록 만들어보자. 이렇게 플립플롭을 여러 개 묶어놓은 것을 '레지스터' 라고 한다

 

CU 와 ALU 와 레지스터를 전선으로 연결한 다음 전기를 통해 레지스터들에 값을 넣어주면 계산이 가능할 것이다.

즉, 이론상 CU, ALU, 레지스터를 가지고 '계산'이라는 목적을 이룰 수 있는 것이다.

 

CU, ALU, 레지스터만 가지고있는 구조의 문제

하지만 cpu 와 레지스터만을 가지고 계산을 하는 것은 여러 문제점을 가져온다

  • cpu 와 레지스터는 휘발성이기 때문에 전원이 꺼지면 지금까지의 정보가 사라진다
  • 레지스터는 용량이 매우 작기 때문에 많고 복잡한 데이터를 처리할 수 없다
  • (지금까지 알아본 것으로는) 키보드나 모니터같은 입출력이 없기 때문에 외부 기기와 데이터를 주고받을 수 없다

 

문제의 해결 - 비휘발성 저장 매체 (메모리 계층화)

우선 처음의 두 가지 문제를 해결하기 위해서 천공카드, 자기테이프 같은 비휘발성 저장 매체를 사용했다.

(추후 ROM, HDD, SSD 의 사용으로 비휘발성 저장 매체가 발전했다)

 

하지만 cu 가 이런 비휘발성 저장 매체에서 값을 읽어오는 것에는 시간이 너무나도 오래 걸렸다.

(천공카드, 자기테이프가 CU 가 요청한 데이터를 읽어오는데 시간이 걸렸고, CU는 데이터가 도착할 때까지 한참을 기다려야했다)

 

이런 단점을 해결하기 위해서 RAM 이 생겨났다. CU 가 데이터 요청을 하면 RAM 은 자기테이프 같은 보조저장 장치의 데이터를 읽어오고 담아두었다가 CU 가 요청할 때 읽어온 데이터를 보내주는 방식으로 속도를 개선했다.

 

하지만 이 역시도 한계가 있었고, 캐시 메모리라는 것이 등장했다.

CU 에 더 가깝고 속도가 빠른 메모리를 추가하는 개념이었다.

이런 방식으로 메모리를 목적에 따라 여러 종류로 나누는 것을 '메모리 계층화' 라고 한다.

 

즉, RAM 이 읽어왔던 데이터를 캐시 메모리에 담아두고, CU 가 요청할 때마다 캐시 메모리가 바로바로 필요한 데이터를 빠르게 전달해 주는 것이다.

 

CU -> 캐시 메모리 -> RAM -> 보조 저장 장치 (HDD, SDD...)

 

문제의 해결 - BUS (부품, 장치의 연결)

비휘발성 저장매체와 메모리 계층화를 통해서 두 개의 문제점을 해결할 수 있었다.

 

이제 이런 비휘발성 저장매체, 메모리, 외부 입출력 기기들과 어떻게 데이터를 주고받을지에 대한 문제를 해결해야한다.

 

이 문제를 해결하기 위해서 BUS 라는 연결 통로를 만들었다. 

 

BUS 는 CPU 와 각종 부품들, 또는 부품과 부품끼리, 더 나아가 컴퓨터와 외부 장치들(키보드, 마우스 등)을 연결하는 역할을 했고, 처음에는 단일 BUS 만 있었으나, 점점 더 컴퓨터 구조가 복잡해지면서 병목현상을 막고 효율성을 높이기 위해 BUS 도 여러 종류로 세분화되었다.

(처음에 ALU, CU, 레지스터를 이은 전선도 BUS 라고 할 수 있다)

 

문제의 해결 - 클럭 (연결된 부품 간의 소통 타이밍)

부품들을 연결해서 데이터를 교환하는 것 까지 성공했다. 그렇다면 모든 문제가 해결된 것일까?

아쉽지만 그렇지 않다.

 

연결된 부품들간 데이터 전송을 수행할 때 속도의 차이가 나는 문제가 생긴다.

 

예를 들어 CU 에서 SSD 의 데이터를 읽어오려고 한다고 했을 때, SSD 가 만약 기존의 작업을 아직 끝내지 못하고 처리중인 상황에서 새로운 요청을 받고 바로 수행한다면 이전의 요청을 제대로 끝마치지 못하고 예상하지 못한 데이터를 가져올 수 있는 것이다.

 

그렇기 때문에 각 부품과 외부 장치들과 CU 간에 '동기화' 가 필요한데, 이 문제를 해결하기 위해 '클럭' 이라는 개념이 등장했다.

 

클럭이라는 전기 신호를 통해서 작업 타이밍을 맞추는 것이다.

 

클럭이 CU 와 각종 부품들과 타이밍을 맞추는 과정은 아래와 같다

(예를 들어 CU 가 SSD 에 데이터를 요청하고 읽어오는 과정을 생각해보자)

 

CU 는 CU 의 클럭이 있고, SSD 는 SSD 의 클럭이 존재한다.

 

1. CU 는 데이터 요청을 보내고 이는 시스템 버스를 통해서 전달된다 (CU 의 클럭 타이밍에 맞춤)

2. 요청이 SSD 컨트롤러에 도착하면 인터페이스(SATA ....)가 SSD 의 클럭 타이밍에 맞춰서 요청을 처리한다

3. SSD 는 자신의 클럭 타이밍에 맞춰서 요청을 처리하고 응답한다.

4. 응답은 또 SSD 컨트롤러 인터페이스를 통해서 CU 의 클럭 타이밍에 맞춰서 전달된다.

 

즉, 프로토콜이나 중간 매체로 인해서 서로 다른 클럭 타이밍을 조절해서 데이터 교환이 이루어지는 것이다.

 

컴퓨터의 핵심

CU 의 지휘 아래 클럭의 박자에 맞춰서 각각의 부품들이 데이터를 교환하고 끊임없이 레지스터를 변경하면서 데이터를 변경하며 작업을 수행하는 것

'컴퓨터 과학 > 프로그래밍 기초' 카테고리의 다른 글

4 - 서브루틴과 함수 (+ 컴파일러)  (0) 2025.03.27
3- 초기 프로그래밍의 변수  (0) 2024.12.17
1-컴퓨터의 계산(저장, 연산 그리고 제어)  (0) 2024.12.17
0-컴퓨터란?  (1) 2024.11.10
  1. 컴퓨터의 핵심 부품 - CU, ALU, 레지스터
  2. CU, ALU, 레지스터만 가지고있는 구조의 문제
  3. 문제의 해결 - 비휘발성 저장 매체 (메모리 계층화)
  4. 문제의 해결 - BUS (부품, 장치의 연결)
  5. 문제의 해결 - 클럭 (연결된 부품 간의 소통 타이밍)
  6. 컴퓨터의 핵심
'컴퓨터 과학/프로그래밍 기초' 카테고리의 다른 글
  • 4 - 서브루틴과 함수 (+ 컴파일러)
  • 3- 초기 프로그래밍의 변수
  • 1-컴퓨터의 계산(저장, 연산 그리고 제어)
  • 0-컴퓨터란?
로그랩
로그랩
coding-journal-by-log 님의 블로그 입니다.
  • 로그랩
    로그의 코딩노트
    로그랩
  • 전체
    오늘
    어제
    • 분류 전체보기 (42)
      • 컴퓨터 과학 (5)
        • 프로그래밍 기초 (5)
        • 네트워크 (0)
        • 운영체제 (0)
      • 자료구조 & 알고리즘 (0)
      • 알고리즘 문제풀이 (13)
        • 백준 (13)
      • 디자인 패턴 & 아키텍처 (0)
      • 프로그래밍 언어 (2)
        • JAVA (0)
        • JvaScript (0)
        • C 언어 (2)
        • C++ (0)
      • 웹 프로그래밍 (1)
      • 백엔드 (0)
        • 스프링 (0)
        • 전자정부 프레임워크 (0)
        • Mybatis (0)
      • 프론트엔드 (0)
        • ajax (0)
        • react (0)
      • GIS 프로그래밍 (5)
        • OpenLayers (0)
        • GeoServer (1)
        • Qgis (0)
        • PostGIS (0)
        • uDIg (4)
      • 수학 (0)
      • 컴퓨터 설정 (14)
        • vim & neovim (8)
        • 개발환경 (4)
        • 윈도우 설정 (2)
        • 맥 설정 (0)
      • 일상 (1)
        • 책 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준 ??!
    백준 10869 c++
    백준 a + b
    백준 10926 c++
    vim
    솔브닥 클래스1
    백준 1998년생인 내가
    오블완
    백준 1001 c++
    백준 1008 c++
    백준 18108 c++
    서브루틴이란
    백준 11382 c++
    백준 10172 c++
    2025 정처기
    함수란
    백준 10869 c++
    솔브닥 클래스 1 올클
    티스토리챌린지
    vim 단축키
    2025 정처기 실기
    neovim
    solved.ac 클래스1
    백준 10998 c++
    백준 1000 c++
    백준 2557 c++
    백준 a - b
    백준 a * b
    VsCode Vim
    백준 10430 c++
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
로그랩
2- 컴퓨터의 구조와 핵심

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.