Technical Architecture/OS_시스템 아키텍처 기본

1.1 컴퓨터 기본 구조

seongduck 2022. 11. 2. 23:18

컴퓨터 기본구조

  • 폰 노이만 아키텍처
    • CPU와 메모리를 사용하는 현대 컴퓨터 모델의 시초...!! (항상 시초는 중요..)
  • 컴퓨터(서버) 주요 구성 요소
    • S/W : OS, 응용프로그램
    • H/D : CPU, 메모리, 디스크

 

  • NIC : 컴퓨터를 네트워크에 연결
  • HBA : 컴퓨터를 외장 스토리지에 연결

CPU

Clock

  • 1초당 CPU가 처리할 수 있는 명령 횟수이다!
  • Clock은 CPU 성능을 나타내는데, Clock이 높을수록 성능이 좋다는 뜻이다!
    • 하지만.... Clock만으로 컴퓨터 성능은 비교 불가!! (아방떼 신형 vs 2010년형 BMW 느낌...?)

 

예시를 살펴보자

  • IBM의 POWER : IBM의 UNIX 장비에 사용되는 CPU로, CPU 당 클럭 및 성능이 우수!
  • Intel Itanium : 서버용 CPU로, HP의 UNIX 장비에서 사용!
  • Intel Xeon : x86 서버 CPU로 가장 많은 시장 점유율을 차지 중! 코어당 성능이 높진 않지만 소켓당 많은 코어를 넣어 높은 성능을 구현할 수 있다!
  • AMD Epyc : AMD의 x86서버 CPU로 Xeon에 비해 낮은 가격이지만 동일한 성능을 구현!
  • Amazon Graviton : AWS의 기반 인프라 용도로 자체 개발한 ARM기반 CPU이다!

 

CPU는 4단계에 걸쳐 명령어를 처리하는데, Clock에 따라 명령을 실행한다!  한번 살펴보자

단계 의미
fetch 메모리에서 명령어 인출
decode 명령어에 대한 해석
execute 명령어 실행
writeback 메모리 저장

 


캐시(Cache) 

  • 데이터의 빠른 처리를 위해 캐시를 사용
  • L1 캐시가 가장 빠르다
  • L3캐시로 갈 수록 데이터를 공유한다.

 

프로세서가 데이터가 필요할때 메모리에 가는 것이 아니라 캐시를 먼저 보고 캐시에 있을 경우 바로 가져온다.

(=Cache Hit!) 

이렇게 CPU 성능을 높이고~ 메모리 접근 시간을 단축할 수 있는 효과...

사실 세상 모든 물건이 그렇듯... 속도가 빠른건(L1캐쉬) 비싸고 속도가 느린건(메인메모리) 싸다!


소켓(Socket) / 코어(Core)/ 쓰레드(Thread)

  • 소켓 : 실제 물리적 부품으로서의 CPU
  • 코어 : 하나의 소켓 안에 하나 또는 여러 개가 탑재되는 CPU의 핵심 요소 (CPU개수 = 코어 갯수)
  • 쓰레드: 코어를 논리적으로 나누어 성능을 높이는 기술, 1코어를 2쓰레드로 사용하면 OS는 2개로 인식
    • 쓰레드는 코어를 더 논리적으로 잘 쪼개서 보여주는 경우, 그의 단위를 쓰레드라고 한다.
    • 이렇게 코어를 논리적으로 나누면 OS에 더많은 CPU로 인식시킬 수 있다!!

쉽게 이야기하면~ 큰 바구니(소켓)에 사과(코어)를 1개 혹은 여러개를 넣는다. 

이사과를 반으로 쪼개어(쓰레드) 넣을 수 있다! 그러면 사과는 2개가 되겠지...?

사과가 2개니까.. 코어는 2개... 코어 개수는 CPU개수랑 같으니까 CPU개수도 2개!!

CPU 별 소켓 당 코어/쓰레드

  • 1개의 소켓 Xeon은 36개의 코어처럼 보인다. (병렬로 처리시 더욱 성능은 증가)
    • 쓰레드 개수만큼 OS가 인식하니까 36개의 코어로 인식!!

실제 Clock Speed 측정

  • CPU의 실제 Clock Speed를 확인할 수 있음
  • windows의 경우 작업 관리자 또는 CPU-Z로 확인가능하다.
  • Linux의 경우 #dmidecode -t 4로 가능하다.

잠시 Windows Server 운영시 꼭 해줄것!

  • CPU 전원 관리 옵션이 "고성능"으로 되어 이썽야 부하에 상관없이 최고 Clock Speed로 동작
  • 전원관리 옵션을 "균형 조정"에서 "고성능"으로 바꾸는 것이 좋다. 


메모리

RAM(Random Access Memory)

  • 프로그램이 실행되는 동안 필요한 정보를 저장하는 공간!!

 

요롷게 생긴거~ 많이 봤죠잉?

 

저장공간 계층

  • 디스크에 저장된 코드나 데이터가 CPU에서 처리되기 위해 이동하는 단계
  • 메모리가 충분하지 못하면?? 프로그램을 돌릴때 많은 I/O가 디스크에서 발생하게 되니 성능은 당연히 ... Down...
  • 물론 요구하는 용량보다 내 메모리가 부족하면?? .... Nope..

디스크

HDD(Hard Disk Drive)

  • 헤드의 순차접근에 의해 데이터를 Platter에 저장
  • Read/Write 성능 개선을 위해 논리적으로 분할하여 사용

 

Q. 왜.. HDD를 실린더 단위로 나눠서 사용할까...?

A. 헤더의 이동거리를 줄여 데이터를 찾기 위함!!

 

딱 이거 3개만 읽어보고 가자!!

이름 설명
트랙 데이터가 기록될 수 있는 동심원 모양의 영역
섹터 트랙을 나눈 것으로 데이터 저장의 최소 단위
실린더 각 플래터의 같은 위치에 존재하는 트랙을 모아서 연결한 것

 

HDD RPM 

  • CPU에는 Clock이 있다면!! HDD에는 RPM이 있다.
  • platter의 분당 회전수를 뜻한다
  • 당연히 RPM이 높은 HDD가 성능이 좋다.

 

HDD 인터페이스 규격

  • 2개 이상의 디스크를 연결할 수 있는 방식을 병렬 인터페이스라고 한다.
  • 하지만 2개로 쓰면.. 아무래도 서로 영향이 있다!! 즉, 간섭현상이 발견된다.
  • 하지만, 최근에는 CPU가 점점 빨라지며 병렬방식이 필요없어 직렬 인터페이스를 사용한다.
  • 가장 최근이 NVMe (ssd의 고성능을 살리기 위한 규격)

 

SSD(Solid State Drive)

  • 낸드 플래시 메모리(NAND Flash Memory)를 사용한 저장장치
  • DRAM은 휘발성 메모리지만 플래쉬 메모리는 비휘발성 메모리이다.
  • 낸드 플래시의 경우는 읽기가 느리고 쓰기가 빠르다. 
  • 저렴하게 큰 용량을 구현할 수 있다.
  • HHD보다 빠른 이유는 물리적인 서치 시간이 없고, 내부적으로 여러개의 플래쉬 메모리에 나눠서 읽기/쓰기를 한다.
  • 물리적인 움직임이 없기에 HDD보다 내구성이 좋고 저전력이다.

 

잠깐..! Flash Memory (비휘발성 반도체 저장장치)란 무엇일까요!??

  • 휘발성 RAM보다는 데이터 처리 속도가 느리지만, 전원이 꺼져도 유지한다! (비휘발성 특징)
  • 덮어쓰기(Overwrite) 개념이 없어, 블록 삭제 후 기록하는 방식을 쓴다...

 

SSD: NAND Memory SLC/MLC/TLC 구분

  • 셀(Cell)에 몇 비트(bit)를 저장하느냐에 따라 구분한다.

 

  • 한 Cell에 많은 정보를 담을수록 가격은 낮아지되 내구성이 떨어져 수명은 또르륵...

 

NAND Flash Memory 기록의 최소 단위(Cell)에 몇 비트를 저장? SLC(Single Level Cell)
MLC(Multi Level Cell)
TCL(Triple Level Cell)

 

SSD특징

1) 디스크 용량과 성능의 상관관계

  • SSD용량이 커질수록 내부에 낸드 플레시 셀의 갯수가 많아지므로 SSD1개 기준으로 용량이 클수록 성능이 좋다.

2) Operation 단위

  • 쓰기, 읽기는 페이지 단위로 수행, 사제는 블록 단위로 수행, Overwrite는 불가능
  • SSD는 위에 말했다시피 덮어쓰기가 없어서 지우고 쓰고 해야해서.. 오버라이트는 Nope..

 

SSD관련 주요 개념

1) Wear Leveling

  • 데이터를 전채적으로 쭉 펼쳐주는 기능이다.
  • 수명이 있기 때문에 수명 모니터링을 진행해야한다.
  • NAND Flash는 쓰기 횟수 제한이 있기 때문에 특정 Flash 영역만 과다한 쓰기가 발생하지 않도록 덜 사용한 페이지 위주로 기록하는 기능

 

2. Garbage Collection

  • 지속적인 Wear Leveling으로 인한 쓰레기 페이지는 바로 지우지 않고, 일정 스케쥴링에 의해 유휴 블록으로 옮기고 블록 단위로 지우는 기능!! (매주 수요일마다 쓰레기를 모아서 버리는 느낌..?)

 

3.TRIM

  • SSD가 유휴 상태일 때 데이터를 미리 지우는 기능!! (당연히 성능은 좋아져~)

 

4. Auto Tiering

  • 자주 쓰는 데이터는 SDD ~ 안쓰는건 HDD (Tering 개념이 중요)

스토리지

외장 스토리지

  • 대용량 스토리지는 i/o와 데이터 저장공간 확장성을 극대화할 수 있음
  • 컨트롤러가 실제 물리에 어디에 있는지 관리를 하며 캐시가 컴퓨터에 요청한 데이터를 남겨두고 사용한다.
  • 자주 사용하는 것은 실제 디스크로 안가고 캐시에서 받아오므로 성능이 올라간다.
  1. 다량의 물리 디스크를 장착
  2. 물리 디스크를 RAID (효율적이게 하드 이용) 구성하여 볼륨 Pool 생성
  3. Pool을 LUN(논리적 디스크)로 분할하여 컴퓨터에 할당
  4. 컴퓨터는 LUN을 물리적 디스크로 인식
  5. 물리 디스크, LUN 관리, 실제 데이터 위치 등은 컨트롤러가 담당!
  6. Cache가 있어 스토리지 성능 향상~