연산 오프로드

Computation offloading

연산 오프로드란 자원 집약적인 연산 작업을 하드웨어 가속기와 같은 별도의 프로세서나 클러스터, 그리드 또는 클라우드와 같은 외부 플랫폼으로 전송하는 것을 말한다.코프로세서로 오프로드하는 것은 이미지 렌더링과 수학적 계산을 포함한 응용 프로그램을 가속화하는 데 사용될 수 있다.네트워크를 통해 외부 플랫폼으로 컴퓨팅을 오프로드하면 컴퓨팅 파워를 제공하고 제한된 컴퓨팅 파워, 스토리지 및 에너지와 같은 장치의 하드웨어 한계를 극복할 수 있다.null

역사

저장 프로그램 컴퓨터의 첫 번째 개념은 최초의 범용 디지털 컴퓨터인 ENIAC의 설계에서 개발되었다.ENIAC는 성능이 단일 작업으로 제한되어 EDVAC가 개발되었으며, 이는 다양한 유형의 지시를 수행하도록 설계된 최초의 컴퓨터가 될 것이다.컴퓨터 기술의 개발은 컴퓨터의 성능의 증가를 촉진시켰고, 그 결과 다양한 구성과 아키텍처로 이어졌다.null

연산 오프로드의 첫 번째 예는 Channel I/O라는 별도의 시스템을 통해 입력/출력 처리를 처리하기 위한 간단한 하위 프로세서의 사용이었다.이 개념은 채널 프로세서가 I/O 포맷과 처리를 수행하는 동안 메인프레임에서 작업을 위한 파라미터를 설정하는 데만 필요했기 때문에 전체적인 시스템 성능을 향상시켰다.1970년대에, 코프로세서는 소프트웨어를 사용한 이전의 8비트 및 16비트 프로세서보다 더 빨리 부동소수점 산술을 가속화하기 위해 사용되기 시작했다.그 결과, 수학 코프로세서는 과학과 공학적인 계산을 위해 보편화되었다.다른 형태의 코프로세서는 그래픽 코프로세서였다.이미지 처리가 대중화되면서 CPU에서 이미지 생성을 오프로드하기 위해 전문 그래픽 칩이 사용되기 시작했다. 그러나 코프로세서는 많은 코프로세서 기능을 통합한 마이크로프로세서 기술의 발달로 인해 대부분의 컴퓨터에서 사용이 감소했다.그러나, 전용 그래픽 처리 장치는 여전히 이미지 처리, 기계 학습, 병렬 컴퓨팅, 컴퓨터 비전 및 물리적 시뮬레이션을 포함한 많은 작업에서 그 효과에 널리 사용되고 있다.null

컴퓨터 자원의 공유인 시간 공유의 개념은 존 매카시에 의해 처음 구현되었다.당시에는 메인프레임 컴퓨터의 구입 및 유지 보수와 관련된 비용 때문에 메인프레임 컴퓨팅이 실용적이지 않았다.시간 공유는 이 문제에 대한 실행 가능한 해결책이었다. 더 작은 회사들이 컴퓨터 사용 시간을 사용할 수 있기 때문이다.1990년대에 통신 회사들은 가상 사설망(VPN) 서비스를 제공하기 시작했다.이것은 기업들이 서버에서 트래픽의 균형을 맞출 수 있게 해 주었고, 결과적으로 대역폭의 효과적인 사용을 초래했다.클라우드 기호는 제공자와 사용자 간의 상호 작용과 동의어가 되었다.이 컴퓨팅은 과거의 네트워크 서버를 확장시켰고 시간 공유를 통해 사용자가 컴퓨팅 능력을 이용할 수 있도록 했다.가상 컴퓨터의 가용성을 통해 사용자는 로컬 프로세서에서 작업을 오프로드할 수 있었다.[1]null

1997년에 배포되었다.넷은 네트워크로 연결된 PC의 성능을 이용하여 계산 집약적인 작업을 해결하기 위한 자원봉사 컴퓨팅을 얻으려고 노력했다.그리드 컴퓨팅으로 알려진 이 개념은 클라우드 컴퓨팅 시스템과 연관되었다.null

대형 메인프레임을 연결하여 효과적인 형태의 병렬화를 제공하는 최초의 개념은 1960년대에 IBM에 의해 개발되었다.클러스터 컴퓨팅은 사용자가 기존 애플리케이션을 실행할 수 있도록 하면서 하드웨어, 운영 체제 및 소프트웨어 성능을 향상시키기 위해 IBM에 의해 사용되었다.이러한 개념은 고성능 분산 컴퓨팅을 위한 도구인 고성능 마이크로프로세서와 고속 네트워크가 등장하면서 1980년대에 탄력을 받게 되었다.클러스터는 개별 노드로 컴퓨팅을 효율적으로 분할 및 오프로드하여 성능을 향상시키는 동시에 확장성을 확보할 수 있다.[2]null

개념

계산 작업은 중앙 프로세서에 의해 처리되며, 이 프로세서는 기본적인 산술, 제어 논리, 입출력 연산을 수행하여 지시를 실행한다.계산 작업의 효율성은 CPU가 수행할 수 있는 초당 지시사항에 따라 달라지며, 프로세서 유형에 따라 달라진다.[3]다른 프로세스에서 외부 처리 플랫폼이 필요할 수 있는 반면, 특정 애플리케이션 프로세스는 메인 프로세서에서 코프로세서로 작업을 오프로딩하여 가속화할 수 있다.null

하드웨어 가속

하드웨어는 소프트웨어와 비교할 때 특정 작업에 대해 더 높은 성능을 제공한다.전문 하드웨어의 사용은 CPU에서 처리되는 소프트웨어보다 더 빨리 기능을 수행할 수 있다. 하드웨어는 전용 기술을 구별되는 기능에 사용할 수 있는 사용자 정의의 이점을 가지고 있다.예를 들어, 수많은 저성능 코어로 구성된 그래픽 처리 장치(GPU)는 적은 수의 고출력 코어를 특징으로 하는 CPU보다 그래픽 계산에 더 효율적이다.[4]그러나 하드웨어 가속기는 CPU에 비해 용도가 떨어진다.

클라우드 컴퓨팅

클라우드 컴퓨팅은 인터넷을 통해 전송되는 애플리케이션과 서비스를 제공하는 데이터 센터의 하드웨어 및 소프트웨어를 모두 가리킨다. 여기에는 데이터 스토리지와 컴퓨팅이 포함된다.[5]이러한 형태의 컴퓨팅은 초고속 인터넷 접속과 인프라 투자에 의존한다.[6]네트워크 액세스를 통해 컴퓨터는 컴퓨팅의 일부를 클라우드로 마이그레이션할 수 있다.이 프로세스에는 계산에 필요한 계산 능력을 이용할 수 있는 데이터 센터 네트워크에 데이터를 전송하는 것이 포함된다.null

클러스터 컴퓨팅

클러스터 컴퓨팅은 상호 연결된 독립 실행형 시스템을 결합하여 단일 컴퓨팅 리소스로 작동하는 병렬 처리 시스템의 일종이다.[7]클러스터는 노드 간 통신을 위해 고대역폭과 낮은 대기 시간을 지원하기 위해 빠른 상호연결 기술을 필요로 하는 병렬 프로그래밍 모델을 채택한다.[2]공유 메모리 모델에서 병렬 프로세스는 글로벌 주소 공간으로서 모든 메모리에 액세스할 수 있다.여러 프로세서는 독립적으로 작동할 수 있지만 동일한 메모리를 공유하기 때문에 하나의 프로세서에 의한 메모리 변화는 다른 모든 프로세서에 반영된다.[7]null

그리드 컴퓨팅

그리드 컴퓨팅은 가상 슈퍼컴퓨터로 함께 작동하여 거대한 데이터 세트를 분석하는 등 집중적인 컴퓨팅 작업을 수행하는 네트워크 컴퓨터 그룹이다.클라우드를 통해 목적과 특정 기간 동안 컴퓨터 그리드를 만들어 사용할 수 있다.컴퓨팅 작업을 여러 기계에 분산시키면 처리 시간이 크게 단축되어 효율성이 향상되고 리소스 낭비를 최소화한다.병렬 컴퓨팅과 달리 그리드 컴퓨팅 태스크는 대개 그것과 관련된 시간 의존성이 없지만, 대신 유휴시에만 그리드의 일부인 컴퓨터를 사용하고, 사용자는 언제든지 그리드와 관계없는 태스크를 수행할 수 있다.[8]null

이점

컴퓨팅을 외부 프로세서로 오프로드할 경우 다음과 같은 몇 가지 이점이 있다.

  • 외부 처리 장치는 로컬 컴퓨터에 비해 뛰어난 연산 성능, 저장 및 유연성을 제공할 수 있다.
  • 더 나은 성능과 자원으로 작업량을 다른 시스템으로 오프로드하여 장치의 연산 한계를 무시할 수 있다.에너지 소비, 비용 및 휴대성을 포함한 기기의 다른 측면을 개선할 수 있다.[9]
  • 사업을 수행하기 위해 하드웨어가 필요한 기업은 정보기술과 인프라 개발에 자원을 할당할 필요가 없다.
  • 클러스터 컴퓨팅은 단일 컴퓨터보다 비용 효율적이며 처리 단위를 더 추가하는 면에서 훨씬 더 유연하다.

제한 사항

컴퓨팅을 외부 프로세서로 오프로드하는 데는 다음과 같은 몇 가지 제한이 있다.

  • 클라우드 컴퓨팅 서비스는 서비스 제공업체가 과중한 업무에 시달릴 때 가동 중단이 발생할 수 있기 때문에 다운타임과 관련된 문제가 있다.
  • 외부 컴퓨팅은 네트워크 의존성을 필요로 하는데, 네트워크 연결이 문제에 부딪힐 경우 다운타임이 발생할 수 있다.
  • 네트워크를 통한 컴퓨팅은 자동 주행과 비디오 분석을 포함하여 지연 시간에 민감한 애플리케이션에 원하지 않는 지연 시간을 도입한다.[10]
  • 클라우드 제공자가 항상 안전한 것은 아니며, 보안 침해의 경우 중요한 정보가 공개될 수 있다.
  • 현대 컴퓨터는 그래픽, 사운드 하드웨어 및 네트워킹을 포함한 다양한 기술을 메인 회로 기판 내에 통합하여 많은 하드웨어 가속기를 관련 없는 것으로 만든다.
  • 클라우드 서비스를 사용하면 하드웨어에 대한 개별적인 통제가 없어지고 사용자가 클라우드 제공자가 인프라를 유지하고 데이터를 적절하게 보호할 것이라고 믿어야 한다.
  • 애플리케이션 소프트웨어는 대상 프로세서 또는 운영 체제에서 사용할 수 없을 수 있다.소프트웨어는 대상 환경에 맞게 다시 작성해야 할 수 있다.이것은 추가적인 소프트웨어 개발, 테스트 및 비용으로 이어질 수 있다.

적용

클라우드 서비스

클라우드 서비스는 SaaS, PaaS, IaaS의 3가지 주요 클라우드 서비스 모델로 설명할 수 있다.SaaS(Software as a Service)는 외부 호스팅 서비스로, 웹 브라우저를 통해 소비자가 쉽게 접근할 수 있다.PaaS(Platform as a Service)는 사용자가 컴퓨팅 인프라의 구축과 유지보수에 집중할 필요 없이 소프트웨어를 구축, 테스트, 구축할 수 있는 개발 환경이다.IaaS(Infrastructure as a Service)는 기업이 소프트웨어를 구축하는 데 사용할 수 있는 인프라의 리소스, 네트워크 기술 및 보안 컴플라이언스에 대한 액세스다.클라우드 컴퓨팅 서비스는 사용자에게 상당한 지출 없이 로컬 컴퓨터에서 사용할 수 없는 대량의 컴퓨팅 성능과 스토리지에 대한 액세스를 제공한다.[6]null

모바일 클라우드 컴퓨팅

스마트폰, 웨어러블 기기 등 모바일 기기는 연산력, 저장력, 에너지 측면에서 한계가 있다.CPU, GPU, 메모리, 무선 액세스 기술을 포함한 핵심 요소들의 끊임없는 발전에도 불구하고, 모바일 기기는 휴대성과 에너지 효율이 필요하다.모바일 클라우드 컴퓨팅은 클라우드 컴퓨팅과 모바일 컴퓨팅의 결합으로, 모바일 기기가 컴퓨팅 오프로딩을 수행하여 클라우드의 성능을 균형 있게 조정하여 애플리케이션 실행을 가속화하고 에너지 소비를 절감하는 것이다.이 컴퓨팅 오프로드에서 모바일 장치는 컴퓨팅의 일부를 클라우드로 마이그레이션한다.이 프로세스에는 애플리케이션 파티셔닝, 오프로드 결정 및 분산 작업 실행이 포함된다.[11][12]null

비디오 게임

비디오 게임은 입력, 사용자 인터페이스와의 상호 작용 및 출력을 생성하는 전자 게임으로, 보통 비디오 디스플레이 장치에서 시각적 피드백을 제공한다.이러한 입출력 작업은 CPU, GPU, RAM 및 스토리지를 포함한 컴퓨터와 그 구성요소에 의존한다.게임 파일은 보조 메모리의 형태로 저장되며, 실행될 때 메인 메모리에 로드된다.CPU는 사용자의 입력을 처리하고 GPU에 정보를 전달하는 역할을 한다. GPU는 컴퓨터의 메인 메모리에 접근할 수 없기 때문에 대신 그래픽 자산을 GPU의 메모리인 VRAM에 로딩해야 한다.CPU는 GPU에 지시하는 반면 GPU는 출력 장치에 이미지를 렌더링하는 데 정보를 사용한다.CPU는 소프트웨어 렌더링을 통해 GPU 없이 게임을 실행할 수 있지만 하드웨어가 전문화된 GPU로 렌더링을 오프로딩하면 성능이 향상된다.[13]null

참조

  1. ^ Foote, Keith D. (2017-06-22). "A Brief History of Cloud Computing". DATAVERSITY. Retrieved 2019-10-17.
  2. ^ a b Yeo, Chin; Buyya, Rajkumar; Pourreza, Hossien; Eskicioglu, Rasit; Peter, Graham; Sommers, Frank (2006-01-10). Cluster Computing: High-Performance, High-Availability, and High-Throughput Processing on a Network of Computers. Boston, MA: Springer. ISBN 978-0-387-40532-2.
  3. ^ "CPU Frequency". www.cpu-world.com. Retrieved 2019-10-16.
  4. ^ Cardoso, Joao; Gabriel, Jose; Pedro, Diniz (June 15, 2017). Embedded Computing for High Performance. Morgan Kaufmann. ISBN 9780128041994.
  5. ^ Armbrust, Michael; Fox, Armondo; Griffith, Rean; Joseph, Anthony; Katz, Randy; Konwinski, Andrew; Lee, Gunho; Patterson, David; Rabkin, Ariel (February 10, 2009). Above the Clouds: A Berkeley View of Cloud Computing.
  6. ^ a b "How Does Cloud Computing Work? Cloud Academy Blog". Cloud Academy. 2019-03-25. Retrieved 2019-10-22.
  7. ^ a b "Introduction to Cluster Computing — Distributed Computing Fundamentals". selkie.macalester.edu. Retrieved 2019-10-22.
  8. ^ "What is Grid Computing - Definition Microsoft Azure". azure.microsoft.com. Retrieved 2019-10-22.
  9. ^ Akherfi, Khadija; Gerndt, Micheal; Harroud, Hamid (2018-01-01). "Mobile cloud computing for computation offloading: Issues and challenges". Applied Computing and Informatics. 14 (1): 1–16. doi:10.1016/j.aci.2016.11.002. ISSN 2210-8327.
  10. ^ Ananthanarayanan, Ganesh; Bahl, Paramvir; Bodik, Peter; Chintalapudi, Krishna; Philipose, Matthai; Ravindranath, Lenin; Sinha, Sudipta (2017). "Real-Time Video Analytics: The Killer App for Edge Computing". Computer. 50 (10): 58–67. doi:10.1109/mc.2017.3641638. ISSN 0018-9162.
  11. ^ Lin, L.; Liao, X.; Jin, H.; Li, P. (August 2019). "Computation Offloading Toward Edge Computing". Proceedings of the IEEE. 107 (8): 1584–1607. doi:10.1109/JPROC.2019.2922285.
  12. ^ Ma, X.; Zhao, Y.; Zhang, L.; Wang, H.; Peng, L. (September 2013). "When mobile terminals meet the cloud: computation offloading as the bridge". IEEE Network. 27 (5): 28–33. doi:10.1109/MNET.2013.6616112.
  13. ^ "How Graphics Cards Work - ExtremeTech". www.extremetech.com. Retrieved 2019-11-11.