CPU

  • 논리연산 + 산술연산을 수행하는 중앙처리장치
  • DRAM(동적RAM), ALU(Arithmatic Logic Unit, 산술논리장치), Control(제어장치), Cache(캐시메모리)의 4종류로 이루어져 있음
  • 명령어가 입력된 순서대로 처리하는 순차 처리 방식(Queue)에 특화되어있는 연산장치
  • 명령이 복잡하고 어려운 계산에 적합합(ALU가 적고 Control이 큼)

구성요소

  1. DRAM
  • 현재 실행중인 프로그램, 열려있는 데이터 등 CPU에서 처리될 데이터가 존재하는 위치
  • DRAM과 비교되는 것으로 SRAM, NAND Flash가 있으나 더 깊게 들어가면 반도체 공학이 되어버리므로, 이러한 것이 있다고만 알고 넘어가도록 한다. 사실 본인도 인터넷에 쓰여진 것 이상은 모른다.
  1. Cache
  • 가장 빠른 메모리중 하나로, CPU 에서 자주 사용하는 데이터를 보관
  • DRAM과 비슷하지만, DRAM보다 가격이 싸고 훨씬 빠르며 결정적인 차이점은 DRAM의 위치가 항상 내부에 있는 것과는 별개로 Cache 메모리는 내부 및 외부에 모두 존재할 수 있음
  1. ALU
  • 산술연산 및 논리연산을 처리하는 주체로, 일련의 작업을 병렬로 처리할 수 있게 해준다.
  • 일반적으로 제어장치의 명령을 받으며 연산 결과의 일부를 Cache에 저장하고 다시 DRAM으로 결과를 리턴
  1. Control
  • 제어장치로, 나머지 장치들을 올바르게 연산이 실행되도록 제어

CPU의 작동방식

  1. RAM이 입력장치에서 입력받은 데이터 또는 디스크에 저장된 프로그램을 read
  2. CPU는 프로그램을 실행하기 위해 RAM에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 disk에 저장하거나 출력장치로 보냄
  3. 제어장치가 이 과정중 명령어가 순서대로 실행되도록 제어

GPU

  • CPU와 동작 및 하는 역할은 거의 유사하지만, ALU가 적어 고등 계산보다는 단순 계산을 주로 실행
  • CPU에 비해 control이 굉장히 적으며, 소형의 ALU가 병렬로 다수 위치
  • 데이터 처리를 위한 메모리 용량이 성능 지표
  • CPU에 비해 집적도가 높고, 고속의 병렬 연산이 특징

GPU 사용시 발생하는 이슈

  1. 복잡한 알고리즘
  • 2012년 DNN이 본격적으로 활성화되기 시작함(Large Scale Image Recognition Challenge 2012, AlexNet)
  • 1차원적인 선형 연산에서 n차원 비선형 연산으로의 변화
  • 차원이 늘어날수록 연산에 필요한 파라미터는 폭증하여, 2015년 우승 모델인 Resnet의 경우에는 110억개의 파라미터가 존재한다고 한다.
  1. 특정 순간에만 집적되는 사용률
  • 모델 훈련의 경우에만 주로 사용됨
  • 모델이 훈련되고있지 않을 경우 들이는 투자비용에 비해 유휴시간이 김

따라서, GPU Clustering의 요구 및 수요가 생기기 시작함

GPGPU

  • CPU가 수행하던 작업을 GPU가 대신 수행하도록 하는 기술
  • 복잡한 연산을 대량으로 처리해야하는 작업에 적합
  • 가상화폐 채굴, ML/DL, 게임, 그래픽 프로세싱 등이 GPGPU를 요구하는 대표적인 기술
  • CUDA, OpenCL이 대표적인 GPGPU 아키텍처

일반적인 GPGPU 동작방식

  • CPU의 경우
    • DRAM에 데이터 및 프로그램이 위치
    • DRAM으로부터 데이터를 CPU로 옮겨 연산(Control 및 ALU)
    • 연산의 일부를 캐싱하고 다시 DRAM으로 리턴
  • GPGPU의 경우
    • DRAM으로 리턴한 연산 결과를 다시 GDRAM으로 이동
    • GPU로 데이터를 옮겨 연산
    • 연산 결과를 GDRAM으로 리턴
    • GDRAM의 데이터를 DRAM으로 리턴

GPGPU의 문제점

  • 비효율적인 동선
    • 비교적 가까운 위치의 DRAM-CPU는 그렇다 치더라도, DRAM과 GDRAM의 거리는 물리적으로나 전자적으로나 굉장히 먼 거리.
    • 따라서 DRAM 및 GDRAM 사이의 데이터 이동은 유의미한 latency를 낳고, 이는 성능의 하락으로 이어짐

그래서 등장하게 된 GPGPU 아키텍처

  • CUDA 및 OpenCL은 이러한 비효율적인 데이터 이동을 DRAM및 GDRAM의 통합으로 극복하려 함
  • DRAM 및 GDRAM 사이의 간극을 줄이고, cpu에서 연산을 거치지 않고 cpu의 연산장치의 제어를 받는 채로 GPU의 ALU를 활용하여 연산
  • RAM의 가상화 및 통합

'전산학' 카테고리의 다른 글

서브네팅  (0) 2021.08.07
[Network] QoS 와 MQTT 프로토콜  (0) 2021.07.18
[Network] 네트워크 프로토콜 정리  (0) 2021.07.18

서브넷(Subnet)이란?

서버에 IP 할당시, 이론상 사용가능한 주소는 각 망마다 255*255*255*255로, 약4조가 넘어간다. 그러나 어떠한 주소 하나를 찾아갈때마다 4조개가 넘는 IP를 일일히 검색해 목적지를 탐색하다보면 얼마나 비효율적인가.
그래서 우리는 각 네트워크를 '클래스'라는 단위로 구분하게 된다.

서브넷은 가용 IP 범위에 따라 A, B, C클래스로 구분된다. 각 클래스는 8비트 단위로 구분되며, 비트이기 때문에 각 클래스는 0과 1로 치환 가능하다. 즉, 각 비트가 취할 수 있는 형태가 0과 1이라는 소리다. 각 클래스당 비트가 총 8개니까 2^8=256. ip는 0부터 시작할 수 있으므로 서브넷이 취할 수 있는 숫자가 255까지인 것이다.

예시를 들어보자.

ifconfig 결과이다. 지워진 부분은 외부로 개방된 네트워크 인터페이스로, 이더넷이다. 이더넷 부분을 보면 netmask에 255.255.255.0이라고 되어있다. 즉 서브넷 255.255.255.0 == 11111111.11111111.11111111.0 이라는 소리다. 1이 꽉찬 8비트가 세개이므로, 이 서브넷은 24비트. 만약 이 서브넷 그대로 서버를 세팅하고 싶다면 우분투 netplan 기준 111.222.333.0/24라고 세팅해야 한다.

그럼 만약 서브넷이 255.255.255.1이라면?

255.255.255.1은 11111111.11111111.11111111.00000001이므로, 이 서브넷은 25비트이다. 즉, 111.222.333.0/25가 된다는 소리. 마찬가지로 비트가 1 올라갈때마다 2진수 형태의 서브넷이 하나씩 늘어난다.

'전산학' 카테고리의 다른 글

CPU 구조 및 원리, GPU와의 비교  (0) 2021.10.28
[Network] QoS 와 MQTT 프로토콜  (0) 2021.07.18
[Network] 네트워크 프로토콜 정리  (0) 2021.07.18

MQTT 프로토콜?

  • Broker Pattern을 이용한 메세징 프로토콜
  • 점유 리소스가 낮아 주로 IoT 환경에서 많이 사용됨.

MQTT의 패킷 구조

 

Broker Pattern이란?

  • Publisher(발행자)/Broker(중개)/Subscriber(구독자)로 이루어져 있으며, 발행자가 메세지를 생성하면 브로커의 중계를 통해 구독자에게 메세지가 도착하는 디자인 패턴
  • 대표적인 브로커 패턴의 컴포넌트로 아파치 카프카(Apache Kafka)가 있다.
  • 브로커가 메세징 버스를 구성하고, 각 어플리케이션들이 메세지 버스에서 각자 본인의 메세지를 찾아가는 형식.

브로커와 메세지 버스

 

QoS(Quality of Service)?

  • 서비스의 질을 보장하는 레벨을 뜻하며 0부터 2까지 존재
  • 레벨마다 성능과 소모되는 리소스가 달라지며 IoT를 기반으로 한 데이터 파이프라인에서는 아키텍처 설계에 있어 굉장히 중요한 개념
  • 엔지니어는 시스템의 환경을 상세히 파악하고 구축하려는 시스템과 네트워크 환경에 따라 적절한 QoS 레벨을 선택하여야 한다.
  • QoS 레벨은 메세지의 신뢰도와 속도에 따라 나누어지며 3-Way/4-Way Handshake 과정을 거치는 TCP/IP 환경에 비해 패킷의 손실이 일어날 가능성이 있는 NO TCP/IP 환경에서 메세지의 신뢰성을 높이기 위해 서버단에서 구현한 기능.

Level 0(At most once)

  • 메세지는 최대 한번 전달된다.
  • 단 한번 보내고 바로 메세지를 삭제하기 때문에 가장 리소스를 적게 잡아먹고, 지연 및 통신 시간 역시 가장 짧다. 전화통화처럼 메세지의 신뢰성보다는 빠른 응답이 필요한 경우 적합한 시스템.
  • 브로커에는 아무것도 저장되지 않는다. 단지 중개 역할만을 수행.

QoS 0레벨 : At most once의 시퀀스 다이어그램. Fire and Forget이라고도 함

Level 1(At most once)

  • 메세지는 최소 한번 전달된다.
  • 생산된 메세지는 저장되고, 생산자가 브로커에 메세지를 전달
  • 브로커는 메세지를 한번 저장 후(archiving) 구독자에 메세지를 전달
  • 브로커는 메세지를 전달했으므로 메세지를 삭제 후 생산자에게 정상적으로 메세지를 날렸다는 PUBACK을 날린다.
  • PUBACK을 받은 생산자는 최초 생산해 저장하고 있던 메세지를 삭제

QoS 1레벨 시퀀스 다이어그램

Level 2(Exactly once)

  • 가장 높은 신뢰도를 가지는 레벨
  • 네트워크 장애에 상관없이(물리/소프트웨어적 오류는 별개)메세지는 무조건 한번만 전달

Network 장애시

시스템을 구축한다는 것의 의미는, 클라이언트에서 요구한 시스템을 구축하는 것에서 끝나지 않는다. 당연히 정상적인 운용 도중 발생하는 예기치 못하는 경미한 각종 에러부터 Fatal까지, 그 예외사항을 염두에 두고 시스템을 구축해야 한다. 이번에는 정상적인 상황이 아닌, 네트워크 장애로 인해 임의의 구간에서 메세지가 손실/지연되는 경우 각 QoS의 동작에 대해 알아본다.

  • 0레벨은 단순히 메세지가 전달되지 않고 끝난다. 생산자는 메세지를 보냈으니 메세지를 바로 삭제하고, 브로커가 메세지를 전달받지 못하더라도 아무런 작용 없이 메세지는 손실된다.
  • 2레벨의 경우 각 메세지는 모두 상호작용을 통해 저장 및 삭제되므로 어느 한 구간의 통신이 되지 않으면 반드시 재시도를 통해 정확히 한번만 메세지가 전달된다. (만약 브로커에 두번의 요청이 오더라도, 메세지를 삭제하기 전에 반드시 Callback을 보내므로 이미 알고있는 메세지를 다시 전달하지 않는다.
  • 1레벨의 경우는 조금 다른데, 생산자에서 브로커로, 브로커에서 구독자로 메세지가 전달되는 과정에서 지연으로 인해 생산자가 최초의 메세지에 대해 PUBACK을 받지 못하는 경우, 생산자는 메세지 전달이 실패한 것으로 판단해 다시 메세지를 보내고, 최초의 메세지와 재전송된 메세지가 모두 구독자측으로 발행되므로 구독자는 메세지를 2회 전달받게 된다(Duplicate Publish)

마치며...

  • 실제 Production 환경에서는 스터디나 개인 공부 환경에서는 겪어보지 못한 각종 에러가 발생한다. 그건 다기종 시스템간에 접근성 충돌일수도 있고, 트래픽 과부하로 인한 네트워크 에러일수도 있고, 버전 업그레이드 이후 발생하는 모듈간 호환성 이슈일수도 있다. 혹은 보안 모듈의 오작동으로 인한 Fatal인 경우도 있다.
  • 공부할 때는 무조건 최고의 조건 하에서 시스템을 구축하지만, 타 업체의 용역사업을 맡게되는 경우 대개 예산은 부족하고 환경은 열악하다. 따라서 비이상적인 환경에서의 시스템 구축 또한 고려할 사항이다.

 

'전산학' 카테고리의 다른 글

CPU 구조 및 원리, GPU와의 비교  (0) 2021.10.28
서브네팅  (0) 2021.08.07
[Network] 네트워크 프로토콜 정리  (0) 2021.07.18

Network Protocol

  • 상호간 통신을 위한 규약
  • 국제 표준화 기구(ISO)에서 개발한 네트워크 추상화 모델로 OSI 7 Layer가 국제 표준이며, 모든 네트워크 관련 이론의 기초가 된다.
  • 그러나 OSI 7계층 이론이 너무 복잡하고 실용성이 떨어진다는 평가로 인해 기존의 이론을 응용, 전송, 인터넷, 네트워크 계층으로 단순화시킨 TCP/IP 4 Layer 이론이 새로 등장하게 된다.
  • TCP/IP 4계층 이론은 실무에서 가장 많이 사용되는 방식이며 OSI 7 계층을 단순화 시킨 것으로, 대부분의 통신 프로토콜이 여기에 포함된다.
  • 우리가 사용하는 대부분의 네트워크 통신법은 응용 계층에 위치함(HTTP, telnet, DNS, SMTP…)

OSI 7계층과 TCP/IP 4계층의 비교

TCP/IP

  • 기존의 7계층을 응용, 전송, 인터넷, 네트워크 인터페이스의 4영역으로 구현
  • 네트워크 인터페이스 계층은 HW에 더 밀접하게 관련된 계층으로, LAN, VLAN, WAN등의 물리적 레이어와 랜카드에 의해 명명되는 enp0s3, eno1등의 네트워크 인터페이스를 포함
  • 인터넷 계층은 접속된 클라이언트의 개인 데이터를 명명하는 계층
  • 특히 전송계층은 IP를 기반으로 한 통신의 패킷의 오류 검출 및 Failover, Callback등의 제어를 담당하는 계층
  • 응용 계층은 우리가 사용하는 대부분의 High-level 프로토콜이 포함되는 계층

HTTP

  • Header+Body의 형태로 구성되며, 헤더 내부에 출발지/도착지/순서가 모두 규명되어있어 이용자는 BODY에 포함되는 데이터만 작성하면 되는 단순화된 프로토콜
  • WWW웹상에서 구현되는 모든 프로토콜은 HTTP 프로토콜을 기반으로 구현
  • 비동기 프로토콜로 데이터를 전송 후 연결을 끊는다

MQTT

DHCP

  • 가입자가 최초로 망에 연결시 라우터가 동적으로 주소(IP)를 할당하는 프로토콜
  • 보통 대부분의 컴퓨터가 DHCP 프로토콜을 기반으로 통신하고 있다(폐쇄망, WWW 포함)

TCP

  • 전송 계층 위에서 동작하는 프로토콜로, BODY와 TCP 헤더로 구성됨
  • 헤더의 구성에서 순서를 보장하며(header - sequence number), 데이터의 오류 검출(checksum) 및 데이터 수신자 측에서의 응답 비트(ACK Number)를 포함하고 있어 신뢰도가 높음
  • QoS 1레벨 이상
  • 송신자 및 수신자가 1대1로 연결(unicast)

UDP

  • 전송 계층 위에서 동작하는 프로토콜로, BODY와 UDP 헤더로 구성
  • 헤더의 구성에서 순서를 보장하지 않고, 데이터의 및 손상을 검출하지 않고, 수신자 측의 응답 결과를 확인하지 않음
  • 속도가 매우 빠르고 지연시간이 낮아 IoT 환경 중에서도 전화통화나 문자메세지 등 저용량, 저지연 시스템에서 주로 사용
  • 송신자와 수신자가 일대다(Broadcast), 다대다(Multicast)로 연결
  • UDP의 기능 및 전송 프레임 구조 특성

'전산학' 카테고리의 다른 글

CPU 구조 및 원리, GPU와의 비교  (0) 2021.10.28
서브네팅  (0) 2021.08.07
[Network] QoS 와 MQTT 프로토콜  (0) 2021.07.18

+ Recent posts