소프트웨어 개발

개발책 - 혼자 공부하는 컴퓨터구조+운영체제 (4-8장)

인어공쭈 2024. 1. 21. 17:28

첫번째 글에 이어서 계속 작성해보겠다. 1-3장 내용이 궁금하다면 하단으로 고고

https://haneui.tistory.com/36

 

개발책 - 혼자 공부하는 컴퓨터구조+운영체제 (1-3장)

운영체제 공부 때문에 강의랑 책을 구매해서 듣게되었다. 주말에 틈내서 읽게되었는데 좀더 기억에 남기기 위해서 한번 내가 읽은 내용을 정리해보았다. (독후감 겸 내 생각도 들어가져 있음 ㅎ

haneui.tistory.com

C 4. CPU의 작동원리

cpu는 메모리에 저장된 명령어를 읽고 해석하고 실행하는 장치이다. 내부에는 계산을 담당하는 ALU, 해석하는 제어장치, 임시 저장장치인 레지스터가 구성되어져 있다. 또한 명령어를 처리하는 과정에는 어떤 흐름이 있고 이런 흐름을 명령어 사이클이라고 한다. 간혹 처리중 흐름이 끊어지는 상황이 있는데 이를 인터럽트라고 한다.

 

ALU: 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어신호를 받아들인다.   

제어장치: cpu 내부와 외부로 제어신호를 보내고 명령어를 해석한다.

 

제어장치가 받아들이는 정보는 뭐가 있을까?

 

1) 클럭신호를 받아들인다.(클럭은 시간단위)

2) 해석해야할 명령어(명령어 레지스터)

3) 플래그 래지스터 속 플래그 값을 받아들임

4) 시스템버스에서 제어버스로 전달된 제어신호를 받아들임

 

레지스터: 명령어와 데이터는 실행전후로 레지스터에 저장됌, 다양한것들이 있는데 각기 다른역할을 하고 있다.

  • 프로그램 카운터: 명령어의 주소 저장(명령어 포인터)
  • 명령어 레지스터: 명령어 저장
  • 메모리 주소 레지스터: 메모리 주소 저장
  • 메모리 버퍼 레지스터: 메모리 데이터 저장
  • 플래그 레지스터: 연산결과를 저장
  • 범용 레지스터: 다양하게 범용적으로 저장
  • 스택 포인터: 마지막으로 저장한 값의 위치 저장
  • 베이스 레지스터: 주소 지정에 사용되는 레지스터

주소지정방식

  • 스택주소 지정방식: 스택과 스택포인터를 이용한 방식
  • 변위주소 지정방식: 오퍼랜드값과 특정 레지스터의 값을 더하여 유효주소를 얻는 방식
  • 상대주소 지정방식: 오퍼랜드와 프로그램 카운터의 값을 더하여 유효주소를 얻는 방식
  • 베이스 레지스터 주소 지정방식: 오퍼랜드와 베이스 레지스터의 값을 더하여 얻는 방식

 

명령어 사이클: 일정한 주기가 반복되면서 실행되는것

인터럽트: 작업을 방해하는 신호

  • 동기(예외)/비동기(하드웨어 인터럽트) 존재
  • 인터럽트 서비스 루틴은 인터럽트를 처리하기 위한 동작들로 이루어진 프로그램
  • 인터럽트가 발생되면 cpu는 수행하던 작업을 백업한뒤 인터럽트 서비스 루틴을 실행, 이후 실행이 끝나면 백업해둔 작업을 다시 수행한다.

 

C 5. CPU 성능 향상 기법

빠른 cpu를 만드는 방법인 빠른 클럭신호와 설계기법인 멀티코어, 멀티스레드에 대해서 알아보자, 

 

먼저 클럭신호가 빠르면 그만큼 컴 부품들이 빠르게 움직인다는 뜻이니깐 클럭 속도가 높은 cpu는 일반적으로 성능이 좋다.

하지만 무조건 클럭속도를 높이면 cpu가 빠르다? 그건 아니다. 왜냐하면 장시간 사용시 발열문제가 심각하기 때문에 한계가 있다.

그렇다면 다른 방법은 무엇이 있을까? 바로 cpu의 코어와 스레드 수를 늘리는 방법이 있다. 또한 놀지않고 시간을 알차게 쓰면서 동작하는것도 중요하다. 거기엔 명령어 병렬 처리기법이 있다. 

 

코어: cpu내에서 명령어를 실행하는 부품으로 여러개가 있을수 있다.여러개가 존재하면 멀티코어

스레드: 명령어를 실행하는 단위, 하드웨어적, 소프트 웨어적 스레드가 존재

  • 하드웨어적 - 하나의 코어가 동시에 처리하는 명령어 단위, 하나의 코어로 여려명령어를 동시에 처리하는 cpu를 멀티스레드라고 한다.
  • 소프트웨어적 - 하나의 프로그램에서 독립적으로 실행되는 단위, 프로그래밍 언어나 운영체제가 여기에 속해있음

멀티 스레드: 하나의 코어로 여러개의 명령어를 동시에 실행할수 있는 cpu를 말한다.

명령어 병렬 처리기법

  • 명령어 파이프라이닝: 동시에 여러개의 명령어를 겹쳐 실행하는 기법
  • 슈퍼스칼라: 여러개의 명령어 파이프라인을 두는 기법
  • 비순차적 명령어 처리기법: 파이프라인의 중단을 방지하기위해 명령어를 순차적으로 처리하지않는 기법

 

C 5 - 3. CISC, RISC

 

cpu가 이해할수 있는 명령어들의 모음을 명령어 집합(ISA) 라고 한다. 주요 설계방식엔 CISC, RISC 이 있다.

CISC RISC 
복잡하고 다양한 명령어 단순하고 적은 명령어
가변길이 명령어 고정길이 명령어
다양한 주소 지정 방식 적은 주소 지정 방식
프로그램을 이루는 명령어의 수가 적음 프로그램을 이루는 명령어의 수가 많음
여러클럭, 파이프라이닝하기 어려움 1클럭 내외 명령어, 파이프라이닝하기 쉬움

 

 

C 6. 메모리와 캐시 메모리

 

메모리라고 지칭한 하드웨어는 RAM이다. RAM에 대해서 좀더 알아보고, cpu가 메모리에 접근하는 시간을 절약하기 위한 캐시 메모리와 저장 장치 계층 구조에 대해서도 알아보자.

 

RAM

  • 특징: 휘발성 저장 장치이고, 보조 기억장치는 비휘발성 저장 장치
  • 용량과 성능: 용량이 커지면 많은 프로그램을 동시에 실행하는데에 유리
  • 종류
    • DRAM(휘발성)
    • SRAM(비휘발성)
    • SDRAM(클럭과 동기화된 DRAM)
    • DDR SDRAM(SDRAM에 비해 대역폭이 두배넓)

메모리의 주소 공간

  • 물리주소: 메모리 하드웨어가 사용
  • 논리주소: cpu와 실행중인 프로그램이 사용하는 주소
  • MMU: 논리주소를 물리주소로 변환
  • 베이스 레지스터: 프로그램의 첫 물리주소 저장
  • 한계 레지스터: 실행중인 프로그램의 논리주소의 최대크기를 저장

저장 장치 계층 구조: 각기 다른 용량과 성능의 저장장치들을 계층화해서 표현

캐시 메모리: cpu의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장장치, 참조 지역성의 원리에 따라 데이터를 예측하여 캐시 적중률을 높인다.

*캐시 적중률이 높으면 cpu의 메모리 접근 횟수를 줄일수 있다.
*참조 지역성의 원리: cpu가 메모리에 접근할떄의 주된 경향을 바탕으로 만든 원리

 

C 7. 보조기억장치

저장장치인 하드디스크와 플래시 메모리를 알아보고 높은 성능과 안전한 데이터 저장을 위한 RAID에 대해서도 살펴보자.

 

하드 디스크

  • 자기적인 방식으로 데이터를 저장하는 보조장치(자기 디스크)
  • 구성: 플래터, 스핀들, 헫, 디스크암

플래터

  • 트랙과 섹터로 나뉘고, 여러 플래터의 동일한 트랙이 모여 실린더를 이룬다

플래시 메모리

  • 한셀에 몇 비트를 저장
  • SLC,MLC,TLC로 나뉨
  • 읽기쓰기는 페이지 단위, 삭제는 블록단위
구분 SLC MLC TLC
셀당 bit 1bit 2bit 3bit
수명 길다 보통 짧다
읽기쓰기 속도 빠름 보통 느리다
용량 대비 가격 높다 보통 낮다

 

RAID

  • 데이터의 안전성 혹은 높은성능을 위해 여러개의 물리적 보조기억장치를 하나의 장치처럼 사용하는 기술을 의미
  • 종류
    • RAIN 0: 데이터를 단순히 병렬로 분산하여 저장
    • RAID 1: 완전한 복사본을 만듬
    • RAID 4: 패리티를 저장한 장치를 따로 두는 방식
    • RAID 5: 패리티를 분산하여 저장
    • RAID 6: 서로 다른 두개의 패리티를 두는 방식
*페리티 비트 : 오류를 검출하고 복구하기 위한 정보

 

 

C 8. 입출력장치

 

입력과 출력은 어떤 과정을 거치는지 한번 살펴보자.

 

장치 컨트롤러

  • 입출력장치에는 종류가 많다, 키보드, 모니커 등등 다양하다.
  • cpu와 메모리 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다.
  • 구조: 데이터 레지스터, 상태 레지스터, 제어 레지스터

장치 드라이버

  • 장치 컨트롤러가 컴 내부와 정보를 주고 받을수 있게 해주는 프로그램

입출력 방법

  • 프로그램 입출력: 프로그램 속 명령어로 입출력 작업을 하는 방식
  • 메모리맵 입출력: 메모리에 접근하기 위한 주소공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소공간으로 간주하는 방식
  • 고립형 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소공간을 별로로 분리하는 방식
  • 인터럽트 기반 입출력: cpu를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고 받는 방식
  • DMA 입출력: cpu를 거치지않고 메모리와 입출력장치간의 데이터를 주고받는 방식
  • 입출력 버스: 입출력장치와 컴 내부를 연결 짓는 통로

 

반응형