본문 바로가기
학습 노트/개인학습

250429 2일차

by 삼색먕 2025. 4. 30.

4챕터

ALU와 제어장치
ALU - 연산을 하며, 플래그를 내보낸다
플래그는 캐리플래그(올림수), 제로플래그(결과0), 음수플래그(-기호),인터럽트플래그 등
제어장치 - 명령어 해독, 제어신호를 보낸다
명령어레지스터에서 명령어를 해독, 제어신호를 보내 각 장치를 제어

레지스터

  • 레지스터의 종류는 여러가지가 있다.
    범용, 플래그, 명령어, pc, sp,...
  • 스택 주소 지정 방식
    스택에 주소를 넣는 방식 (재귀 같은 느낌, 되돌아 올때)
  • 변위 주소 지정 방식 :
    PC를 이용하여 간접주소를 명령어 포함하여 주소를 지정
    베이스를 이용하여 간접 주소를 명령어 포함하여 주소를 지정.
      둘다 간접적인데 왜 다른가 생각해봤는데.
      pc는 명령어를 순차적으로 진행되어 명령어가 변칙적으로 운영되는 느낌이고, 
      베이스는 값이 베이스에 있기때문에 베이스값을 컨트롤 할수 있는점 같다.
    (함수 가상테이블 찾을때 어셈블리어 까봤을때 +4 이런식으로 되어있던 부분같음.)

명령어 사이클과 인터럽트

  • 명령어 사이클
    기본적으로는 인출(명령어를 꺼냄) - 실행(명령어 해독, 실행)
    거기에 명령어의 대상등이 간접주소일때는 (간접) 추가 인출 발생
    +인터럽트
  • 인터럽트 : 급하게 실행되는 무언가
    동기성 인터럽트: 예외라고하며 폴트(fault), 트랩(trap), 중단(abort), 소프트인터럽트
    비동기성 인터럽트 : 알림의 느낌이며, 하드웨어인터럽트
      이 경우는 병렬성 느낌으로 하드웨어를 제어할때, 
      오래걸리므로 cpu는 그동안 다른일을 하기위해다.
    인터럽트 플래그가 사용안함이라도 강제로 실행하는 인터럽트도 있다. (치명적인 상황일때)

5챕터

클럭

  • CPU를 포함한 대부분의 장치들은 컴퓨터의 클럭주기에 맞춰서 구동된다.
  • 클럭수는 CPU의 명령어를 실행하는수이므로 클럭수가 빠르면,
    더 많이 처리되기 때문에 성능이 향상된다.
  • 클럭이 빠르면 좋을까? 빨라지는 만큼 발열이 생깁니다
    코어와 멀티코어
  • 학습관점에서는 CPU구성이 1개의 구성에서 1개의 명령어 처리를한다.
  • 현대에서는 코어라고 불리우고, CPU에는 코어가 여러개가 존재할수 있고 멀티코어라고 부른다.
    스레드와 멀티스레드
  • 스레드는 코어가 한번에 처리할수 있는 명령어의 수다.
  • 멀티스레드란 코어안에 처리할수있게 레지스터 집합을 1개 이상을 두어
    코어가 병렬식으로 명령어를 한번에 2개 이상으로 처리하는것 처럼(동시성) 하는것.\

명령어 파이프라인

  • 명령어 사이클은 크게 2개로 나눠서 이야기한다 (인출-실행) (인출-해독-실행-저장)
    여기서 4개로 이야기한다면, 인출하는동안 해독 하는시간이 낭비되지 않게 하는 기법
    명령어를 동시에 처리할수 있어서 빠르다. 현대 CPU의 핵심기술이다.
    하지만 단점이 있는데
    1. 데이터 위험 : 명령어 순서에따라, 의존적으로 인출하기전에
           앞선 명령어가 저장하기전에 실행 되는 위험.
    2. 뭔 위험 : 명령어 순서에따라 처리중에, 앞선 명령어가 PC등의 현재 명령어 위치를
      변경하게되면 구조상 뒤에 실행했던 명령어어는 의미가 없거나, 처리했으면 안된다.
    3. 뭔 위험 : 기억이 안남..
      슈퍼스칼라
  • 슈퍼스칼라는 명령어 파이프라인을 1개가아닌 여러개로 작동하는 방법이다.
    비순차적 명령어 처리
  • C++에서 생각하면 컴파일러가 최적화 해버리는 느낌이다.
  • 인출-해독-실행-저장을 해야하는데 명령어 순서를 바꿔도 결과가 다르지 않을때,
  • 쉬지 않고 성능 향상을 위한 처리.

명령어 집합

  • 명령어를 연산코드, 오퍼랜드로 구분했다. 이들의 종류를 명령어 집합이라고한다.
    CISC
  • complex inc~ set co~ 복잡한 명령어 집합 구조
  • 명령어의 종류가 많으며 가변크기방식을 사용
  • 종류가 많기때문에 코드의길이 짧다.
  • 하지만 가변크기이기 때문에, 명령어 마다의 시간이 달라,
    파이프라인의 기본인 주기적 명령어 실행이 힘들다.

RISC

  • Reduce ~~ : 줄인 명령어 집합구조
  • 명령어의 종류가 적고 고정크기방식을 사용
  • 종류가 적기때문에 코드의 길이가 길다.
  • 하지만 고정크기이기 때문에 명령어 마다의 시간이 일정해서,
    파이프라인에 적합함.
    • 현대의 CISC 구조를 쓰는 Intel, ARM CPU는 성능을 위해,
      CPU내부적으로 명령어를 더 작은단위로 분할하여 파이프라인을 이용한다고 한다.

6챕터

RAM의 특징

  • 전원이 꺼지면 데이터가 사라진다(실행) - 휘발성
    <-> 비휘발성 - 전원이 꺼져도남아있다(저장) 보조기억장치 : ssd,hdd,usb ...
  • RAM의 용량과 성능
    RAM의 용량이 크면 한번에 실행할수있는 프로그램의
      (메모리에올라가는) 공간이 많아져서 성능향상.
    그렇다고 용량이 성능과 비례하지는 않음
  • 램의 종류
    1. DRAM : 동적램, 오래 사용하지 않는 데이터는 지워지는 특성 갱신해야한다.
    2. SRAM : 정적램, 데이터가 지워지지 않는 특성, (전원이꺼지면 사라지는건 동일)
      <상대적 비교>
      • DRAM : 느리다, 저렴하다, 집적성이 높다, 갱신필요, 주기억장치로 씀
      • SRAM : 빠르다, 비싸다, 집적성이 낮다, 갱신필요X, 캐시메모리로 씀
    3. SDRAM : 동기화 DRAM : CPU 클럭과 데이터통신이 동기화 된 DRAM (SDR SDRAM)
    4. DDR SDRAM : Double Data Rate ~ : 대역폭이 2배수 클럭당 데이터를 2배씩 더 통신함
      • DDR2 -> DDR에 2배 / DDR3 -> DDR2의 2배
        물리주소와 논리주소
  • 물리주소는 메모리시점의 주소
  • 논리주소는 CPU와 프로그램상의 주소
  • 변환을 위해서는 MMU (메모리관리장치)를 통해
    물리주소(베이스레지스터에 저장)+논리주소로 메모리에 접근
    메모리보호기법
  • MMU를 거친다해도 논리주소가 해당 프로그램의 메모리 영역을 침범할수있다.
  • 한계레지스터로 해당 프로그램의 논리주소의 한계점을 지정해둔다
  • 베이스레지스터 <= 가능한 주소 <= 한계레지스터

캐시메모리

  • 메모리에 접근하는데 느리다 해서 등장한 메모리
    저장 장치 계층 구조
  • CPU에서 더 가까운쪽부터 계층을 만들어놓은 구조
  • 레지스터 > 캐시메모리(L1>L2>L3) > 주기억장치 > 보조기억장치
    참조지역성원리
  • 캐시메모리가 데이터를 어떻게 가져올까? 예상을 해서 가져온다
  • CPU사용시 캐시히트 / 사용안할시 캐시미스(성능감소)
  • 캐시를 어떤 원리로 하는지의 대한 내용
    시간지역성 : 최근에 쓴 데이터를 자주 쓴다.
    공간지역성 : 최근에 쓴 데이터 근처를 자주 쓴다.

7챕터

하드디스크

    • 자기디스크
    • 섹터 : 피자처럼 나눈부분
    • 트랙 : 트랙형태로 나눈부분
    • 실린더 : 트랙의 원통형
    • 헤드 : 하드디스크의 읽기 위한 부분
    • 스핀들 : LP판 같은부분 돌리는 부분
    • 플래터 : LP판 같은 부분
      플래시 메모리
    • 셀 0,1 정보저장
    • SLC:셀이 하나 / MLC:셀이 2개 .. TLC .. QLC
    •  

로 갈수록 저렴, 수명감소, 속도 저하

  •  

RAID의 정의

  • 하드디스크를 병렬로 저장하는 기법
  • 1개의 고용량을 쓰는것보다 4개의 저용량을 쓰는게 성능이 좋은 기법이다.
  • 단점으로는 데이터가 물리적으로 분산되어 저장되어있기 때문에 하드고장시 데이터 손실
    RAID의 종류
  • RAID0 병렬로만 저장
  • RAID1 병렬로 저장하는데 미러링으로 데이터를 백업도 같이함 (데이터보호 / 가용 용량이 적음)
  • RAID2 병렬로 저장하는데 패리티비트 하드를 둠 (데이터보호 / 검증복원용 하드가 병목)
    통신공학에서는 패리티비트로 데이터가 정상인지 검증을 하는데 (odd /even)
    여기서 말하는 패리티비트는 검증뿐 아니라 복원도 가능하다
  • RAID5 2의 단점을 커버하기위해 패리티비트를 각 하드별로 나눠서 병목 분산시키는 방식
    (패리티 계산으로 인한 성능저하 )
  • RAID6 5에서 확장되는 방식인데 패리티비트를 2개씩
    (5보다는 데이터 용량이 적은느낌)

8챕터

장치 컨트롤러 : 입출력 장치가 너무 다양하다보니 컨트롤 하기 위한 하드웨어적 장치

  • 내부적으로 데이터레지스터, 제어레지스터, 한개는 기억안남
  • CPU가 어떻게 접근하냐 MMU 메모리관리장치(base레지스터+) 주소 계산
    장치드라이버 : OS에서 장치를 인식 하기 위한 소프트웨어적 장치
  • 프로그램입출력
    • 메모리 맵 방식 : 메모리에 일정부분을 IO포트에 할당.
      메모리의 실질적 감소
      명령어를 일반 메모리와 동일하게 사용함.
      ps. RISC 방식에서 채택
      명령어가 같기때문에 파이프라이닝 원칙을 따르기위해
    • 고정형 방식 : 메모리를 분리한 방식
      명령어로 IO포트와 연결 (in / out)
      ps. CISC 방식에서 채택
      실제 작동은 명령어 실행시 IO/M#핀 제어로 IO접근제어
  • 인터럽트 기반 입출력
    CPU챕터에서 인터럽트를 이용한 방식
    입출력장치가 준비되면 인터럽트 신호를 주어 동작하므로 CPU가 효율적
  • DMA입출력
    중계역할을 담당하여 CPU가 직접 장치컨트롤러에 접근하지 않게 함.
    CPU와 동일한 시스템버스를 써서 CPU가 쉴때만 통신
      개선버전으로 IO버스가 회로에 있는 것도 있음

와 10시간넘게 했더니 토할것같음..
원래 자료구조랑 좀 볼려고했는데 시간이 안남아서 패스
내일부터는 운영체제인데 페이스조절 확실히 하고 깊게 하는게 좋을듯..
중간 산책좀 많이해야할듯함

'학습 노트 > 개인학습' 카테고리의 다른 글

250503 6일차  (0) 2025.05.04
250502 5일차  (0) 2025.05.03
250501 4일차  (0) 2025.05.02
250430 3일차  (0) 2025.05.01
250428 1일차  (0) 2025.04.29

댓글