Lec 01. Computer system Overview

jj·2021년 1월 3일
0

HPC 운영체제 강의

목록 보기
1/4

출처:
https://www.youtube.com/watch?v=EdTtGv9w2sA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN

Intro

  • 운영체제: 컴퓨터 자원을 효율적으로 관리해서 사용자에게 서비스하는 소프트웨어

  • 컴퓨터 하드웨어
    - 프로세서: 계산하는 녀석
    - 예. CPU, GPU, 응용 전용 처리장치

    • 메모리: 저장하는 녀석
      • 예. 주 기억장치, 보조 기억장치 (DRAM, Disk)
    • 주변 장치
      • 예. 키보드, 마우스, 네트워크 모뎀...

    프로세서

  • 컴퓨터의 두뇌, 중앙 처리장치
    - 연산 수행, 컴퓨터의 모든 장치의 동작 제어

(1) 레지스터

  • 프로세서 내부에 있는 메모리
    - 프로세서가 사용할 데이터 저장
    - 컴퓨터에서 가장 빠른 메모리
  • 종류
    - 용도에 따라: 전용/범용 레지스터
    - 정보변경 가능 여부에 따라: 사용자 가시/불가시 레지스터
    - 저장하는 정보의 종류에 따라: 데이터 레지스터, 주소 레지스터, 상태 레지스터

프로세서의 동작

운영체제와 프로세서의 관계

  • 운영체제는 프로세서를 관리; 프로세서가 처리할 작업 할당 및 관리
  • 프로그램의 프로세서 사용 제어;
    • 프로그램의 프로세서 사용 시간 관리
    • 복수 프로그램 간의 사용시간 조율 등 (여러개의 프로그램이 하나의 프로세서를 사용하려 할 때, 이를 중재하는 역할을 함)

메모리

  • 데이터를 저장하는 장치(기억 장치): 프로그램(os, 사용자sw 등), 사용자의 데이터 등
  • 메모리의 종류

(1) 레지스터: 프로세서가 사용할 메모리
(2) 캐시: CPU안에 있는 녀석, 레지스터보다는 코어에서 더 멀리 떨어져있음
(3) 메인메모리(DRAM)
(4) 보조기억장치: 하드디스크(HDD)

  • 위로 올라갈 수록 속도가 빨라지고, 가격도 비싸짐 -> 용량은 작아짐
  • 최소한의 비용으로 최고의 성능을 얻기 위해 위의 4가지 계층을 나눔

메모리의 종류

(1) 주기억장치(main memory)

  • 컴퓨터의 메인보드에 꽂혀있는 메모리
  • 프로세서가 수행할 프로그램과 데이터 저장
    - 프로세서가 프로그램을 실행할 때, 그 프로그램과 데이터는 반드시 메인 메모리 안에 들어가 있어야함
    • why? 프로세서가 직접 접근할 수 있는 범위는 메인 메모리까지임
  • DRAM, DDR4을 주로 사용 (프로세서가 직접 접근 가능한 메모리 중에서는 용량이 크고, 가격이 저렴)
  • 디스크 입출력 병목 현상 (I/O bottleneck) 해소
    Q. 디스크에서 바로 프로세서로 오지 않고, 굳이 메인메모리를 거쳐서 와야할까?
    -> 하드웨어적인 관점에서, 디스크의 발전은 더디고, cpu의 발전은 매우 빠름. 즉, cpu는 빠른데 메모리가 너무 느려서 문제가 발생! gap between cpu & disk에, 디스크보다 사이즈는 작지만, 접근 속도는 더 빠른 것을 놓아서, cpu가 일을 하는 동안, cpu가 그 다음 실행하는 데 필요한 메모리를 여기(메인 메모리)에 가져다가 놓자!
    -> or, 디스크까지 가는게 너무 느리니까 성능을 저하시키는(디스크 입출력 병목) 현상을 해소하자!

(2) 캐시

  • 프로세서 내부에 있는 메모리(L1,l2 캐시)
    - 레지스터와의 차이? 레지스터보다 캐시가 코어에서 더 멀리 떨어져 있음 -> 속도가 느려지고, 사이즈는 커짐
  • 메인 메모리의 입출력 병목현상을 해소
    예) L1 cache: 4X32kb = 128 kb -> 헐 너무 작지 않나????
    -> 캐시가 어떻게 동작하길래 이렇게 작은데도 가능할까?

캐시의 동작

  • 일반적으로 하드웨어적으로 관리됨
  1. 프로세서가 일을 할 때, 데이터가 필요할 것이다.
  2. 메인메모리의 한 칸에 있는 데이터가 필요할 때, 캐시가 없다면, 프로세서 -> 메인메모리 로 바로 갈 것이다. 그러나 캐시가 있는 상태에서는,
  3. 먼저, 캐시로 가서, '이 데이터가 있니?' 라고 물어봐서, 없으면(cache miss), 메인 메모리에서 그 데이터를 캐시로 가져온다.
  4. 캐시로 가져온 데이터를 프로세서에 전달함
  5. 이렇게 프로세서가 또 일을 하다가, 데이터가 필요해서, 캐시에 해당 데이터가 있는지 확인하고, 만약 캐시에 그 데이터가 있으면(cache hit) 메인메모리로 가는 시간을 절약하고, 캐시까지만 가면 된다.
  6. cache miss의 경우는, 사실 손해다! 과연 cache hit만으로 효과를 볼 수 있는가?

cache miss로 인해 메인 메모리에서 필요한 데이터를 캐시로 가져올 때, 실제로는 한 줄을 가져온다 그래야지 공간적 지역성을 만족시킬 수 있을 것이다. (이렇게)

cache hit가 효과적인 이유

  • 지역성(locality)
    - 공간적 지역성: 참조한 주소와 인접한 주소를 참조하는 특성
    - 예. 순차적 프로그램 수행 -> 어떤 프로그램을 짤 때, 명령어를 순차적으로 실행시키게 될 것이고, 보통 한 프로그램에서 짠 명령어들은 순차적으로 메모리에 저장되므로, 어떤 명령어 주소를 참조하였을 때, 그 다음 참조할 주소는 현재 참조한 주소와 인접할 가능성이 높다.
    • 시간적 지역성: 한번 참조한 주소를 곧 다시 참조하는 특성
      • 예. for문 등의 순환문
  • 이러한 지역성으로 인해 캐시 적중률(cache hit ratio)이 매우 높다: 알고리즘 성능 향상을 위한 중요한 요소 중 하나임

하드웨어에서 관리한다면서요! 이걸 왜 알아야하죠?

  • 2차원 배열의 모든 값을 곱해서 더하는 프로그램이 있다.
  • A, B는 인덱스(i,j)의 순서가 다름
  • B를 따라가 보면,
    (1) a[0][0]를 읽을 것이고, a[0][0~15] 블록 만큼 캐시에 올라가게된다(miss)
    (2) a[1][0]을 읽음 -> 또 다시 miss
    ... 계속된 miss!
  • A를 따라가 보면,
    (1) a[0][0]를 읽을 것이고, a[0][0~15] 블록 만큼 캐시에 올라가게된다(miss)
    (2) a[0][1]을 읽음 -> 캐시에 있음(hit!)
    ... 총 15번의 히트 발생

(3) 보조기억장치

  • 프로그램과 데이터를 저장
  • 프로세서가 직접 접근불가(주변장치)
    - 주기억장치를 거쳐서 접근
    - 프로그램 or 데이터(20gb) > 주기억장치(8gb)의 경우에는?
    - 가상메모리; 하드디스크의 일부를 메모리처럼 사용 -> 메모리보다 큰 프로그램을 올려놓고 사용이 가능

시스템 버스

  • 하드웨어들이 데이터 및 신호를 주고받는 물리적인 통로
  • 프로세서, 메인 메모리, 주변장치등의 리소스들이 함께 일을 하려면, 대화가 필요하다 == 통신이 필요하다
    -> 통신의 통로를 시스템버스라고 함

  1. 프로그램이 메모리 안에 저장되어있음. pc(program counter)가 그 주소를 mar(memory address register)에 넣어주면,
  2. 주소버스로 전달됨
  3. 주소버스를 통해서 메모리에게 어떤 주소를 읽어야하는 지 알려줌
  4. 동시에, 제어장치가 제어신호를 발생시켜서 메모리한테 이를 읽어달라고 말함
  5. 이 주소에 있는 명령어가 읽어져서, 데이터 버스를 타고, 내가 내려야할 mbr(memory buffer register)에서 내려서 그 안으로 들어감
  6. mbr 에서 IR(instrucion register)로 들어가서 저장됨
  7. 저장되면, IR은 그 메모리를 해석하고, 그다음에 실행할 내용을 mar로 보내줌
profile
재밌는게 재밌는거다

0개의 댓글