KR20220091363A - 메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술 - Google Patents

메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술 Download PDF

Info

Publication number
KR20220091363A
KR20220091363A KR1020210162246A KR20210162246A KR20220091363A KR 20220091363 A KR20220091363 A KR 20220091363A KR 1020210162246 A KR1020210162246 A KR 1020210162246A KR 20210162246 A KR20210162246 A KR 20210162246A KR 20220091363 A KR20220091363 A KR 20220091363A
Authority
KR
South Korea
Prior art keywords
reference image
video
computing node
edge
lossy
Prior art date
Application number
KR1020210162246A
Other languages
English (en)
Inventor
프라빈 피 네어
레디아르 팔라니벨 구루바
스티븐 제이 투
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20220091363A publication Critical patent/KR20220091363A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술이 개시된다. 예시적인 실시예에서, 컴퓨팅 노드의 비디오 인코더는 비디오 스트림의 참조 이미지를 저장하기 위해 손실 압축 알고리즘을 사용한다. 손실 압축된 참조 프레임은 비디오 스트림의 후속 이미지를 인코딩하는 데 사용된다. 대응하는 디코더가 참조 이미지를 수신하면, 동일한 손실 압축 알고리즘을 적용하여 참조 이미지를 저장한다. 손실 압축된 참조 프레임은 후속 이미지를 디코딩하는 데 사용된다. 참조 프레임의 압축으로 인한 인코더와 디코더 간의 드리프트는 비디오 인코더와 비디오 디코더 모두에서 동일한 손실 압축 알고리즘을 사용함으로써 피할 수 있다.

Description

메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술{TECHNOLOGIES FOR MEMORY-EFFICIENT VIDEO ENCODING AND DECODING}
비압축 비디오는 대량의 데이터 저장 및/또는 데이터 대역폭을 사용한다. 비디오 저장 및 전송 비용을 줄이기 위해, 비디오는 다양한 기술을 사용하여 압축될 수 있다. 비디오 인코더에 대한 한 가지 일반적인 기술은 비압축 상태로 저장된 참조 이미지를 사용하는 것인데, 후속 이미지는 참조 이미지에 대한 상대적인 변경 사항을 기반으로 압축된다. 참조 이미지 및 후속 압축 이미지는 비디오 디코더로 보내질 수 있으며, 이 비디오 디코더는 참조 이미지를 사용하여 압축 전의 후속 이미지를 잘 재현한다.
본 명세서에 설명된 개념은 첨부 도면에서 제한이 아니라 예로서 도시되어 있다. 예시의 단순성과 명료성을 위해, 도면에 예시된 요소는 반드시 축척에 맞게 그려진 것은 아니다. 적절하다고 판단되는 경우, 대응하는 또는 유사한 요소를 나타내기 위해 참조 레이블이 도면들 간에 반복되었다.
도 1은 네트워크에 의해 연결된 메모리 효율적인 비디오 압축 및 압축해제를 위한 컴퓨팅 노드의 적어도 하나의 실시예의 단순화된 블록도이다.
도 2는 도 1의 컴퓨팅 노드의 적어도 하나의 실시예의 단순화된 블록도이다.
도 3은 도 1의 컴퓨팅 노드 내의 예시적인 컴포넌트의 추가 개요를 제공한다.
도 4는 도 1의 컴퓨팅 노드에 의해 설정될 수 있는 환경의 적어도 하나의 실시예의 단순화된 블록도이다.
도 5는 도 1의 컴퓨팅 노드에 의해 실행될 수 있는 메모리 효율적인 비디오 인코딩을 위한 방법의 적어도 하나의 실시예의 단순화된 흐름도이다.
도 6은 도 1의 컴퓨팅 노드에 의해 실행될 수 있는 메모리 효율적인 비디오 디코딩을 위한 방법의 적어도 하나의 실시예의 단순화된 흐름도이다.
도 7은 에지 컴퓨팅을 위한 에지 클라우드 구성의 개요를 도시한다.
도 8은 엔드포인트, 에지 클라우드 및 클라우드 컴퓨팅 환경 사이의 동작 계층을 도시한다.
도 9는 에지 컴퓨팅 시스템에서의 네트워킹 및 서비스의 예시적인 접근 방식을 도시한다.
도 10은 에지 컴퓨팅 시스템에서 애플리케이션에 대한 모바일 액세스를 포함하는 컴퓨팅 및 통신 용례를 도시한다.
도 11은 ETSI MEC(Multi-Access Edge Computing) 사양에 따라 배열된 예시적인 모바일 에지 시스템 참조 아키텍처를 도시한다.
도 12는 일 예에 따른 각각의 게이트웨이에 대한 링크를 통해 연결된 사물 인터넷(IoT) 네트워크 각각에 대한 도메인 토폴로지를 도시한다.
도 13은 일 예에 따라 클라우드 컴퓨팅 네트워크의 에지에서 포그(fog) 장치로 동작하는 IoT 장치의 메시 네트워크와 통신하는 클라우드 컴퓨팅 네트워크를 도시한다.
도 14는 일 예에 따른 다수의 사물 인터넷(IoT) 장치와 통신하는 클라우드 컴퓨팅 네트워크 또는 클라우드의 도면을 도시한다.
도 15는 일 예에 따라, 본 명세서에서 논의된 기술(예를 들어, 동작, 프로세스, 방법 및 방법론) 중 임의의 하나 이상이 수행될 수 있는 예시적인 IoT 프로세싱 시스템 아키텍처에 대한 블록도를 도시한다.
도 16은 일 예에 따른 에지 컴퓨팅 시스템 사이에 배치된 분산 컴퓨팅 계층의 개요를 도시한다.
도 17은 일 예에 따른 예시적인 소프트웨어 배포 플랫폼을 도시한다.
본 개시의 개념은 다양한 수정 및 대안적 형태가 가능하지만, 도면에서는 그의 특정 실시예가 예로서 도시되었고 본 명세서에서 상세히 설명될 것이다. 그러나, 본 개시의 개념을 개시된 특정 형태로 제한하려는 의도는 없으며, 그와 반대로 본 개시 및 첨부된 청구항에 부합하는 모든 수정, 균등물 및 대안을 포괄하려 한다.
명세서에서 "일 실시예", "실시예", "예시적인 실시예" 등의 표현은 설명된 실시예가 특정 특징, 구조 또는 특성을 포함할 수 있지만 모든 실시예가 그러한 특정 기능, 구조 또는 특성을 반드시 포함해야 할 수도 있고 그렇지 않을 수도 있다. 더욱이, 이러한 표현은 반드시 동일한 실시예를 언급하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성이 실시예와 관련하여 설명될 때, 그러한 특정 특징, 구조 또는 특성을 다른 실시예와 관련하여 실시하는 것은, 명시적으로 기재되어 있는지 여부와는 상관없이, 당업자의 지식 범위 내에 있음을 밝히는 바이다. 또한, "적어도 하나의 A, B 및 C"의 형태의 목록에 포함된 항목은 (A), (B), (C), (A 및 B), (A 및 C), (B 및 C), 또는 (A, B 및 C)를 의미할 수 있다. 마찬가지로 “A, B, C 중 적어도 하나의 형태로 나열된 항목은 (A), (B), (C), (A 및 B), (A 및 C), (B 및 C), 또는 (A, B 및 C)를 의미할 수 있다.
개시된 실시예는 일부 경우에 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 개시된 실시예는 또한 하나 이상의 프로세서에 의해 판독 및 실행될 수 있는 일시적 또는 비일시적 머신 판독가능(예를 들어, 컴퓨터 판독가능) 저장 매체에 의해 운반되거나 그 상에 저장된 명령어로서 구현될 수 있다. 머신 판독가능 저장 매체는 머신에 의해 판독 가능한 형태로 정보를 저장하거나 전송하기 위한 임의의 저장 장치, 메커니즘, 또는 기타 물리적 구조(예를 들어, 휘발성 또는 비휘발성 메모리, 미디어 디스크, 또는 기타 미디어 장치)로서 구현될 수 있다.
도면에서, 일부 구조적 또는 방법적 특징이 특정 배열 및/또는 순서로 도시될 수 있다. 그러나, 그러한 특정 배열 및/또는 순서는 필요하지 않을 수 있음을 이해해야 한다. 오히려, 일부 실시예에서, 그러한 특징은 예시적인 도면에 도시된 것과 상이한 방식 및/또는 순서로 배열될 수 있다. 또한, 특정 도면에 구조적 또는 방법적 특징을 포함하는 것은 그러한 특징이 모든 실시예에서 요구된다는 것을 의미하지 않으며, 일부 실시예에서는 포함되지 않거나 다른 특징과 결합될 수 있다.
이제 도 1을 참조하면, 예시적인 시스템(100)은 네트워크(104)를 통해 비디오를 디코딩하기 위해 컴퓨팅 노드(102)에 연결된 비디오를 인코딩하기 위한 컴퓨팅 노드(102)를 포함한다. 일부 실시예에서, 컴퓨팅 노드(102) 및/또는 네트워크(104)는 에지 컴퓨팅 시스템의 일부를 형성할 수 있다. 예시적인 실시예에서, 비디오 인코딩을 위한 컴퓨팅 노드(102)는 비디오를 캡처하고, 비디오를 인코딩하고, 인코딩된 비디오를 비디오 디코딩을 위해 컴퓨팅 노드(102)로 전송한다. 비디오 인코딩을 위한 컴퓨팅 노드(102)는 참조 이미지를 사용하여 비디오를 압축한다. 인코딩에 필요한 메모리를 줄이기 위해, 비디오를 인코딩하기 위한 컴퓨팅 노드(102)는 예컨대, 비압축 참조 이미지의 메모리의 절반을 사용하도록 참조 이미지를 압축함으로써 손실 압축 형식으로 참조 이미지를 저장한다. 디코딩 끝에서, 비디오를 디코딩하는 컴퓨팅 노드(102)는 또한 메모리 사용량을 절약할 뿐만 아니라 참조 이미지의 변경으로 인한 임의의 드리프트를 방지하도록, 동일한 손실 압축 포맷으로 참조 이미지를 저장한다.
대안적인 실시예에서, 비디오를 인코딩하기 위한 컴퓨팅 노드(102)는 후속 이미지들을 인코딩하는데 사용되는 비압축(또는 무손실 압축) 참조 이미지를 저장할 수 있다. 그러나, 비디오를 디코딩하기 위한 컴퓨팅 노드(102)는 손실 압축된 버전의 참조 이미지를 저장할 수 있으며, 이는 비압축 참조 이미지에 기초하여 인코딩된 후속 이미지를 재구성하는 데 사용된다. 비디오를 디코딩하기 위한 컴퓨팅 노드(102)가 후속 이미지를 재구성하는데 손실 압축된 비디오를 사용함으로 인해 오류를 발생시킬 수 있지만, 필요한 디코더 메모리의 감소는 오류를 능가하는 이점을 제공할 수 있다.
추가 예들에서, 본 에지 컴퓨팅 시스템 및 환경을 참조하여 논의된 컴퓨팅 노드들 또는 장치들 중 임의의 것이 도 2 및 도 3에 도시된 컴포넌트들에 기초하여 충족될 수 있다. 각 에지 컴퓨팅 노드는 다른 에지, 네트워킹 또는 엔드포인트 컴포넌트와 통신할 수 있는 장치, 기기, 컴퓨터 또는 기타 "사물"의 유형으로 구현될 수 있다. 예를 들어, 에지 컴퓨팅 장치는 개인용 컴퓨터, 서버, 스마트폰, 모바일 컴퓨팅 장치, 스마트 기기, 차량 내 컴퓨팅 시스템(예컨대, 내비게이션 시스템), 외부 케이스, 쉘 등을 가진 독립 장치, 또는 설명된 기능을 수행할 수 있는 기타 장치 또는 시스템으로서 구현될 수 있다.
도 2에 도시된 단순화된 예에서, 에지 컴퓨팅 노드는 컴퓨팅 엔진(본 명세서에서 "컴퓨팅 회로"로도 지칭됨)(202), 입력/출력(I/O) 서브시스템(208), 데이터 저장소(210), 통신 회로 서브시스템(212), 및 선택에 따라서는, 카메라(214) 및/또는 하나 이상의 주변 장치(216)를 포함할 수 있다. 다른 예에서, 각각의 컴퓨팅 장치는 컴퓨터에서 일반적으로 발견되는 것과 같은 다른 또는 추가 컴포넌트(예를 들어, 디스플레이, 주변 장치 등)를 포함할 수 있다. 추가로, 일부 예에서, 예시적인 컴포넌트 중 하나 이상은 다른 컴포넌트에 통합되거나 그렇지 않으면 다른 컴포넌트의 일부를 형성할 수 있다.
컴퓨팅 노드(102)는 다양한 컴퓨팅 기능을 수행할 수 있는 임의의 유형의 엔진, 장치, 또는 장치의 집합으로서 구현될 수 있다. 일부 예에서, 컴퓨팅 노드(102)는 집적 회로, 임베디드 시스템, FPGA(field-programmable gate array), SOC(system-on-a-chip), 또는 다른 통합 시스템 또는 장치와 같은 단일 장치로서 구현될 수 있다. 예시적인 예에서, 컴퓨팅 노드(102)는 프로세서(204) 및 메모리(206)를 포함하거나 이로서 구현된다. 프로세서(204)는 본 명세서에서 설명된 기능을 수행(예를 들어, 애플리케이션을 실행)할 수 있는 임의의 유형의 프로세서로서 구현될 수 있다. 예를 들어, 프로세서(204)는 멀티-코어 프로세서(들), 마이크로제어기, 또는 다른 프로세서 또는 프로세싱/제어 회로로서 구현될 수 있다.
일부 예들에서, 프로세서(204)는 FPGA, ASIC(application specific integrated circuit), 재구성 가능 하드웨어 또는 하드웨어 회로, 또는 본 명세서에서 설명된 기능의 수행을 용이하게 하기 위한 다른 특수 하드웨어로서 구현될 수 있거나, 이들을 포함할 수도 있고, 이들에 연결될 수도 있다. 또한 일부 예에서, 프로세서(204)는, 데이터 프로세싱 유닛(DPU), 인프라스트럭쳐 프로세싱 유닛(IPU), 또는 네트워크 프로세싱 유닛(NPU)이라고도 알려진 특수 xPU(x-processing unit)으로서 구현될 수 있다. 이러한 xPU는 독립형 회로 또는 회로 패키지로서 구현될 수도 있고, SOC 내에 통합될 수도 있으며, 네트워킹 회로(예를 들어, SmartNIC 또는 향상된 SmartNIC에), 가속 회로, 저장 장치 또는 AI 하드웨어(예를 들어, GPU, 프로그래밍된 FPGA)와 통합될 수도 있다. 이러한 xPU는 하나 이상의 데이터 스트림을 처리하고, CPU 또는 범용 처리 하드웨어의 외부에서 데이터 스트림에 대한 특정 태스크 및 액션(예컨대, 마이크로서비스 호스팅, 서비스 관리 또는 조율의 수행, 서버 또는 데이터 센터 하드웨어의 조직 혹은 관리, 서비스 메시의 관리, 또는 원격 측정(telemetry)의 수집 및 배포 등)을 수행하기 위한 프로그래밍을 수신하도록 설계될 수 있다. 그러나, xPU, SOC, CPU 및 프로세서(704)의 다른 변형예는 서로 협력해서, 컴퓨팅 노드(102) 내에서 그리고 컴퓨팅 노드(102)를 대신해서, 여러 유형의 동작 및 명령어를 실행할 수 있다는 것을 이해할 것이다.
메모리(206)는 본 명세서에서 설명된 기능들을 수행할 수 있는 임의의 유형의 휘발성(예를 들어, DRAM(dynamic random access memory) 등) 또는 비휘발성 메모리 또는 데이터 저장소로서 구현될 수 있다. 휘발성 메모리는 매체에 의해 저장된 데이터의 상태를 유지하기 위해 전력을 요구하는 저장 매체일 수 있다. 휘발성 메모리의 비제한적인 예들은 다양한 유형의 RAM(random access memory), 예컨대 DRAM 또는 SRAM(static random access memory)을 포함할 수 있다. 메모리 모듈에서 사용될 수 있는 하나의 특정 유형의 DRAM은 SDRAM(synchronous dynamic random access memory)이다.
일 예에서, 메모리 장치는 NAND 또는 NOR 기술에 기초한 것과 같은 블록 어드레싱 가능 메모리 장치(block addressable memory device)이다. 메모리 장치는 또한 3차원 크로스포인트 메모리 장치(예를 들어, Intel® 3D XPoint™ 메모리), 또는 다른 바이트 어드레싱 가능 제자리 기입 비휘발성 메모리 장치(byte addressable write-in-place nonvolatile memory device)를 또한 포함할 수 있다. 메모리 장치는 다이 자체 및/또는 패키징된 메모리 제품을 지칭할 수 있다. 일부 예들에서, 3D 크로스포인트 메모리(예를 들어, Intel® 3D XPoint™ 메모리)는, 메모리 셀이 워드 라인과 비트 라인의 교차점에 놓이고 개별적으로 어드레싱 가능하고, 비트 저장이 벌크 저항의 변화에 기초하는 트랜지스터가 없는 적층가능한 크로스 포인트 아키텍처를 포함할 수 있다. 일부 예에서, 메모리(206)의 전부 또는 일부가 프로세서(204)에 통합될 수 있다. 메모리(206)는 작동 중에 사용되는 다양한 소프트웨어 및 데이터, 예컨대, 하나 이상의 애플리케이션, 애플리케이션(들)에 의해 조작되는 데이터, 라이브러리, 및 드라이버를 저장할 수 있다.
컴퓨팅 회로(202)는, 컴퓨팅 회로(202)와의(예를 들어, 프로세서(204) 및/또는 메인 메모리(206)와의) 그리고 컴퓨팅 회로(202)의 다른 컴포넌트와의 입력/출력 동작을 용이하게 하기 위한 회로 및/또는 컴포넌트로서 구현될 수 있는 I/O 서브시스템(208)을 통해 컴퓨팅 노드(102)의 다른 컴포넌트에 통신가능하게 연결된다. 예를 들어, I/O 서브시스템(208)은, 메모리 제어기 허브, 입력/출력 제어 허브, 통합된 센서 허브, 펌웨어 장치, 통신 링크들(예를 들어, 포인트-투-포인트 링크, 버스 링크, 와이어, 케이블, 광 가이드, 인쇄 회로 보드 트레이스들 등), 및/또는 입/출력 동작을 용이하게 하기 위한 다른 컴포넌트 및 서브시스템으로서 구현될 수도 있고 또는 달리 이들을 포함할 수도 있다. 일부 예에서, I/O 서브시스템(208)은 SoC(system-on-a-chip)의 일부를 형성할 수도 있고, 컴퓨팅 회로(202)의 프로세서(204), 메모리(206), 및 다른 컴포넌트 중 하나 이상과 함께, 컴퓨팅 회로(202) 내로 통합될 수 있다.
하나 이상의 예시적인 데이터 저장 장치(210)는, 예를 들어, 메모리 장치 및 회로, 메모리 카드, 하드 디스크 드라이브, 솔리드-스테이트 드라이브, 또는 다른 데이터 저장 장치와 같은, 데이터의 단기간 또는 장기간 저장을 위해 구성된 임의의 유형의 장치로서 구현될 수 있다. 개개의 데이터 저장 장치(210)는 데이터 저장 장치(210)에 대한 데이터 및 펌웨어 코드를 저장하는 시스템 파티션을 포함할 수 있다. 개개의 데이터 저장 장치(210)는, 예를 들어, 컴퓨팅 노드(102)의 유형에 따라 운영 체제에 대한 데이터 파일 및 실행파일을 저장하는 하나 이상의 운영 체제 파티션을 또한 포함할 수 있다.
통신 회로(212)는 컴퓨팅 회로(202)와 다른 컴퓨팅 장치(예를 들어, 실행 에지 컴퓨팅 시스템의 에지 게이트웨이) 사이에 네트워크를 통한 통신을 가능하게 할 수 있는 임의의 통신 회로, 장치, 또는 이들의 집합으로서 구현될 수 있다. 통신 회로(212)는 이러한 통신을 달성하기 위해 임의의 하나 이상의 통신 기술(예를 들어, 유선 또는 무선 통신) 및 연관된 프로토콜(예를 들어, 3GPP 4G 또는 5G 표준과 같은 셀룰러 네트워킹 프로토콜, IEEE 802.11/Wi-Fi® 무선 광대역 네트워크 프로토콜, 이더넷, Bluetooth®, Bluetooth Low Energy, IEEE 802.15.4 또는 ZigBee®와 같은 IoT 프로토콜, LPWAN(low-power wide-area network) 또는 LPWA(low-power wide-area) 프로토콜과 같은 무선 근거리 통신망 프로토콜 등)을 사용하도록 구성될 수 있다.
예시적인 통신 회로(212)는 호스트 패브릭 인터페이스(HFI)라고도 지칭될 수 있는 네트워크 인터페이스 제어기(NIC)(220)를 포함한다. NIC(220)는 다른 컴퓨팅 장치(예를 들어, 에지 게이트웨이 노드)와 접속하기 위해 컴퓨팅 노드(102)에 의해 사용될 수 있는 하나 이상의 애드-인-보드(add-in-board), 도터 카드(daughter card), 네트워크 인터페이스 카드, 제어기 칩, 칩셋, 또는 다른 장치로서 구현될 수 있다. 일부 예에서, NIC(220)는 하나 이상의 프로세서를 또한 포함하는 SoC(system-on-a-chip)의 일부로서 구현되거나, 하나 이상의 프로세서를 또한 포함하는 멀티칩 패키지 상에 포함될 수도 있다. 일부 예에서, NIC(220)는 로컬 프로세서(도시되지 않음) 및/또는 로컬 메모리(도시되지 않음)를 포함할 수 있는데, 이들은 둘 다 NIC(220)에 로컬이다. 이러한 예에서, NIC(220)의 로컬 프로세서는 본 명세서에서 설명된 컴퓨팅 회로(202)의 기능 중 하나 이상을 수행할 수 있다. 추가적으로 또는 대안적으로, 이러한 예에서, NIC(220)의 로컬 메모리는 보드 레벨, 소켓 레벨, 칩 레벨, 및/또는 다른 레벨에서 클라이언트 컴퓨팅 노드의 하나 이상의 컴포넌트에 통합될 수 있다.
예시적인 카메라(214)는 일련의 이미지를 캡처할 수 있는 임의의 적절한 장치로서 구현될 수 있다. 예시적인 실시예에서, 카메라(214)는 이미지 센서 상에 광을 포커싱하는 렌즈를 갖는다. 다른 실시예에서, 애퍼처, 미러, 필터 등과 같은 상이한 이미징 요소가 사용될 수 있다. 이미지 센서는 CMOS(Complementary Metal-Oxide Semiconductor) 센서, CCD(Charged Coupled Device) 센서, 열 센서 등과 같은 임의의 적절한 센서에 기초할 수 있다. 카메라(214)는 640 x 480, 1024 x 768, 1280 x 1024, 1920 x 1080, 3840 x 2160, 7680 x 4320 등과 같은 임의의 적절한 해상도를 가질 수 있다. 카메라(214)는 초당 24 프레임(24 FPS), 30FPS, 60FPS, 120 FPS, 240FPS 등과 같은 임의의 적절한 프레임 속도로 비디오를 캡처할 수 있다. 카메라(214)는 밀리미터파, 적외선, 가시광선, 자외선, x-선 등과 같은 임의의 적절한 컬러 범위에 반응할 수 있다. 카메라(214)는 흑백일 수 있거나 적색, 녹색 및 청색 채널과 같은 2개 이상의 채널을 가질 수 있다.
추가적으로, 일부 예에서, 각각의 컴퓨팅 노드(102)는 하나 이상의 주변 장치(216)를 포함할 수 있다. 그러한 주변 장치들(216)은, 컴퓨팅 노드(102)의 특정 유형에 따라, 컴퓨팅 장치 또는 서버에서 발견되는 임의의 유형의 주변 장치, 예컨대 오디오 입력 장치, 디스플레이, 다른 입력/출력 장치, 인터페이스 장치, 및/또는 다른 주변 장치를 포함할 수 있다. 추가 예에서, 컴퓨팅 노드(102)는 에지 컴퓨팅 시스템 내의 또는 기기, 컴퓨터, 서브시스템, 회로, 또는 다른 컴포넌트의 유사한 형태 내의 각각의 에지 컴퓨팅 노드(클라이언트, 게이트웨이 또는 집성 노드)에 의해 구현될 수 있다.
보다 상세한 예에서, 도 3은 본 명세서에서 설명된 기법(예를 들어, 동작, 프로세스, 방법 및 방법론)을 구현하기 위해 에지 컴퓨팅 노드(350) 내에 존재할 수 있는 컴포넌트의 예의 블록도를 예시한다. 이 에지 컴퓨팅 노드(350)는 컴퓨팅 장치(예를 들어, 모바일 장치, 기지국, 서버, 게이트웨이 등)로서 구현될 때 또는 일부로서 구현될 때 노드(102)의 각각의 컴포넌트에 대한 보다 가까운 뷰를 제공한다. 이 에지 컴퓨팅 노드(350)는 본 명세서에 언급된 하드웨어 또는 로직 컴포넌트의 임의의 조합을 포함할 수 있고, 이는 에지 통신 네트워크 또는 그러한 네트워크의 조합과 함께 사용가능한 임의의 장치를 포함하거나 이와 연결될 수 있다. 컴포넌트는 에지 컴퓨팅 노드(350)에 적응된 IC(집적 회로), 그 일부, 개별 전자 장치, 또는 다른 모듈, 명령어 세트, 프로그래밍 가능 로직 또는 알고리즘, 하드웨어, 하드웨어 가속기, 소프트웨어, 펌웨어, 또는 이들의 조합으로서, 또는 그 외에 더 큰 시스템의 섀시 내에 포함된 컴포넌트로서 구현될 수 있다.
에지 컴퓨팅 노드(350)는 프로세서(352) 형태의 프로세싱 회로를 포함할 수 있고, 이는 마이크로프로세서, 멀티-코어 프로세서, 멀티스레드 프로세서, 초저전압 프로세서, 임베디드 프로세서, xPU/DPU/IPU/NPU, 특수 목적 처리 유닛, 특수 처리 유닛 또는 다른 공지된 프로세싱 요소일 수 있다. 프로세서(352)는 프로세서(352) 및 다른 컴포넌트들이 단일 집적 회로, 또는 단일 패키지, 예컨대 캘리포니아주 산타 클라라의 Intel Corporation으로부터의 Edison™ 또는 Galileo™ SoC 보드 내에 형성되는 SoC(system on a chip)의 일부일 수 있다. 예로서, 프로세서(352)는 Quark™, Atom™, i3, i5, i7, i9, 또는 MCU-클래스 프로세서와 같은, Intel®Architecture Core™ 기반 CPU 프로세서, 또는 Intel®로부터 입수가능한 다른 그러한 프로세서를 포함할 수 있다. 그러나, 예를 들어, 캘리포니아주 서니베일의 AMD®(Advanced Micro Devices, Inc.)로부터 입수가능한 것, 캘리포니아주 서니베일의 MIPS Technologies, Inc.로부터의 MIPS®-기반 설계, ARM Holdings, Ltd. 또는 그의 고객, 또는 그들의 면허권자들 또는 사용권자로부터 라이센싱된 ARM®-기반 설계와 같은, 임의의 수의 다른 프로세서가 사용될 수 있다. 프로세서들은 Apple®Inc.로부터의 A5-A13 프로세서, Qualcomm®Technologies, Inc.로부터의 Snapdragon™ 프로세서 또는 Texas Instruments, Inc.로부터의 OMAP™ 프로세서와 같은 유닛들을 포함할 수 있다. 프로세서(352) 및 수반되는 회로가 단일 소켓 폼 팩터, 다중 소켓 폼 팩터, 또는 도 3에 도시된 모든 요소보다 적은 수를 포함하는 구성 또는 제한된 하드웨어 구성을 포함하는 다양한 기타 형식으로 제공될 수 있다.
프로세서(352)는 인터커넥트(356)(예를 들어, 버스)를 통해 시스템 메모리(354)와 통신할 수 있다. 주어진 양의 시스템 메모리를 제공하기 위해 임의의 수의 메모리 장치를 사용할 수 있다. 예로서, 메모리(354)는 DDR 또는 모바일 DDR 표준(예를 들어, LPDDR, LPDDR2, LPDDR3, 또는 LPDDR4)과 같은 JEDEC(Joint Electron Devices Engineering Council) 설계에 따른 랜덤 액세스 메모리(RAM)일 수 있다. 특정 예에서, 메모리 컴포넌트는 DDR SDRAM을 위한 JESD79F, DDR2 SDRAM을 위한 JESD79-2F, DDR3 SDRAM을 위한 JESD79-3F, DDR4 SDRAM을 위한 JESD79-4A, 저전력 DDR(LPDDR)용 JESD209, LPDDR2용 JESD209-2, LPDDR3용 JESD209-3, LPDDR4용 JESD209-4와 같이 JEDEC에 의해 공표된 DRAM 표준을 준수할 수 있다. 이러한 표준(및 유사한 표준)은 DDR 기반 표준으로 지칭될 수 있고 이러한 표준을 구현하는 저장 장치의 통신 인터페이스는 DDR 기반 인터페이스로 지칭될 수 있다. 다양한 구현에서, 개별 메모리 장치는 단일 다이 패키지(SDP), 듀얼 다이 패키지(DDP), 또는 쿼드 다이 패키지(Q17P)와 같은 임의의 수의 상이한 패키지 유형일 수 있다. 이러한 장치는 일부 예에서 마더보드에 직접 납땜되어 더 낮은 프로파일 솔루션을 제공할 수 있는 반면, 다른 예에서 장치는 주어진 커넥터에 의해 마더보드에 차례로 연결되는 하나 이상의 메모리 모듈로 구성된다. 다른 유형의 메모리 모듈, 예를 들어 microDIMM 또는 MiniDIMM을 포함하지만 이에 국한되지 않는 다양한 종류의 듀얼 인라인 메모리 모듈(DIMM)과 같은 임의의 수의 다른 메모리 구현이 사용될 수 있다.
데이터, 애플리케이션, 운영 체제 등과 같은 정보의 영구적 저장을 제공하기 위해, 저장소(358)가 인터커넥트(356)를 통해 프로세서(352)에 연결될 수도 있다. 예에서, 저장소(358)는 SSDD(solid-state disk drive)를 통해 구현될 수 있다. 저장소(358)에 사용될 수 있는 다른 장치들은 SD(Secure Digital) 카드, microSD 카드, XD(eXtreme Digital) 픽처 카드들 등과 같은 플래시 메모리 카드, 및 USB(Universal Serial Bus) 플래시 드라이브를 포함한다. 예에서, 메모리 장치는 칼코게나이드 유리를 사용하는 메모리 장치, 다중-문턱 레벨(multi-threshold level) NAND 플래시 메모리, NOR 플래시 메모리, 단일 또는 다중-레벨 PCM(Phase Change Memory), 저항성 메모리, 나노와이어 메모리, FeTRAM(ferroelectric transistor random access memory), 반강유전성 메모리(anti-ferroelectric memory), 멤리스터 기술을 포함하는 MRAM(magneto-resistive random access memory) 메모리, 금속 산화물 기반, 산소 공공(oxygen vacancy) 기반 및 CB-RAM(conductive bridge Random Access Memory)을 포함하는 저항성 메모리, 또는 스핀 전달 토크(STT)-MRAM, 스핀트로닉 자기 접합 메모리 기반 장치, MTJ(magnetic tunneling junction) 기반 장치, DW(Domain Wall) 및 SOT(Spin Orbit Transfer) 기반 장치, 사이리스터 기반 메모리 장치, 또는 상기한 것들 중 임의의 것의 조합, 또는 다른 메모리일 수 있거나 이를 포함할 수 있다.
저전력 구현에서, 저장소(358)는 프로세서(352)와 연관된 온-다이 메모리 또는 레지스터일 수 있다. 그러나, 일부 예에서, 저장소(358)는 마이크로 하드 디스크 드라이브(HDD)를 이용하여 구현될 수 있다. 또한, 설명된 기술에 더하여, 또는 그 대신에, 많은 것들 중에서도 특히, 저항 변화 메모리, 상 변화 메모리, 홀로그래픽 메모리, 또는 화학 메모리와 같은, 임의의 수의 새로운 기술이 저장소(358)에 사용될 수 있다.
컴포넌트는 인터커넥트(356)를 통해 통신할 수 있다. 인터커넥트(356)는 ISA(industry standard architecture), EISA(extended ISA), PCI(peripheral component interconnect), PCIx(peripheral component interconnect extended), PCIe(PCI express)를 포함하는 임의의 수의 기술들, 또는 임의의 수의 다른 기술들을 포함할 수 있다. 인터커넥트(356)는, 예를 들어, SoC 기반 시스템에서 사용되는 사유 버스(proprietary bus)일 수 있다. 많은 것들 중에서도 특히, I2C(Inter-Integrated Circuit) 인터페이스, SPI(Serial Peripheral Interface) 인터페이스, 포인트 투 포인트 인터페이스, 및 전력 버스와 같은, 다른 버스 시스템이 포함될 수 있다.
인터커넥트(356)는, 접속된 에지 장치(362)와의 통신을 위해, 프로세서(352)를 트랜시버(366)에 연결할 수 있다. 트랜시버(366)는, 많은 것들 중에서도 특히, Bluetooth® Special Interest Group에 의해 정의된 바와 같은 BLE(Bluetooth® low energy) 표준, 또는 ZigBee® 표준을 이용해서, IEEE 802.15.4 표준 하에서 2.4 기가헤르츠(GHz) 송신과 같은 임의의 수의 주파수 및 프로토콜을 사용할 수 있다. 특정 무선 통신 프로토콜을 위해 구성된 임의의 수의 무선기들이 연결된 에지 장치(362)로의 연결을 위해 사용될 수 있다. 예를 들어, 무선 로컬 영역 네트워크(WLAN) 유닛은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따라 Wi-Fi® 통신을 구현하기 위해 사용될 수 있다. 또한, 예를 들어, 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신이 무선 광역 네트워크(WWAN) 유닛을 통해 발생할 수 있다.
무선 네트워크 트랜시버(366)(또는 다수의 트랜시버)는 상이한 거리에서의 통신을 위해 다수의 표준 또는 무선기를 이용하여 통신할 수 있다. 예를 들어, 에지 컴퓨팅 노드(350)는, BLE(Bluetooth Low Energy)에 기초한 로컬 트랜시버, 또는 다른 저전력 무선기를 이용하여, 예를 들어, 약 10 미터 내의 가까운 장치들과 통신하여, 전력을 절약할 수 있다. 예를 들어, 약 50 미터 내의, 더 멀리 있는 연결된 에지 장치(362)은 ZigBee® 또는 다른 중간 전력 무선기들을 통해 도달될 수 있다. 양쪽 통신 기법들은 상이한 전력 레벨들에서 단일 무선기를 통해 발생할 수 있거나, 별개의 트랜시버들을 통해, 예를 들어, BLE를 사용하는 로컬 트랜시버 및 ZigBee®를 사용하는 별개의 메시 트랜시버를 통해 발생할 수 있다.
로컬 또는 광역 네트워크 프로토콜을 통해 클라우드(예컨대, 에지 클라우드(395)) 내의 장치 또는 서비스과 통신하기 위해 무선 네트워크 트랜시버(366)(예를 들어, 무선 트랜시버)가 포함될 수 있다. 무선 네트워크 트랜시버(366)는, 많은 것들 중에서도 특히, IEEE 802.15.4, 또는 IEEE 802.15.4g 표준들을 따르는 LPWA(low-power wide-area) 트랜시버일 수 있다. 에지 컴퓨팅 노드(350)는 Semtech 및 LoRa Alliance에 의해 개발된 LoRaWAN™(Range Wide Area Network)을 이용하여 광역에 걸쳐 통신할 수 있다. 본 명세서에서 설명된 기법들은 이들 기술로 제한되지 않고, 장거리, 낮은 대역폭 통신, 예컨대 Sigfox, 및 다른 기술들을 구현하는 임의의 수의 다른 클라우드 트랜시버들과 함께 사용될 수 있다. 또한, IEEE 802.15.4e 사양에 기술된 시간 슬롯 채널 호핑과 같은 다른 통신 기법들이 사용될 수 있다.
본 명세서에서 설명된 바와 같이, 무선 네트워크 트랜시버(366)에 대해 언급된 시스템에 더하여 임의의 수의 다른 무선 통신 및 프로토콜이 사용될 수 있다. 예를 들어, 트랜시버(366)는 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 사용하는 셀룰러 트랜시버를 포함할 수 있다. 또한, 네트워크 통신의 제공 및 중속 통신을 위해 Wi-Fi®네트워크와 같은 임의의 수의 다른 프로토콜이 사용될 수 있다. 트랜시버(266)는 본 개시내용의 마지막에 추가로 상세하게 논의된, 임의의 수의 3GPP(Third Generation Partnership Project) 사양, 예컨대 LTE(Long Term Evolution) 및 5세대(5G) 통신 시스템과 호환가능한 무선기를 포함할 수 있다. 유선 통신을 에지 클라우드(395)의 노드에 또는 접속된 에지 장치(362)(예를 들어, 메시에서 동작함)과 같은 다른 장치들에 제공하기 위해 네트워크 인터페이스 제어기(NIC)(368)가 포함될 수 있다. 유선 통신은 이더넷 연결을 제공할 수 있거나, 많은 것들 중에서도 특히, CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS, 또는 PROFINET와 같은 다른 유형의 네트워크에 기초할 수 있다. 제2 네트워크로의 연결을 가능하게 하기 위해 추가 NIC(268)가 제공될 수 있는데, 예를 들어, 제1 NIC(368)는 이더넷을 통해 클라우드로의 통신을 제공하고, 제2 NIC(368)는 다른 유형의 네트워크를 통해 다른 장치들로의 통신을 제공할 수 있다.
장치로부터 다른 컴포넌트 또는 네트워크로의 다양한 유형의 적용가능한 통신이 주어지면, 장치에 의해 사용되는 적용가능한 통신 회로는 컴포넌트(364, 366, 368, 또는 370) 중 어느 하나 이상에 의해 구현되거나 이를 포함할 수 있다. 따라서, 다양한 예에서, 통신(예를 들어, 수신, 송신 등)을 위한 적용가능한 수단은 그러한 통신 회로에 의해 구현될 수 있다.
에지 컴퓨팅 노드(350)는, 하나 이상의 AI(artificial intelligence) 가속기, 뉴럴 컴퓨팅 스틱(neural compute stick), 뉴로모픽 하드웨어(neuromorphic hardware), FPGA, GPU의 배열, xPUs/DPUs/IPU/NPUs의 배열, 하나 이상의 SoC, 하나 이상의 CPU, 하나 이상의 디지털 신호 프로세서, 전용 ASIC, 또는 하나 이상의 특수 작업을 달성하도록 설계된 다른 형식의 특수 프로세서 또는 회로에 의해 구현될 수 있는 가속 회로(264)에 결합되거나 이를 포함할 수 있다. 이들 작업은 AI 프로세싱(머신 학습, 훈련, 추론, 및 분류 동작을 포함함), 시각 데이터 프로세싱, 네트워크 데이터 프로세싱, 객체 검출, 규칙 분석 등을 포함할 수 있다. 이들 작업은 또한 본 명세서의 다른 곳에서 설명된 서비스 관리 및 서비스 운영을 위한 특정 에지 컴퓨팅 작업을 포함할 수 있다.
인터커넥트(356)는 추가 장치 또는 서브시스템을 접속하는데 사용되는 센서 허브 또는 외부 인터페이스(370)에 프로세서(352)를 연결할 수 있다. 장치는 가속도계, 레벨 센서, 흐름 센서, 광학 광 센서, 카메라 센서, 온도 센서, GPS(global positioning system) 센서, 압력 센서, 기압 센서 등과 같은 센서(372)를 포함할 수 있다. 허브 또는 인터페이스(370)는 추가로 에지 컴퓨팅 노드(350)를 전력 스위치, 밸브 액추에이터, 가청 사운드 생성기, 시각적 경고 장치 등과 같은 액추에이터(374)에 접속하는데 사용될 수 있다.
일부 옵션의 예에서, 다양한 입력/출력(I/O) 장치가 에지 컴퓨팅 노드(350) 내에 존재하거나 그에 접속될 수 있다. 예를 들어, 센서 판독 또는 액추에이터 위치와 같은 정보를 보여주기 위해 디스플레이 또는 다른 출력 장치(384)가 포함될 수 있다. 입력을 수용하기 위해 터치 스크린 또는 키패드와 같은 입력 장치(386)가 포함될 수 있다. 출력 장치(384)는, 이진 상태 지시기(예를 들어, LED(light-emitting diode)) 및 다중 문자 시각적 출력과 같은 단순한 시각적 출력, 또는 디스플레이 스크린(예를 들어, LCD 스크린)과 같은 더 복잡한 출력을 포함하는 임의의 수의 형식의 오디오 또는 시각적 디스플레이를 포함할 수 있고, 문자, 그래픽, 멀티미디어 객체 등의 출력이 에지 컴퓨팅 노드(350)의 동작으로부터 발생되거나 생성된다. 본 시스템의 측면에서 디스플레이 또는 콘솔 하드웨어는 출력을 제공하고 에지 컴퓨팅 시스템의 입력을 수신하며, 에지 컴퓨팅 시스템의 컴포넌트 또는 서비스를 관리하고, 에지 컴퓨팅 컴포넌트 또는 서비스의 상태를 식별하거나, 기타 여러 유지 보수 또는 관리 기능 또는 서비스 용례를 수행하는데 사용될 수 있다.
배터리(376)는 에지 컴퓨팅 노드(350)에 전력을 공급할 수 있지만, 에지 컴퓨팅 노드(350)가 고정된 위치에 장착되는 예에서, 이는 전력망에 연결된 전원을 가질 수도 있고, 또는 백업이나 일시적인 역량을 위해서 배터리가 사용될 수도 있다. 배터리(376)는 리튬 이온 배터리, 또는 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리와 같은 금속-공기 배터리 등일 수 있다.
배터리(376)(포함되는 경우)의 충전 상태(SoCh)를 추적하기 위해 에지 컴퓨팅 노드(350)에 배터리 모니터/충전기(378)가 포함될 수 있다. 배터리 모니터/충전기(378)는 배터리(376)의 헬쓰 상태(state of health)(SoH) 및 기능 상태(SoF)와 같은 고장 예측을 제공하기 위해 배터리(376)의 다른 파라미터를 모니터링하기 위해 사용될 수 있다. 배터리 모니터/충전기(378)는 Linear Technologies로부터의 LTC4020 또는 LTC2990과 같은 배터리 모니터링 집적 회로, 아리조나주 피닉스의 ON Semiconductor로부터의 ADT7488A, 또는 텍사스주 달라스의 Texas Instruments로부터의 UCD90xxx 패밀리로부터의 IC를 포함할 수 있다. 배터리 모니터/충전기(378)는 배터리(376)에 관한 정보를 인터커넥트(356)를 통해 프로세서(352)에 전달할 수 있다. 배터리 모니터/충전기(378)는 프로세서(352)가 배터리(376)의 전압 또는 배터리(376)로부터의 전류 흐름을 직접 모니터링하는 것을 가능하게 하는 아날로그-디지털(ADC) 컨버터를 또한 포함할 수 있다. 배터리 파라미터는 송신 주파수, 메시 네트워크 동작, 감지 주파수 등과 같은, 에지 컴퓨팅 노드(350)가 수행할 수 있는 액션을 결정하기 위해 사용될 수 있다.
전력망에 연결된 전력 블록(380), 또는 다른 전원이 배터리(376)를 충전하기 위해 배터리 모니터/충전기(378)에 연결될 수 있다. 일부 예에서, 전력 블록(380)은 무선 전력 수신기로 대체되어, 예를 들어, 에지 컴퓨팅 노드(350) 내의 루프 안테나를 통해 무선으로 전력을 획득할 수 있다. 많은 것들 중에서도 특히, 캘리포니아주 밀피타스의 Linear Technologies로부터의 LTC4020 칩과 같은 무선 배터리 충전 회로가 배터리 모니터/충전기(378)에 포함될 수 있다. 특정 충전 회로는 배터리(376)의 크기, 및 따라서 요구되는 전류에 기초하여 선택될 수 있다. 충전은, 많은 것들 중에서도 특히, Airfuel Alliance에 의해 공포된 Airfuel 표준, Wireless Power Consortium에 의해 공포된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 공포된 Rezence 충전 표준을 이용하여 수행될 수 있다.
저장소(358)는 본 명세서에서 설명된 기법을 구현하기 위한 소프트웨어, 펌웨어 또는 하드웨어 커맨드의 형식으로 된 명령어(382)를 포함할 수 있다. 그러한 명령어(382)가 메모리(354) 및 저장소(358)에 포함된 코드 블록으로서 도시되어 있지만, 코드 블록 중 임의의 것이, 예를 들어, ASIC(application specific integrated circuit)에 내장된 하드와이어드 회로로 대체될 수 있다는 것을 이해할 수 있다.
일 예에서, 메모리(354), 저장소(358), 또는 프로세서(352)를 통해 제공되는 명령어(382)는 에지 컴퓨팅 노드(350) 내의 전자 동작을 수행하도록 프로세서(352)에게 지시하는 코드를 포함하는 비일시적 머신 판독가능 매체(360)로서 구현될 수 있다. 프로세서(352)는 인터커넥트(356)를 통해 비일시적 머신 판독가능 매체(360)에 액세스할 수 있다. 예를 들어, 비일시적 머신 판독가능 매체(360)는 저장소(358)에 대해 설명된 장치에 의해 구현될 수도 있고, 광학 디스크, 플래시 드라이브, 또는 임의의 수의 다른 하드웨어 장치와 같은 특정 저장 유닛을 포함할 수 있다. 비일시적 머신 판독가능 매체(360)는, 예를 들어, 앞서 설명된 동작 및 기능성의 흐름도(들) 및 블록도(들)에 관하여 설명된 바와 같이, 액션의 특정 시퀀스 또는 흐름을 수행하도록 프로세서(352)에게 지시하는 명령어를 포함할 수 있다. 본 명세서에서 사용되는, 용어 "머신 판독가능 매체"와 "컴퓨터 판독가능 매체"는 바꿔서 사용될 수 있다.
또한 특정 예에서, 프로세서(352) 상의 명령어(382)(개별적으로, 또는 머신-판독가능 매체(360)의 명령어(382)와 조합하여)는 TEE(trusted execution environment)(390)의 실행 또는 동작을 구성할 수 있다. 예를 들어, TEE(390)는 명령의 보안 실행 및 데이터에 대한 보안 액세스를 위해 프로세서(352)에 액세스할 수 있는 보호 영역으로 작동한다. TEE(390)의 다양한 구현 및 프로세서(352) 또는 메모리(354)의 수반되는 보안 영역은 예를 들어 Intel® SGX(Software Guard Extensions) 또는 ARM® TrustZone® 하드웨어 보안 확장, Intel® ME(Management Engine) 또는 인텔® CSME(Converged Security Manageability Engine)을 사용해서 제공될 수 있다. 보안 강화, 하드웨어 신뢰 기반, 신뢰 또는 보호되는 동작의 다른 측면은 TEE(390) 및 프로세서(352)를 통해 장치(350)에서 구현될 수 있다.
이제 도 4를 참조하면, 예시적인 실시예에서, 컴퓨팅 노드(102)는 동작 동안 환경(400)을 설정한다. 예시적인 환경(400)은 비디오 인코더(402), 비디오 디코더(404), 및 비디오 추론(406)을 포함한다. 일부 실시예에서, 컴퓨팅 노드(102)는 동일한 비디오를 인코딩 및 디코딩하기 위해 비디오 인코더(402) 및 비디오 디코더(404) 모두를 포함할 수 있다. 대안적으로, 다른 실시예에서, 컴퓨팅 노드(102)는 비디오 디코더(404) 없이 비디오 인코더(402)를 포함할 수 있거나, 컴퓨팅 노드(402)는 비디오 인코더(402) 없이 비디오 디코더(404)를 포함할 수 있다.
환경(400)의 다양한 모듈은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있다. 예를 들어, 환경(400)의 다양한 모듈, 로직, 및 기타 컴포넌트는 메모리(206), 데이터 저장소(210)와 같은 컴퓨팅 노드(102)의 다른 하드웨어 컴포넌트 또는 프로세서(204)의 일부를 형성하거나 그렇지 않으면 그에 의해 설정될 수 있다. 이와 같이, 일부 실시예에서, 환경(400)의 하나 이상의 모듈은 전기 장치(예를 들어, 비디오 인코더 회로(402), 비디오 디코더 회로(404), 비디오 추론(406) 등)의 집합 또는 회로로서 구현될 수 있다. 일부 실시예에서, 환경(400)의 모듈의 일부 또는 전부는, 예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit), 가속기 장치 등으로서 구현될 수 있다. 일부 실시예에서, 회로(예를 들어, 비디오 인코더 회로(402), 비디오 디코더 회로(404), 비디오 추론(406) 등) 중 하나 이상은 프로세서(204), 메모리(206), I/O 서브시스템(208), 데이터 저장소(210), 및/또는 컴퓨팅 장치(102)의 다른 컴포넌트 중 하나 이상의 일부를 형성할 수 있다. 예를 들어, 일부 실시예에서, 모듈 중 일부 또는 전부는 프로세서(204)에 의해 실행될 명령어를 저장하는 메모리(206) 및/또는 데이터 저장소(210) 뿐만 아니라 프로세서(204)로서 구현될 수 있다. 또한, 일부 실시예에서, 예시적인 모듈 중 하나 이상은 다른 모듈의 일부를 형성할 수 있고 및/또는 예시적인 것 중 하나 이상은 서로 독립적일 수 있다. 또한, 일부 실시예에서, 환경(400)의 모듈 중 하나 이상은 가상화된 하드웨어 컴포넌트 또는 에뮬레이트된 아키텍처로서 구현될 수 있으며, 이는 프로세서(204) 또는 컴퓨팅 장치(102)의 다른 컴포넌트에 의해 설정 및 유지될 수 있다. 환경(400)의 하나 이상의 모듈의 기능 중 일부는 하드웨어 구현을 요구할 수 있으며, 이 경우 그러한 기능을 구현하는 모듈의 실시예는 하드웨어로서 적어도 부분적으로 구현될 것이다.
위에서 논의된 바와 같이 하드웨어, 펌웨어, 소프트웨어, 가상화된 하드웨어, 에뮬레이트된 아키텍처, 및/또는 이들의 조합으로서 구현될 수 있는 비디오 인코더(402)는 비디오를 인코딩하도록 구성된다. 비디오 인코더(402)는 카메라(214)와 같은 컴퓨팅 노드(102)에 의해 캡처된 비디오를 인코딩할 수 있고/있거나 비디오 인코더(402)는 다른 장치, 예컨대 카메라(214)를 구비한 다른 컴퓨팅 노드(102)로부터 컴퓨팅 노드(102)로 전송되는 비디오를 인코딩할 수 있다.
예시적인 비디오 인코더(402)는 참조 이미지를 사용하여 비디오를 인코딩하도록 구성된다. 비디오 인코더(402)에 의해 이미지가 수신됨에 따라, 특정 이미지가 참조 이미지로 선택된다. 참조 이미지는, 새로운 이미지가 이전 이미지와 얼마나 다른지, 마지막 참조 이미지 이후에 몇 개의 이미지가 있는지, 인코딩된 이미지의 품질 등과 같은 다양한 요인에 따라 선택될 수 있다. 새로운 이미지가 가장 최근 이미지, 가장 최근 참조 이미지 및/또는 다른 참조 이미지와 크게 다른 경우, 그것이 참조 이미지로 선택될 수 있다. 본 명세서에서 사용되는 바와 같이, 이미지는 전체 프레임, 또는 슬라이스 또는 매크로블록과 같은 프레임의 임의의 부분을 참조할 수 있다. 비디오 인코더(402)가 비디오를 원격 컴퓨팅 노드(102)로 전송하고 있다면, 비디오 인코더(402)는 참조 이미지를 원격 컴퓨팅 노드(102)로 전송한다.
예시적인 실시예에서, 참조 이미지는 손실 압축되어 메모리에 저장된다. 참조 이미지는 이산 코사인 변환, 프랙탈 압축, 크로마 서브샘플링 등에 기반한 압축 알고리즘과 같은 임의의 적절한 알고리즘을 사용하여 압축될 수 있다. 참조 이미지는 비압축 참조 이미지 크기의 0.05-0.9배와 같이, 비압축 참조 이미지에 대한 임의의 적절한 압축 비율로 압축될 수 있다. 예시적인 실시예에서, 비디오 인코더(402)는 압축 알고리즘이 참조 이미지를 적어도 미리 정의된 양만큼 압축할 것을 요구한다. 다른 실시예에서, 비디오 인코더(402)는 비율이 엄격하게 강제되지 않고 압축 비율에 대한 특정 목표를 설정할 수 있다. 예시적인 실시예에서, 비디오 인코더(402)는 50%의 압축 비율을 시행한다(즉, 참조 이미지 크기를 2배만큼 감소시킨다). 비디오 인코더(402)는 비디오 디코더(404)가 비디오를 디코딩하는데 사용할 수 있는 비디오 스트림에서 사용되는 압축 알고리즘 또는 압축 비율의 표시를 포함할 수 있다. 대안적으로, 일부 실시예에서, 압축 알고리즘 및/또는 압축 비율은 미리 결정될 수 있고 비디오 디코더(404)에 별도로 통신될 필요가 없다.
예를 들어, 1080p 비디오 피드는 1920 x 1080 픽셀의 압축되지 않은 크기를 갖는 참조 이미지 또는 참조 프레임을 가질 수 있으며, 각 픽셀은 3개의 8비트 값(즉, 24비트 이미지)을 가져, 참조 이미지 또는 프레임의 총 크기는 약 5.9MB이다. 추가 프레임을 인코딩하기 위해, 비디오 인코더(402)는 참조 프레임 및 추가 프레임 모두 총 11.8MB를 동시에 메모리에 저장할 수 있다. 비디오 인코더(402)는 12.8-16.8MB의 비디오를 인코딩하는 데 필요한 총 공간에 대해, 예를 들어 1-5MB의 일부 오버헤드를 가질 수 있다. 그러나, 참조 이미지 또는 프레임 및 인코딩되는 이미지 또는 프레임 각각이 압축되지 않은 전체 프레임 또는 이미지의 50% 이하 크기로 압축되면, 이미지 또는 프레임을 저장하는 데 필요한 메모리가 11.8에서 5.9MB로 감소될 수 있어, 요구되는 총 메모리는 손실 압축 없이 필요한 12.8-16.8MB보다 훨씬 적은 6.9-10.9MB이다.
비디오 인코더(402)가 (참조 이미지인 것으로 결정되지 않은) 새로운 이미지를 수신하면, 비디오 인코더(402)는 그 새로운 이미지를 저장한다. 비디오 인코더(402)는 새로운 이미지를 비압축(또는 무손실 압축) 상태로 저장할 수 있거나, 참조 이미지와 유사한 방식으로 손실 압축 알고리즘을 사용하여 새로운 이미지를 압축할 수 있다. 비디오 인코더(402)는 새로운 이미지를 저장된 참조 이미지와 비교한다. 새 이미지와 참조 이미지 간의 차이가 결정된다. 새로운 이미지는 참조 이미지를 기반으로 인코딩된다. 예시적인 실시예에서, 새로운 이미지는 손실 인코딩 알고리즘을 사용하여 인코딩된다. 대안적으로, 일부 실시예에서, 새로운 이미지는 무손실 인코딩 알고리즘을 사용하여 인코딩될 수 있다. 참조 이미지가 손실 압축 알고리즘을 사용하여 저장됨에 따라, 새로운 이미지는 원본 참조 이미지와 정확하게는 동일하지 않은 참조 이미지를 기반으로 인코딩될 것임을 이해해야 한다. 이와 같이, 그러한 비디오 인코더(402)의 인코딩 품질은, 압축 알고리즘이 얼마나 손실이 많은가에 따라, 참조 이미지를 압축하지 않는(또는 무손실 압축 알고리즘을 사용하는) 비디오 인코더보다 약간 또는 현저히 낮을 수 있다. 그 다음, 인코딩된 이미지는 컴퓨팅 노드(102)에 저장 및/또는 원격 컴퓨팅 노드(102)로 전송될 수 있다.
일부 실시예에서, 비디오 인코더(402)는 하나의 비디오 스트림에 대해 둘 이상의 참조 이미지 또는 참조 프레임을 저장할 수 있다. 예를 들어, 일 실시예에서, 비디오 인코더(402)는 하나의 비디오 스트림에 대해 최대 16개의 참조 이미지 또는 참조 프레임을 저장할 수 있다. 추가적으로 또는 대안적으로, 비디오 인코더(402)는 둘 이상의 비디오 스트림을 동시에 인코딩할 수 있고, 이들 각각은 최대 16개의 참조 이미지 또는 참조 프레임을 가질 수 있다. 이와 같이, 예시적인 실시예에서, 참조 이미지를 압축하는 것은 비디오 인코더(402)에 의해 요구되는 메모리의 양을 크게 감소시킬 수 있다는 것을 이해해야 한다.
비디오 인코더(402)가 참조 이미지를 손실 압축하는 것으로 예시적인 실시예에서 설명되지만, 일부 실시예에서, 비디오 인코더(402)는 참조 이미지를 압축하거나 무손실 압축하지 않고 참조 이미지를 저장할 수 있다. 이러한 실시예는 메모리 저장 요건을 감소시키지 않을 수 있지만, 아래에서 더 상세히 논의되는 바와 같이 손실 압축 알고리즘을 사용하여 참조 이미지를 저장하는 비디오 디코더(404)와 여전히 호환될 수 있다.
일부 실시예에서, 비디오 인코더(402)는 비디오 인코딩 회로, 압축/압축해제 회로 등과 같은 개별 컴포넌트로서 구현될 수 있다. 이러한 실시예에서, 비디오 인코딩 회로는 손실 압축 알고리즘이 참조 이미지에 적용되고 있음을 인지하지 못할 수 있다. 예를 들어, 비디오 인코딩 회로는 참조 이미지를 식별하고 그것을 저장을 위해 메모리에 전달할 수 있을 뿐만 아니라 원격 컴퓨팅 노드(102)에 전송할 수 있다. 압축/압축 해제 회로는 비디오 인코딩 회로와 메모리 사이에 있을 수 있고 참조 이미지가 메모리로 전달될 때 인라인으로 참조 이미지를 손실 압축할 수 있다. 비디오 인코딩 회로가 새로운 이미지를 인코딩하기 위해 나중에 참조 이미지를 요청할 때, 압축/압축 해제 회로는 참조 이미지를 비디오 인코딩 회로에 보내기 전에 메모리에서 참조 이미지를 검색하고 그것을 인라인으로 압축을 해제할 수 있다. 비디오 인코딩 회로가 메모리에 저장한 참조 이미지는 비디오 인코딩 회로가 메모리에서 검색한 참조 이미지와 동일하지 않지만, 비디오 인코딩 회로는 그 변경을 인식할 필요가 없다. 이와 같이, 참조 이미지를 손실 압축 이미지로 저장하는 특징을 포함하지 않는 실시예는 비디오 인코딩 회로에 대한 임의의 변경 없이 압축/압축 해제 회로를 도입함으로써 그 특징을 통합할 수 있다.
위에서 논의된 바와 같이 하드웨어, 펌웨어, 소프트웨어, 가상화된 하드웨어, 에뮬레이트된 아키텍처, 및/또는 이들의 조합으로서 구현될 수 있는 비디오 디코더(404)는 비디오를 디코딩하도록 구성된다. 비디오 디코더(404)는 로컬 저장소, 로컬 비디오 인코더(402), 또는 원격 컴퓨팅 노드(102) 상의 원격 비디오 인코더(402)로부터 수신된 비디오와 같은 임의의 적절한 소스로부터의 비디오를 디코딩할 수 있다. 비디오 디코더(404)는 입력 이미지를 수신하며, 그 중 일부는 소스에 의해(예를 들어, 비디오 인코더(402)에 의해) 참조 이미지로 표시된다. 예시적인 실시예에서, 참조 이미지는 비압축 또는 무손실 압축 이미지로서 수신된다.
예시적인 실시예에서, 수신된 참조 이미지는 손실 압축되어 메모리에 저장된다. 참조 이미지는 비디오 인코더(402)와 관련하여 위에서 설명된 임의의 압축 알고리즘과 같은 임의의 적절한 알고리즘을 사용하여 압축될 수 있다. 예시적인 실시예에서, 참조 이미지는 비디오 인코더(402)와 동일한 알고리즘을 사용하여 압축되고, 결과적으로 동일한 참조 이미지가 비디오 인코더(402)에 의해 사용되는 바와 같이 비디오 디코더(404)에 의해 사용된다. 비참조 이미지에 인코딩된 차이는 손실 압축 후 참조 이미지에 관한 것이므로, 동일한 손실 압축 후 참조 이미지를 사용하여 비참조 이미지를 디코딩하는 것은 참조 이미지의 손실 압축으로 인한 오류 또는 아티팩트를 줄일 수 있다.
비디오 디코더(404)가 새로운 인코딩된 이미지(참조 이미지가 아님)를 수신하면, 비디오 디코더(404)는 저장된 참조 이미지를 사용하여 새로운 이미지를 디코딩한다. 그렇게 하기 위해, 비디오 디코더(404)는 컴퓨팅 노드(102)에 저장된 손실 압축된 참조 이미지를 압축 해제할 수 있다. 그런 다음 디코딩된 이미지는 사용자에게 디스플레이되는 것, 비디오 분석 컴포넌트(예컨대, 비디오 추론(406))에 전송되는 것 등과 임의의 적절한 목적을 위해 사용될 수 있다.
일부 실시예에서, 비디오 디코더(404)는 하나의 비디오 스트림에 대해 둘 이상의 참조 이미지 또는 참조 프레임을 저장할 수 있다. 예를 들어, 일 실시예에서, 비디오 디코더(404)는 하나의 비디오 스트림에 대해 최대 16개의 참조 이미지 또는 참조 프레임을 저장할 수 있다. 추가적으로 또는 대안적으로, 비디오 디코더(404)는 둘 이상의 비디오 스트림을 동시에 디코딩할 수 있고, 이들 각각은 최대 16개의 참조 이미지 또는 참조 프레임을 가질 수 있다. 이와 같이, 예시적인 실시예에서, 참조 이미지를 압축하는 것은 비디오 디코더(404)에 의해 요구되는 메모리의 양을 크게 감소시킬 수 있다는 것을 이해해야 한다.
비디오 디코더(404)가 비디오 디코더(404)와 동일한 압축 알고리즘을 사용하여 참조 이미지를 손실 압축하는 비디오 인코더(402)로부터 이미지를 수신하는 것으로 예시적인 실시예에서 설명되지만, 일부 실시예에서, 비디오 인코더(402)는 참조 이미지를 압축하거나 무손실 압축하지 않고 이들 참조 이미지를 저장할 수 있다. 이러한 실시예에서, 비디오 디코더(404)는 비디오 인코더(402)에 의해 사용된 원래 참조 이미지와 다른 참조 이미지를 사용할 수 있다. 이러한 실시예에서, 비참조 이미지는 하나의 참조 이미지에 대한 그들의 차이와 관련하여 인코딩될 수 있고 차이 참조 이미지에 대한 그들의 차이와 관련하여 디코딩될 수 있다. 이러한 실시예는 비디오 디코더(404)의 메모리 저장 요구사항을 여전히 감소시킬 것이지만, 디코딩에서 오류를 야기할 수 있다. 그러나, 비디오는 여전히 시청자에게 허용 가능한 품질일 수 있고/있거나 비디오 분석 컴포넌트(예컨대, 비디오 추론(406))에 의해 여전히 사용될 수 있다.
일부 실시예에서, 비디오 디코더(404)는 비디오 디코딩 회로, 압축/압축해제 회로 등과 같은 개별 컴포넌트로서 구현될 수 있다. 이러한 실시예에서, 비디오 디코딩 회로는 손실 압축 알고리즘이 참조 이미지에 적용되고 있음을 인지하지 못할 수 있다. 예를 들어, 비디오 디코딩 회로는 참조 이미지로 표시된 이미지를 수신하고 이를 저장을 위해 메모리에 전달할 수 있을 뿐만 아니라, 예를 들어 이를 사용자에게 디스플레이하거나 비디오 추론(406)과 같은 다른 컴포넌트에 전달할 수 있다. 압축/압축해제 회로는 참조 이미지를 메모리에 저장하기 전에 참조 이미지를 손실로 압축할 수 있다. 비디오 디코딩 회로가 새로운 이미지를 디코딩하기 위해 나중에 참조 이미지를 요청할 때, 압축/압축 해제 회로는 참조 이미지를 비디오 디코딩 회로로 보내기 전에 메모리로부터 참조 이미지를 검색하고 그것을 압축해제할 수 있다. 비디오 디코딩 회로가 메모리에 저장한 참조 이미지는 비디오 디코딩 회로가 메모리에서 검색한 참조 이미지와 동일하지 않지만, 비디오 디코딩 회로는 그 변경을 인식할 필요가 없다. 이와 같이, 참조 이미지를 손실 압축 이미지로 저장하는 특징을 포함하지 않는 실시예는 비디오 디코딩 회로에 대한 변경 없이 압축/압축해제 회로를 도입함으로써 그 특징을 통합할 수 있다.
위에서 논의된 바와 같이 하드웨어, 펌웨어, 소프트웨어, 가상화된 하드웨어, 에뮬레이트된 아키텍처, 및/또는 이들의 조합으로서 구현될 수 있는 비디오 추론(406)은 비디오에서의 보행자 검출과 같은 비디오 추론 동작을 수행하도록 구성된다. 비디오 추론 작업은 비압축 참조 이미지를 사용하여 인코딩되고 비압축 참조 이미지를 사용하여 디코딩된 비디오, 비압축 참조 이미지를 사용하여 인코딩되고 손실 압축된 참조 이미지를 사용하여 디코딩된 비디오, 또는 손실 압축된 참조 이미지를 이용하여 인코딩되고 손실 압축된 참조 이미지를 사용하여 디코딩된 비디오와 같은 임의의 유형의 비디오에 대해 수행될 수 있다. 본 명세서에 설명된 기술을 사용하여 행해진 테스트 데이터에 대한 비디오 추론 테스트는 참조 이미지가 손실 압축된 경우에도 비디오 추론 정확도가 크게 변경되지 않음을 보여준다. 예를 들어, 하나의 테스트에서, 비디오 추론(406)은 비압축 참조 이미지를 사용하여 인코딩되고 비압축 참조 이미지 크기의 50%로 압축된 손실 압축 참조 이미지를 사용하여 디코딩된 비디오를 사용하여 MOT20 테스트 데이터를 분석하는 데 사용되었다. 결과는 표 1에 나와 있으며, 재현율, 정밀도 및 F1 점수를 사용하여 측정한 추론 정확도에서 약간의 감소만 보여준다.
Figure pat00001
이제 도 5를 참조하면, 사용시, 컴퓨팅 노드(102)는 메모리 효율적인 비디오 인코딩을 위한 방법(500)을 실행할 수 있다. 방법(500)은 블록(502)에서 시작하며, 여기서 컴퓨팅 노드(102)는 카메라(214)와 같은 센서에서 참조 이미지를 수신한다. 이와 달리, 일부 실시예에서, 컴퓨티 노드(102)는 참조 이미지를 저장소로부터 가져오거나 또는 다른 컴퓨팅 노드(102)와 같은 다른 컴퓨팅 장치로부터 수신함으로써 참조 이미지를 수신할 수 있다.블록(504)에서, 컴퓨팅 노드(102)는 손실 압축 알고리즘을 참조 이미지에 적용한다. 참조 이미지는 적절한 알고리즘을 사용하여 압축될 수 있다. 참조 이미지는 비압축 참조 이미지 크기의 0.05-0.9배와 같은, 비압축 참조 이미지에 대한 임의의 적절한 압축 비율로 압축될 수 있다. 예시적인 실시예에서, 컴퓨팅 노드(102)는 참조 이미지를 적어도 미리 정의된 양만큼 압축하기 위해 압축 알고리즘을 필요로 한다. 다른 실시예에서, 컴퓨팅 노드(102)는 비율이 엄격하게 강제되지 않고 압축 비율에 대한 특정 목표를 설정할 수 있다. 예시적인 실시예에서, 컴퓨팅 노드(102)는 50%의 압축 비율을 시행한다(즉, 참조 이미지 크기를 2배만큼 축소한다). 그 다음, 컴퓨팅 노드(102)는 원격 컴퓨팅 노드(102)와 같은 원격 컴퓨팅 장치에 참조 이미지를 전송한다. 예시적인 실시예에서, 컴퓨팅 노드(102)는 원격 컴퓨팅 장치에 압축되지 않은(또는 무손실 압축된) 참조 이미지를 전송한다. 다른 실시예에서, 컴퓨팅 노드(102)는 손실 압축된 참조 이미지를 원격 컴퓨팅 장치로 전송할 수 있다.
블록(508)에서, 컴퓨팅 노드(102)는 센서에서 다음 이미지를 수신한다(또는 저장소로부터 다음 이미지에 액세스하거나 원격 컴퓨팅 장치로부터 다음 이미지를 수신한다). 컴퓨팅 노드(102)는 새로운 이미지를 비압축(또는 무손실 압축) 상태로 저장할 수 있거나 참조 이미지와 유사한 방식으로 손실 압축 알고리즘을 사용하여 새로운 이미지를 압축할 수 있다.
블록(510)에서, 컴퓨팅 노드(102)는 다음 이미지가 참조 이미지로서 사용되어야 하는지 여부를 결정한다. 컴퓨팅 노드(102)는 새로운 이미지가 이전 이미지와 얼마나 다른지, 마지막 참조 이미지 이후에 얼마나 많은 이미지가 있는지 등과 같은 다양한 인자에 기초하여 다음 이미지가 참조 이미지로 사용되어야 하는지 여부를 결정할 수 있다. 새로운 이미지가 가장 최근 이미지, 가장 최근 참조 이미지 및/또는 다른 참조 이미지와 현저히 다른 경우, 그것은 참조 이미지로 선택될 수 있다.
이미지가 참조 이미지로서 선택되면, 방법(500)은 참조 이미지에 손실 압축 알고리즘을 적용하고 손실 압축된 참조 이미지를 컴퓨팅 노드(102)에 저장하기 위해 블록(504)으로 루프백한다. 컴퓨팅 노드(102)는 이전 참조 이미지를 덮어쓸 수 있고, 또는 하나 이상의 이전 참조 이미지 외에 새로운 참조 이미지를 저장할 수 있다.
블록(512)을 다시 참조하면, 이미지가 참조 이미지로서 선택되지 않으면, 방법(500)은 블록(514)으로 진행하고, 여기서 컴퓨팅 노드(102)는 손실 압축된 참조 이미지에 기초하여 이미지를 인코딩한다. 컴퓨팅 노드(102)는 새로운 이미지를 저장된 참조 이미지와 비교한다. 새로운 이미지와 참조 이미지 간의 차이가 결정된다. 새로운 이미지는 참조 이미지를 기반으로 인코딩된다. 예시적인 실시예에서, 새로운 이미지는 손실 인코딩 알고리즘을 사용하여 인코딩된다. 대안적으로, 일부 실시예에서, 새로운 이미지는 무손실 인코딩 알고리즘을 사용하여 인코딩될 수 있다. 참조 이미지가 손실 압축 알고리즘을 사용하여 저장될 때, 새로운 이미지는 원본 참조 이미지와 정확히는 동일하지 않은 참조 이미지를 기반으로 인코딩될 것임을 이해해야 한다. 이와 같이, 그러한 인코딩을 위한 인코딩 품질은 압축 알고리즘의 손실 정도에 따라 참조 이미지를 압축하지 않는(또는 무손실 압축 알고리즘을 사용하는) 비디오 인코더보다 약간 또는 현저히 낮을 수 있다.
그 다음, 컴퓨팅 노드(102)는 블록(516)에서 인코딩된 이미지를 원격 컴퓨팅 장치로 전송한다. 추가적으로 또는 대안적으로, 컴퓨팅 노드(102)는 인코딩된 이미지를 컴퓨팅 노드(102)에 저장할 수 있다. 그런 다음, 방법(500)은 센서로부터 새로운 이미지를 수신하기 위해 블록(518)으로 루프백한다.
이제 도 6을 참조하면, 사용시, 컴퓨팅 노드(102)는 메모리 효율적인 비디오 디코딩을 위한 방법(600)을 실행할 수 있다. 방법(600)은 블록(602)에서 시작하며, 여기서 컴퓨팅 노드(102)는 원격 컴퓨팅 노드(102)와 같은 원격 컴퓨팅 장치로부터 참조 이미지를 수신한다. 대안적으로, 일부 실시예에서, 컴퓨팅 노드(102)는 참조 이미지를 저장소로부터 가져옴으로써 참조 이미지를 수신할 수 있다.
블록(604)에서, 컴퓨팅 노드(102)는 손실 압축 알고리즘을 참조 이미지에 적용한다.
참조 이미지는 방법(500)과 관련하여 전술한 임의의 압축 알고리즘과 같은 임의의 적절한 알고리즘을 사용하여 압축될 수 있다. 예시적인 실시예에서, 참조 이미지는 비디오를 인코딩하는 방법(500)에서 사용된 것과 동일한 알고리즘을 사용하여 압축되고, 결과적으로 동일한 참조 이미지가, 비디오를 인코딩하기 위해 원격 컴퓨팅 노드(102)에 의해 사용되는 바와 같이 비디오를 디코딩하기 위해 컴퓨팅 노드(102)에 의해 사용된다. 비참조 이미지에 인코딩된 차이는 손실 압축 후 참조 이미지에 관한 것이므로, 동일한 손실 압축 후 참조 이미지를 사용하여 비참조 이미지를 디코딩하면 참조 이미지의 압축으로 인한 임의의 오류나 아티팩트가 감소할 수 있다.
블록(606)에서, 컴퓨팅 노드(102)는, 디코딩된 비디오에 대한 분석을 수행할 수 있는 비디오 추론기(406)와 같은 비디오 추론기로 수신된 이미지를 전송한다.
블록(608)에서, 컴퓨팅 노드(102)는 원격 컴퓨팅 장치로부터 다음 이미지를 수신한다(또는 저장소로부터 다음 이미지에 액세스한다). 원격 컴퓨팅 장치로부터의 이미지는 참조 이미지로 표시되거나 참조 이미지로 표시되지 않을 수 있다. 컴퓨팅 노드(102)는 새로운 이미지를 비압축(또는 무손실 압축) 상태로 저장할 수 있거나 참조 이미지와 유사한 방식으로 손실 압축 알고리즘을 사용하여 새로운 이미지를 압축할 수 있다.
블록(610)에서, 이미지가 참조 이미지로 표시되면, 방법(600)은 블록(604)으로 루프백하여 참조 이미지에 손실 압축 알고리즘을 적용하고 손실 압축된 참조 이미지를 컴퓨팅 노드(102)에 저장한다. 컴퓨팅 노드(102)는 이전 참조 이미지를 덮어쓸 수 있거나 하나 이상의 이전 참조 이미지에 추가하여 새로운 참조 이미지를 저장할 수 있다.
블록(610)을 다시 참조하면, 이미지가 참조 이미지로 표시되지 않은 경우, 방법(500)은 블록(612)으로 진행하고, 여기서 컴퓨팅 노드(102)는 손실 압축된 참조 이미지에 기초하여 이미지를 디코딩한다.
블록(614)에서, 컴퓨팅 노드(102)는 디코딩된 비디오에 대한 분석을 수행할 수 있는 비디오 추론기로 디코딩된 이미지를 전송한다. 그 다음, 방법(600)은 비디오의 다음 이미지를 수신하기 위해 블록(608)으로 루프백한다.
예시적인 컴퓨팅 실시예
다음 섹션은 본 개시물 전체에 걸쳐 설명된 메모리 효율적인 비디오 인코딩 및 디코딩과 함께 사용될 수 있는 컴퓨팅 장치, 시스템, 아키텍처 및 환경의 다양한 예를 제시한다.
예시적인 에지 컴퓨팅 실시예
도 7은 에지 컴퓨팅을 위한 구성의 개요를 나타내는 블록도(700)로, 이는 이하의 다수의 예에서 "에지 클라우드"라고 지칭되는 프로세싱 계층을 포함한다. 도시된 바와 같이, 에지 클라우드(710)는 액세스 포인트 또는 기지국(740), 로컬 프로세싱 허브(750), 또는 중앙 오피스(720)와 같은 에지 위치에 함께 위치되며, 따라서 다수의 엔티티, 장치 및 기기 인스턴스를 포함할 수 있다. 에지 클라우드(710)는, 클라우드 데이터 센터(730)보다 엔드포인트(소비자 및 생산자) 데이터 소스(760)(예를 들어, 자율 차량(761), 사용자 장비(762), 비즈니스 및 산업 장비(763), 비디오 캡처 장치(764), 드론(765), 스마트 시티 및 빌딩 장치(766), 센서 및 IoT 장치(767) 등)에 더 가깝게 위치된다. 에지 클라우드(710)의 에지에서 제공되는 컴퓨팅, 메모리 및 저장 리소스는 엔드포인트 데이터 소스(760)가 사용하는 서비스 및 기능의 초저지연 응답 시간을 제공하는 데 중요할 뿐만 아니라, 에지 클라우드(710)로부터 클라우드 데이터 센터(730)로 향하는 네트워크 백홀 트래픽을 감소시킴으로써, 여러 이점 중에서도 특히 에너지 소비 및 전체 네트워크 사용을 향상시킨다.
컴퓨팅, 메모리 및 저장소는 많지 않은 리소스로, 일반적으로 에지 위치에 따라 감소된다(예를 들어, 기지국에서나 중앙 오피스에서보다 소비자 엔드포인트 장치에서 이용 가능한 프로세싱 리소스가 더 적음). 그러나, 에지 위치가 엔드포인트(예를 들어, 사용자 장비(UE))에 가까울수록, 종종 공간과 전력은 더 많이 제한된다. 따라서, 에지 컴퓨팅은 지리적으로 및 네트워크 내 액세스 시간 모두에서 더 가깝게 위치된 리소스를 더 많이 배포함으로써, 네트워크 서비스에 필요한 리소스의 양을 감소시키려고 한다. 이러한 방식으로 에지 컴퓨팅은 적절한 경우에 컴퓨팅 리소스를 작업 부하 데이터로 가져오거나, 작업 부하 데이터를 컴퓨팅 리소스로 가져오려고 시도한다.
이하에서는, 다수의 잠재적 배치를 커버함과 아울러 일부 네트워크 운영자 또는 서비스 제공자가 그들의 인프라에서 가질 수 있는 제한을 해결하는, 에지 클라우드 아키텍처의 측면들을 설명한다. 여기에는 에지 위치에 기초한 다양한 구성(예를 들어 기지국 레벨의 에지가 멀티-테넌트 시나리오에서 더 제한된 성능 및 역량과 기능을 가질 수 있기 때문에); 에지 위치, 위치의 계층 또는 위치의 그룹이 사용할 수 있는 컴퓨팅, 메모리, 저장소, 패브릭, 가속 등의 리소스 유형에 기초한 구성; 서비스, 보안, 관리 및 조율 역량; 및 엔드 서비스의 사용성 및 성능을 달성하기 위한 관련 목표가 포함된다. 이러한 배치는 지연, 거리 및 타이밍 특성에 따라서, "부근(near) 에지", "가까운(close) 에지", "로컬 에지", "중간 에지" 또는 "먼 에지" 계층이라고 간주될 수 있는 네트워크 계층에서 처리를 수행할 수 있다.
에지 컴퓨팅은, 일반적으로 기지국, 게이트웨이, 네트워크 라우터 또는 데이터를 생성하고 소비하는 엔드포인트 장치에 훨씬 더 가까운 기타 장치에서 구현되는 컴퓨팅 플랫폼(예를 들어, x86 또는 ARM 컴퓨팅 하드웨어 아키텍처)를 사용해서, 네트워크의 "에지"에서 또는 이에 더 가까운 위치에서 컴퓨팅이 수행되는, 개발중인 패러다임이다. 예를 들어, 에지 게이트웨이 서버에는, 접속된 클라이언트 장치에 대한 저지연 용례(예를 들어, 자율 주행 또는 비디오 감시)를 위해 실시간으로 계산을 수행하기 위해 메모리 및 저장 리소스의 풀이 구비될 수도 있다. 또는 예를 들어, 더 이상 백홀 네트워크를 통해 데이터를 통신하는 일 없이 접속된 사용자 장비에 대한 서비스 작업 부하를 직접 처리하기 위해서, 기지국에 컴퓨팅 및 가속 리소스가 추가될 수도 있다. 또는 다른 예로서, 중앙 오피스 네트워크 관리 하드웨어는, 가상화된 네트워크 기능을 수행하고 접속된 장치에 대한 서비스 및 소비자 기능을 실행하기 위한 컴퓨팅 리소스를 제공하는 표준화된 컴퓨팅 하드웨어로 대체될 수도 있다. 에지 컴퓨팅 네트워크 내에는, 서비스에서 컴퓨팅 리소스가 데이터로 "이동"되는 시나리오 및 데이터가 컴퓨팅 리소스로 "이동"되는 시나리오가 있을 수 있다. 또는 예를 들어, 기지국 컴퓨팅, 가속 및 네트워크 리소스는 잠재적인 커패시티(가입, 주문형 커패시티)를 활성화함으로써 필요에 따라 작업 부하 주문에 맞게 크기 조정되는 서비스를 제공하여, 코너 케이스(corner cases), 긴급 상황을 관리하거나 훨씬 더 길게 구현된 수명 동안 배포된 리소스에 대해 긴 수명을 제공할 수 있다.
도 8은 엔드포인트, 에지 클라우드 및 클라우드 컴퓨팅 환경 사이의 동작 계층을 도시한다. 구체적으로, 도 8은 네트워크 컴퓨팅의 다수의 예시적인 계층들 중에서 에지 클라우드(710)를 사용하는 계산 용례(805)의 예를 도시한다. 계층들은 엔드포인트(장치 및 사물) 계층(800)에서 시작하고, 여기서 데이터 생성, 분석 및 데이터 소비 활동을 수행하기 위해 에지 클라우드(710)에 액세스한다. 에지 클라우드(710)는, 물리적으로 근접한 에지 시스템에 위치된 게이트웨이, 온프레미스(on-premise) 서버, 또는 네트워크 장비(노드(815))를 가진 에지 장치 계층(810)과 같은 다수의 네트워크 계층; 기지국, 무선 처리 유닛, 네트워크 허브, 지역 데이터 센터(DC) 또는 로컬 네트워크 장비(장비(825))를 포함하는 네트워크 액세스 계층(820); 및 임의의 장비, 장치 또는 그 사이에 위치된 노드(상세하게 도시되지 않은 계층(812)에서)에 걸쳐 있을 수 있다. 에지 클라우드(810) 내에서의 그리고 다양한 계층들 사이에서의 네트워크 통신은, 도시되지 않은 접속 아키텍처 및 기술을 통한 것을 포함한, 임의의 수의 유선 또는 무선 매체를 통해 존재할 수 있다.
네트워크 통신 거리 및 처리 시간 제약으로 인한 지연의 예는, 엔드포인트 계층(800) 사이에서 1 밀리초(ms) 미만, 에지 장치 계층(810)에서 5ms 미만, 심지어 네트워크 액세스 계층(820)의 노드들과 통신할 때 10ms 내지 40ms 사이의 범위일 수 있다. 에지 클라우드(710) 너머에는 코어 네트워크(830) 및 클라우드 데이터 센터(840) 계층이 있으며, 이들 각각은 증가하는 지연을 갖는다(예를 들어, 코어 네트워크 계층(830)에서는 50 내지 60ms 사이, 클라우드 데이터 센터 계층에서는 100ms 이상까지). 결과적으로, 지연이 최소 50~100ms 이상인 코어 네트워크 데이터 센터(835) 또는 클라우드 데이터 센터(845)에서의 동작은, 용례(805)에 있어서의 많은 시간-중요 기능을 수행하지 못할 것이다. 이들 지연의 값 각각은 설명 및 대비를 위해 제공되는 것으로, 다른 액세스 네트워크 매체 및 기술을 사용하면 지연을 더욱 줄일 수 있다는 것을 이해할 것이다. 일부 예에서, 네트워크의 각각의 부분들은 네트워크 소스 및 목적지에 대해 "가까운 에지", "로컬 에지", "부근 에지", "중간 에지", 또는 "먼 에지" 계층들로 분류될 수 있다. 예를 들어, 코어 네트워크 데이터 센터(835) 또는 클라우드 데이터 센터(845)의 관점에서, 중앙 오피스 또는 컨텐츠 데이터 네트워크는 "부근 에지" 계층 내에(용례(805)의 장치 및 엔드포인트와 통신할 때 지연 값이 높은, 클라우드 "부근") 위치되는 것으로 간주될 수 있는 반면, 액세스 포인트, 기지국, 온프레미스 서버 또는 네트워크 게이트웨이는 "먼 에지" 계층(용례(805)의 장치 및 엔드포인트과 통신할 때 지연 값이 낮은, 클라우드로부터 "먼") 내에 있는 것으로 간주될 수 있다. "가까운", "로컬", "부근", "중간" 또는 "먼" 에지를 구성하는 각 네트워크 계층의 다른 분류 방법은, 지연, 거리, 네트워크 홉의 수, 또는 임의의 네트워크 계층(800~840)의 소스로부터 측정된 다른 측정 가능한 특성에 기초할 수도 있다.
다양한 용례(805)는, 다수의 서비스가 에지 클라우드를 사용하는 것으로 인해, 입수 스트림의 이용 압박(usage pressure) 하에서 리소스에 액세스할 수 있다. 저 지연의 결과를 달성하기 위해서, 에지 클라우드(710) 내에서 실행되는 서비스는 (a) 우선 순위(처리량 또는 지연) 및 서비스 품질(QoS)(예를 들어, 자율 차량의 트래픽은 응답 시간 요건의 측면에서 온도 센서보다 우선 순위가 높을 수도 있고; 혹은 애플리케이션에 따라서는 컴퓨팅/가속기, 메모리, 저장소 또는 네트워크 리소스에 성능 민감도/병목 현상이 존재할 수도 있음); (b) 신뢰도 및 탄력성(예를 들어, 일부 입력 스트림은 미션-중요 신뢰도(mission-critical reliability)에 따라 동작되고 트랙픽이 라우팅되는 반면, 일부 다른 입력 스트림은 애플리케이션에 따라 간헐적인 오류는 허용할 수도 있음); 및 (c) 물리적 제약(예를 들어, 파워, 냉각 및 폼 팩터)의 관점에서, 다양한 요건의 밸런스를 맞춘다.
이들 용례에 대한 엔드-엔드 서비스 뷰(end-to-end service view)는 서비스 흐름의 개념을 포함하고, 트랜잭션과 연관된다. 이 트랜잭션은, 리소스, 작업 부하, 작업 흐름, 그리고 비즈니스 기능 및 비즈니스 레벨 요건에 대한 관련 서비스뿐만 아니라 서비스를 소비하는 엔티티에 대한 전체 서비스 요건을 자세하게 열거한다. 설명되는 "항목"에 따라 실행되는 서비스는, 서비스 라이프사이클 동안 트랜잭션에 대한 실시간의 런타임 계약 준수를 보장하는 방식으로 각 계층에서 관리될 수 있다. 트랜잭션의 구성요소가 SLA에 대한 동의를 누락하고 있는 경우에, 시스템 전체(트랜잭션의 구성요소)는 (1) SLA 위반의 영향을 이해하고, (2) 전체 트랜잭션 SLA를 재개하도록 시스템의 다른 구성요소를 보강하며, (3) 교정하는(remediate) 단계를 구현하는 것을 가능하게 할 수 있다.
따라서, 이러한 변형예 및 서비스 특징들을 염두해서, 에지 클라우드(710) 내의 에지 컴퓨팅은 용례(805)의 다수의 애플리케이션(예를 들어, 개체 추적, 비디오 감시, 접속된 자동차 등)을 실시간 또는 거의 실시간으로 서비스하고 이에 응답하는 능력을 제공할 수 있으며, 이러한 다수의 애플리케이션의 초저지연 요건을 만족시킨다. 이러한 이점은, 지연 혹은 다른 제한으로 인해서 기존 클라우드 컴퓨팅은 사용할 수 없는, 완전히 새로운 클래스의 애플리케이션(VNF(Virtual Network Functions), FaaS(Function as a Service), EaaS(Edge as a Service), 표준 프로세스 등)을 가능하게 한다.
그러나, 에지 컴퓨팅의 장점에는 다음과 같은 주의 사항이 있다. 에지에 위치된 장치는 종종 리소스가 제한되며, 따라서 에지 리소스 사용에서 압박이 있다. 전형적으로, 이러한 문제는 다수의 사용자(테넌트) 및 장치가 사용할 메모리 및 저장 리소스 풀링을 통해 해결된다. 에지는 파워 및 냉각이 제한될 수 있으며, 따라서 가장 많은 파워를 소비하는 애플리케이션에서는 파워 사용량이 고려되어야 한다. 이들 풀링된 메모리 리소스의 대부분이 긴급 메모리 기술을 사용하려고 하므로, 이들 풀링된 메모리 리소스에는 고유한 전력-성능에 트레이드오프가 있을 수 있으며, 이 경우, 더 많은 전력을 사용하려면 더 큰 메모리 대역폭이 필요하다. 마찬가지로, 에지 위치는 무인화될(unmanned) 수 있고 허가된 액세스가 필요할 수도 있기 때문에(예를 들어, 제3자 위치에 하우징될 때), 하드웨어의 개선된 보안과 신뢰 루트의 신뢰할 수 있는 기능도 요구된다. 이러한 문제는 멀티-테넌트, 다중-소유자 또는 멀티-액세스 설정의 에지 클라우드(710)에서 확대되며, 여기서 서비스 및 애플리케이션은, 특히 네트워크 사용량이 동적으로 변동되고, 여러 이해 당사자, 용례 및 서비스의 조합이 변화함에 따라, 다수의 사용자에 의해 요청된다.
보다 일반적인 레벨에서, 에지 컴퓨팅 시스템은, 클라이언트와 분산 컴퓨팅 장치로부터 조정(coordination)을 제공하는, 에지 클라우드(710)(네트워크 계층(800-840))에서 동작하는 상술한 계층들에서의 임의의 수의 배치를 포함하는 것으로 설명될 수 있다. 하나 이상의 에지 게이트웨이 노드, 하나 이상의 에지 집계(aggregation) 노드, 및 하나 이상의 코어 데이터 센터는 통신 서비스 제공자(telecommunication service provider)("telco " 또는 "TSP"), 사물 인터넷 서비스 제공자, 클라우드 서비스 제공자(CSP), 엔터프라이즈 엔티티 또는 기타 여러 엔티티에 의해 혹은 이들을 대신해서, 에지 컴퓨팅 시스템의 구성을 제공하도록 네트워크의 계층들에 걸쳐 분산될 수 있다. 에지 컴퓨팅 시스템의 다양한 구현 및 구성은, 서비스 목표를 충족하도록 조정될 때와 같이, 동적으로 제공될 수 있다.
본 명세서에서 제공되는 예와 일치하게, 클라이언트 컴퓨팅 노드는 데이터의 생산자 또는 소비자로서 통신을 행할 수 있는, 임의의 유형의 엔드포인트 컴포넌트, 장치, 기기 또는 기타 사물로 구현될 수 있다. 또한, 에지 컴퓨팅 시스템에서 사용되는 "노드" 또는 "장치"라는 레이블은 반드시 그러한 노드 또는 장치가 클라이언트 또는 에이전트/미니언(minion)/팔로워 역할로 동작하는 것을 의미하는 것은 아니며; 에지 컴퓨팅 시스템의 임의의 노드 또는 장치는 에지 클라우드(710)를 사용하거나 혹은 이를 용이하게 하는 개별적인 혹은 연결된 하드웨어 또는 소프트웨어 구성을 포함하는, 개개의 엔티티, 노드 또는 서브시스템을 지칭한다.
이와 같이, 에지 클라우드(710)는 에지 게이트웨이 노드, 에지 집계 노드, 또는 네트워크 계층(810-8230) 사이의 다른 에지 컴퓨팅 노드에 의해 및 이들 내에서 동작되는 네트워크 컴포넌트 및 기능적 특징으로 형성된다. 따라서, 에지 클라우드(710)는, 본 명세서에서 설명되는, 무선 액세스 네트워크(RAN) 가능 엔드포인트 장치(예를 들어, 모바일 컴퓨팅 장치, IoT 장치, 스마트 장치 등)에 근접해서 위치된 에지 컴퓨팅 및/또는 저장 리소스를 제공하는 임의의 유형의 네트워크로서 구현될 수 있다. 다시 말해, 에지 클라우드(710)는, 저장 및/또는 컴퓨팅 기능도 제공하면서, 모바일 캐리어 네트워크(예를 들어, GSM(Global System for Mobile Communications) 네트워크, LTE(Long-Term Evolution) 네트워크, 5G/6G 네트워크 등)를 포함하는, 서비스 공급자 코어 네트워크로의 진입점 역할을 하는 기존 네트워크 액세스 포인트와 엔드포인트 장치를 접속시키는 "에지"라고 상정될 수 있다. 다른 유형 및 형태의 네트워크 액세스(예를 들어, Wi-Fi, 장거리 무선, 광 네트워크를 포함하는 유선 네트워크)도, 이러한 3GPP 캐리어 네트워크 대신에 또는 이러한 3GPP 캐리어 네트워크와 조합해서 사용될 수 있다.
에지 클라우드(710)의 네트워크 컴포넌트는 서버, 멀티-테넌트 서버, 기기 컴퓨팅 장치, 및/또는 임의의 다른 유형의 컴퓨팅 장치일 수 있다. 예를 들어, 에지 클라우드(710)는 하우징, 섀시, 케이스 또는 쉘을 포함하는 자급식 전자 장치인 가전 컴퓨팅 장치를 포함할 수 있다. 일부 상황에서, 하우징은 사람이 운반하고 및/또는 운송되는 것이 가능하게 휴대성을 갖도록 치수가 정해질 수도 있다. 예시적인 하우징은 기기의 컨텐츠를 부분적으로 또는 완전히 보호하는 하나 이상의 외부 표면을 형성하는 재료를 포함할 수 있으며, 여기서 보호는 날씨 보호, 위험한 환경 보호(예를 들어, EMI, 진동, 극한 온도) 및/또는 방수성을 포함할 수 있다. 예시적인 하우징은 AC 전력 입력, DC 전력 입력, AC/DC 또는 DC/AC 컨버터(들), 전력 조절기, 변압기, 충전 회로, 배터리, 유선 입력 및/또는 무선 전력 입력과 같은, 고정식 및/또는 휴대형 구현예에 전력을 제공하는 전력 회로를 포함할 수 있다. 예시적인 하우징 및/또는 그 표면은, 건물, 원격 통신 구조물(예를 들어, 폴(poles), 안테나 구조물 등) 및/또는 랙(예를 들어, 서버 랙, 블레이드 마운트 등)과 같은 구조에의 부착을 가능하게 하는 탑재 하드웨어를 포함할 수도 있고 혹은 이에 접속될 수도 있다. 예시적인 하우징 및/또는 그 표면은 하나 이상의 센서(예를 들어, 온도 센서, 진동 센서, 광 센서, 음향 센서, 용량성 센서, 근접 센서 등)를 지지할 수 있다. 하나 이상의 이러한 센서는 기기의 표면에 포함되거나, 운반되거나, 혹은 그 표면에 내장되거나 및/또는 기기의 표면에 장착될 수 있다. 예시적인 하우징 및/또는 그 표면은 추진 하드웨어(예를 들어, 바퀴, 프로펠러 등) 및/또는 관절 하드웨어(예를 들어, 로봇 팔, 회전 가능한 부속 장치 등)와 같은 기계적인 접속을 지원할 수 있다. 일부 상황에서, 센서는 사용자 인터페이스 하드웨어(예를 들어, 버튼, 스위치, 다이얼, 슬라이더 등)와 같은 임의의 유형의 입력 장치를 포함할 수 있다. 일부 상황에서, 예시적인 하우징은 출력 장치를 자신의 내부에 포함하거나, 이를 운반하거나, 내부에 내장하거나 및/또는 자신에 부착한다. 출력 장치는 디스플레이, 터치스크린, 조명, LED, 스피커, I/O 포트(예를 들어, USB) 등을 포함할 수 있다. 일부 상황에서, 에지 장치는 특정한 목적(예를 들어, 신호등)으로 네트워크에 있는 장치이지만, 다른 목적으로 사용될 수 있는 처리 및/또는 기타 기능을 가질 수 있다. 이러한 에지 장치는 다른 네트워크 장치와는 독립된 것일 수 있으며, 주요 목적에 적합하기도 하고 주요한 태스크를 방해하지 않는 다른 컴퓨팅 태스크에도 사용가능한 폼 팩터를 가진 하우징이 제공될 수 있다. 에지 장치는 사물 인터넷 장치를 포함한다. 가전 컴퓨팅 장치는 장치 온도, 진동, 리소스 활용, 업데이트, 전력 문제, 물리적 및 네트워크 보안 등과 같은 로컬 문제를 관리하기 위한 하드웨어 및 소프트웨어 컴포넌트를 포함할 수 있다. 가전 컴퓨팅 장치를 구현하기 위한 예시적인 하드웨어는 도 3과 연계하여 설명된다. 에지 클라우드(710)는 또한 하나 이상의 서버 및/또는 하나 이상의 멀티 테넌트 서버를 포함할 수 있다. 이러한 서버는 운영 체제를 포함하고 가상 컴퓨팅 환경을 구현할 수 있다. 가상 컴퓨팅 환경은 하나 이상의 가상 머신, 하나 이상의 컨테이너 등을 관리(생성, 배포, 파괴 등)하는 하이퍼바이저를 포함할 수 있다. 이러한 가상 컴퓨팅 환경은 하나 이상의 애플리케이션 및/또는 기타 소프트웨어, 코드 또는 스크립트가 하나 이상의 다른 애플리케이션, 소프트웨어, 코드 또는 스크립트로부터 격리된 상태에서 실행될 수 있는 실행 환경을 제공한다.
도 9에서, 다양한 클라이언트 엔드포인트(910)(모바일 장치, 컴퓨터, 자율 차량, 비즈니스 컴퓨팅 장비, 산업용 처리 장비의 형태)는 엔드포인트 네트워크 집계의 유형에 특정한 요청 및 응답을 교환한다. 예를 들어, 클라이언트 엔드포인트(910)는 온프레미스 네트워크 시스템(932)을 통해 요청 및 응답(922)을 교환함으로써, 유선 광대역 네트워크를 통해 네트워크 액세스를 획득할 수 있다. 모바일 컴퓨팅 장치와 같은 일부 클라이언트 엔드포인트(910)는 액세스 포인트(예를 들어, 셀룰러 네트워크 타워)(934)를 통해 요청 및 응답(924)을 교환함으로써 무선 광대역 네트워크를 통해 네트워크 액세스를 획득할 수 있다. 자율 차량과 같은 일부 클라이언트 엔드포인트(910)는 거리에 배치된 네트워크 시스템(936)을 거치는 무선 차량 네트워크를 통해서 요청 및 응답(926)에 대한 네트워크 액세스를 획득할 수 있다. 그러나, 네트워크 액세스의 유형에 관계없이, TSP는 트래픽 및 요청을 집계하기 위해 에지 클라우드(710) 내에 집계 포인트(942, 944)를 배치할 수 있다. 따라서, 에지 클라우드(710) 내에서, TSP는 요청된 컨텐츠를 제공하기 위해, 에지 집계 노드(940)에서와 같은, 다양한 컴퓨팅 및 저장 리소스를 배치할 수 있다. 에지 클라우드(710)의 에지 집계 노드(940) 및 다른 시스템은, 백홀 네트워크(350)를 사용해서 웹사이트, 애플리케이션, 데이터베이스 서버 등에 대한 클라우드/데이터 센터로부터의 긴 지연의 요청을 수행하는, 클라우드 또는 데이터 센터(960)에 접속된다. 단일 서버 프레임워크 상에 배치되는 것을 포함한, 에지 집계 노드(940) 및 집계 포인트(942, 944)의 추가 인스턴스 또는 통합된 인스턴스는 또한, 에지 클라우드(710) 내에 존재할 수 있다.
본 명세서에서 설명되는 에지 컴퓨팅 시스템 및 배열은 이동성을 포함하는 다양한 솔루션, 서비스 및/또는 용례에 적용될 수 있다는 것을 이해해야 한다. 예를 들어, 도 10은 에지 클라우드(710)를 구현하는 에지 컴퓨팅 시스템(1000)의 애플리케이션에 대한 모바일 액세스를 포함하는, 차량 컴퓨팅 및 통신 용례를 개략적으로 나타낸다. 이 용례에서, 각각의 클라이언트 컴퓨팅 노드(1010)는, 도로를 횡단하는 동안 에지 게이트웨이 노드(1020)와 통신하는 대응하는 차량에 위치된 차량 내 컴퓨팅 시스템(예를 들어, 차량 내 내비게이션 및/또는 인포테인먼트 시스템)으로서 구현될 수 있다. 예를 들어, 에지 게이트웨이 노드(1020)는, 도로를 따라, 도로의 교차점에, 또는 도로 근처의 다른 위치에 배치될 수 있는 다른 별도의 기계적 유틸리티를 가진 구조에 내장된 도로변 캐비닛 또는 다른 인클로저에 위치될 수 있다. 각각의 차량이 도로를 횡단함에 따라서, 클라이언트 컴퓨팅 노드(1010)와 특정 에지 게이트웨이 장치(1020) 사이의 연결은 클라이언트 컴퓨팅 노드(1010)에 대한 일관된 접속 및 컨텍스트를 유지하기 위해 전파될 수 있다. 마찬가지로, 모바일 에지 노드는 높은 우선 순위 서비스로 집계될 수 있고, 혹은 기본 서비스(들)(예를 들어, 드론의 경우에)에 대한 처리량 또는 지연 해결 요건에 따라 집계될 수 있다. 각각의 에지 게이트웨이 노드(1020)는, 일정 정도의 처리 및 저장 역량을 포함하고, 따라서 클라이언트 컴퓨팅 노드(1010)에 대한 데이터의 일부 처리 및/또는 저장은 에지 게이트웨이 장치(1020) 중 하나 이상에서 수행될 수 있다.
에지 게이트웨이 장치(1020)는, 통신 기지국(1042)(예를 들어, 셀룰러 네트워크의 기지국)에 위치하는 컴퓨팅 서버, 기기, 또는 컴포넌트로서 예시적으로 구현되는, 하나 이상의 에지 리소스 노드(1040)와 통신할 수 있다. 위에서 설명된 바와 같이, 각각의 에지 리소스 노드(1040)는 일정 정도의 처리 및 저장 역량을 포함하고, 따라서, 클라이언트 컴퓨팅 노드(1010)에 대한 데이터의 일부 처리 및/또는 저장은 에지 리소스 노드(1040)에서 수행될 수 있다. 예를 들어, 덜 긴급하거나 덜 중요한 데이터의 처리는 에지 리소스 노드(1040)에 의해 수행될 수 있는 반면, 더 긴급하거나 더 중요한 데이터 처리는 에지 게이트웨이 노드(1020)에 의해 수행될 수 있다(예를 들어, 각 컴포넌트의 역량 또는 긴급성 또는 중요도를 나타내는 요청의 정보에 따라서). 데이터 액세스, 데이터 위치 또는 지연에 기초해서, 처리 활동 동안에 처리 우선 순위가 변경되면 에지 리소스 노드에서 작업이 계속될 수 있다. 마찬가지로, 구성 가능한 시스템 또는 하드웨어 리소스 자체가 새로운 수요를 충족하기 위한 추가 리소스를 제공(예를 들어, 컴퓨팅 리소스를 작업 부하 데이터에 적응)하도록 (예를 들어, 로컬 조율기를 통해서) 가동될 수 있다.
에지 리소스 노드(들)(1040)는 또한 중앙 위치(예를 들어, 셀룰러 통신 네트워크의 중앙 오피스)에 위치된 컴퓨팅 서버, 기기, 및/또는 다른 컴포넌트를 포함할 수 있는, 코어 데이터 센터(1050)와 통신한다. 코어 데이터 센터(1050)는 에지 리소스 노드(들)(1040) 및 에지 게이트웨이 장치(1020)에 의해 형성된 에지 클라우드(710) 동작을 위해 글로벌 네트워크 클라우드(1060)(예를 들어, 인터넷)에 게이트웨이를 제공할 수 있다. 또한, 일부 예에서, 코어 데이터 센터(1050)는 일정 정도의 처리 및 저장 역량을 포함할 수 있고, 따라서 클라이언트 컴퓨팅 장치에 대한 데이터의 일부 처리 및/또는 저장은 코어 데이터 센터(1050)에서 수행될 수 있다(예를 들어, 낮은 긴급성 또는 중요도의 처리, 또는 높은 복잡성의 처리).
에지 게이트웨이 노드(1020) 또는 에지 리소스 노드(1040)는 상태 유지(stateful) 애플리케이션(1032) 및 지리적으로 분산된 데이터베이스(1034)의 사용을 제공할 수 있다. 애플리케이션(1032) 및 데이터베이스(1034)는 에지 클라우드(710)의 계층에서 수평으로 분산되는 것으로 도시되어 있지만, 리소스, 서비스, 또는 애플리케이션의 다른 컴포넌트가 에지 클라우드 전체(클라이언트 컴퓨팅 노드(1010)에서 실행되는 애플리케이션의 일부, 에지 게이트웨이 노드(1020) 또는 에지 리소스 노드(1040)에서 실행되는 애플리케이션의 다른 일부 등을 포함)에 수직으로 분산될 수도 있다는 것을 이해할 것이다. 또한, 앞서 언급한 바와 같이, 서비스 목표 및 의무를 만족시키기 위해 모든 레벨에서 피어 관계가 있을 수 있다. 또한, 특정 클라이언트 또는 애플리케이션에 대한 데이터는 변경되는 조건에 기초하여(예를 들어, 가속 리소스 가용성에 기초하여, 자동차 이동에 후속하여, 등) 에지에서 에지로 이동할 수 있다. 예를 들어, 액세스의 "쇠퇴 속도"에 기초해서, 계속될 다음 소유자 또는, 데이터 또는 계산 액세스가 더 이상 실행 가능하지 않을 때를 식별하기 위한 예측이 수행될 수 있다. 이들 서비스 및 기타 서비스는, 거래를 규정 준수 및 무손실 상태로 유지하는 데 필요한 작업을 완료하는데 사용될 수 있다.
추가 시나리오에서, 컨테이너(1036)(또는 컨테이너의 포드(pod))는 에지 노드(1020)로부터 다른 에지 노드(예를 들어, 1020, 1040 등)로 유연하게 이전(migration)될 수 있고, 이로써 애플리케이션 및 작업 부하가 있는 컨테이너는 이전 작업을 위해 재구성, 재컴파일, 재해석될 필요가 없다. 그러나, 이러한 설정에서는, 일부 교정 또는 "스위즐링(swizzling)" 번환 동작이 적용될 수 있다. 예를 들어, 노드(1040)에서의 물리적 하드웨어는 에지 게이트웨이 노드(1020)와 다를 수 있으며, 따라서 컨테이너의 바닥 에지를 구성하는 HAL(hardware abstraction layer)은 타깃 에지 노드의 물리적 계층에 다시 매핑될 것이다. 이는, 컨테이너 네이티브 형식으로부터 물리적 하드웨어 형식으로의 HAL 이진 변환과 같은, 일종의 후기 바인딩 기술을 포함할 수도 있고, 혹은 인터페이스 및 동작을 매핑하는 것을 포함할 수 있다. 포드 제어기는 컨테이너 라이프사이클의 일부로 인터페이스 매핑을 구동하는 데 사용될 수 있으며, 여기에는 다른 하드웨어 환경으로의/으로부터의 이전을 포함한다.
도 10에 포함된 시나리오에서는, 차량(자동차/트럭/트램/기차) 또는 다른 모바일 유닛에 호스팅된 에지 노드와 같은 다양한 유형의 모바일 에지 노드를, 이들 에지 노드가 그것을 호스팅하는 플랫폼을 따라 다른 지리적인 위치로 이동함에 따라, 활용할 수 있다. 차량 대 차량 통신을 이용해서, 개개의 차량은 다른 차의 네트워크 에지 노드의 역할을 할 수 있다(예를 들어, 캐싱, 보고, 데이터 집계 등을 수행하기 위해). 따라서, 다양한 에지 노드에서 제공되는 애플리케이션 컴포넌트는, 개별 엔드포인트 장치 또는 에지 게이트웨이 노드(1020)에서 일부 기능 또는 동작, 에지 리소스 노드(1040)에서 일부 다른 기능 또는 동작, 및 코어 데이터 센터(1050) 또는 글로벌 네트워크 클라우드(1060)의 다른 기능 또는 동작 사이의 조정을 포함한 정적 설정 또는 모바일 설정으로 분산될 수 있다는 것을 이해할 것이다.
추가 구성에서, 에지 컴퓨팅 시스템은 각각의 실행 가능한 애플리케이션 및 기능을 사용해서 FaaS 컴퓨팅 역량을 구현할 수 있다. 예컨대, 개발자는 하나 이상의 컴퓨터 기능을 나타내는 기능 코드(예를 들어, 본 명세서에서 "컴퓨터 코드")를 작성하고, 이 기능 코드는 예를 들어 에지 노드 또는 데이터 센터에 의해 제공되는 FaaS 플랫폼에 업로드된다. 예를 들어 서비스 용례 또는 에지 처리 이벤트와 같은 트리거가, FaaS 플랫폼을 이용해서 기능 코드의 실행을 개시한다.
FaaS의 예에서, 컨테이너는 기능 코드(예를 들어, 제3자에 의해 제공될 수 있는 애플리케이션)가 실행되는 환경을 제공하는데 사용된다. 컨테이너는 프로세스, 도커(Docker) 또는 쿠버네티스(Kubernetes) 컨테이너, 가상 머신 등과 같은 임의의 분리-실행 엔티티일 수 있다. 에지 컴퓨팅 시스템 내에서, 다양한 데이터 센터, 에지 및 엔드포인트(모바일을 포함) 장치가, 필요에 따라 스케일링되는 기능을 "스핀 업"(예를 들어, 기능 액션을 가동 및/또는 할당)하는데 사용된다. 기능 코드는 물리적인 인프라(예를 들어, 에지 컴퓨팅 노드) 장치 및 기본 가상화 컨테이너에서 실행된다. 마지막으로, 컨테이너는 실행이 완료되는 것에 응답해서 인프라에서 "스핀 다운"(예를 들어, 가동 중지 및/또는 할당 해제)된다.
FaaS의 추가적인 측면은 서비스로서의 에지 컴퓨팅(EaaS(Edge-as-a-Service))을 지원하는 각각의 기능의 지원을 포함한, 서비스 방식으로 에지 기능의 배치를 가능하게 할 수 있다. puFaaS의 추가 특징은 고객(예를 들어, 컴퓨터 코드 개발자)이 이들 코드가 실행될 때에만 지불하는 것을 가능하게 하는 세분화된 청구 컴포넌트; 하나 이상의 기능에 의한 재사용을 위해 데이터를 저장하는 공통 데이터 저장소; 개별 기능 사이의 조율 및 관리; 기능 실행 관리, 병렬 처리 및 통합; 컨테이너 및 기능 메모리 공간의 관리; 기능에 사용할 수 있는 가속 리소스의 조정; 및 컨테이너 사이의 기능 배포(이미 배포된 또는 동작 중인 "웜(warm)" 컨테이너, 및 초기화, 배포 또는 구성이 필요한 "콜드(cold)" 컨테이너를 포함)를 포함할 수 있다.
에지 컴퓨팅 시스템(1000)은 에지 프로비저닝 노드(1044)를 포함할 수 있고 혹은 이와 통신할 수 있다. 에지 프로비저닝 노드(1044)는 도 3의 예시적인 컴퓨터 판독 가능 명령어(382)와 같은 소프트웨어를, 본 명세서에서 설명되는 방법 중 어느 하나를 구현하기 위해, 다양한 수신 당사자(party)에게 배포할 수 있다. 예시적인 에지 프로비저닝 노드(1044)는 소프트웨어 명령어(예를 들어, 코드, 스크립트, 실행 가능한 바이너리, 컨테이너, 패키지, 압축 파일, 및/또는 이들의 파생물)을 다른 컴퓨팅 장치에 저장 및/또는 전송할 수 있는 임의의 컴퓨터 서버, 홈 서버, 컨텐츠 전달 네트워크, 가상 서버, 소프트웨어 배포 시스템, 중앙 설비, 저장 장치, 저장 노드, 데이터 설비, 클라우드 서비스에 의해 구현될 수 있다. 예시적인 에지 프로비저닝 노드(1044)의 컴포넌트(들)는 클라우드, LAN, 에지 네트워크, WAN, 인터넷, 및/또는 수신자(들)와 통신 가능하게 연결된 임의의 다른 위치에 위치될 수 있다. 수신자는 에지 프로비저닝 노드(1044)를 소유 및/또는 동작시키는 엔티티의 고객, 클라이언트, 동료, 사용자 등이 될 수 있다. 예를 들어, 에지 프로비저닝 노드(1044)를 소유 및/또는 동작시키는 엔티티는 도 3의 예시적인 컴퓨터 판독가능 명령어(382)와 같은 소프트웨어 명령어의 개발자, 판매자 및/또는 라이선스 제공자(또는 그 고객 및/또는 소비자)일 수 있다. 수신자는 사용 및/또는 재판매 및/또는 하위 라이선싱을 위해 소프트웨어 명령어를 구매 및/또는 라이선스 제공하는 소비자, 서비스 제공자, 사용자, 소매업자, OEM 등이 될 수 있다.
일 예에서, 에지 프로비저닝 노드(1044)는 하나 이상의 서버 및 하나 이상의 저장 장치를 포함한다. 저장 장치는 후술하는 바와 같이 도 3의 예시적인 컴퓨터 판독 가능 명령어(382)와 같은 컴퓨터 판독 가능 명령어를 호스팅한다. 앞서 설명한 에지 게이트웨이 장치(1020)와 유사하게, 에지 프로비저닝 노드(1044)의 하나 이상의 서버는 기지국(1042) 또는 다른 네트워크 통신 엔티티와 통신한다. 일부 예에서, 하나 이상의 서버는 상업적인 거래의 일부로서 소프트웨어 명령어를 요청 당사자(party)에게 전송하라는 요청에 응답한다. 소프트웨어 명령어의 전달, 판매 및/또는 라이선스에 대한 지불은, 소프트웨어 배포 플랫폼의 하나 이상의 서버에 의해 및/또는 제3자 지불 엔티티를 통해 핸들링될 수 있다. 서버를 통해서 구매자 및/또는 라이선스 제공자는 에지 프로비저닝 노드(1044)로부터 컴퓨터 판독가능 명령어(382)를 다운로드할 수 있다. 예를 들어, 도 3의 예시적인 컴퓨터 판독가능 명령어(382)에 대응할 수 있는 소프트웨어 명령어는, 본 명세서에 설명된 방법을 구현하기 위해 컴퓨터 판독가능 명령어(382)를 실행하는 예시적인 프로세서 플랫폼(들)로 다운로드될 수 있다.
일부 예에서, 컴퓨터 판독 가능 명령어(382)를 실행하는 프로세서 플랫폼(들)은 물리적으로 상이한 지리적 위치, 법적 관할 구역 등에 위치될 수 있다. 일부 예에서, 에지 프로비저닝 노드(1044)의 하나 이상의 서버는 주기적으로 소프트웨어 명령어(예를 들어, 도 3b의 예시적인 컴퓨터 판독 가능 명령어(382))에 업데이트를 제공, 전달 및/또는 강제해서, 개선, 패치, 업데이트 등이 최종 사용자 장치에서 구현되는 소프트웨어 명령어에 배포되어서 적용되는 것을 보장한다. 일부 예에서, 컴퓨터 판독가능 명령어(382)의 상이한 컴포넌트는 상이한 소스로부터 및/또는 상이한 프로세서 플랫폼으로 배포될 수 있고; 예를 들어, 다른 라이브러리, 플러그인, 컴포넌트 및 다른 유형의 컴퓨팅 모듈은 컴파일되는지 또는 해석되는지 여부에 관계없이 다른 소스로부터 및/또는 다른 프로세서 플랫폼으로 배포될 수 있다. 예를 들어, 소프트웨어 명령어의 일부(예를 들어, 그 자체로는 실행 가능하지 않은 스크립트)는 제1 소스로부터 배포될 수 있는 반면, 인터프리터(스크립트를 실행할 수 있음)는 제2 소스로부터 배포될 수 있다.
도 11은 ETSI MEC 사양에 의해 표시된 것과 같은 모바일 에지 시스템 참조 아키텍처(또는 MEC 아키텍처)(1100)를 예시한다. 도 11은 ETSI GS MEC-003 사양에 따른 기능을 제공하는 MEC 호스트(1102, 1104)를 갖는 MEC 아키텍처(1100)를 구체적으로 도시한다. 일부 양상들에서, MEC 플랫폼(1132) 및 MEC 플랫폼 관리자(1106)에 대한 향상들은 위에서 설명된 메모리 효율적인 비디오 인코딩 및 디코딩과 같은 MEC 아키텍처(1100) 내의 특정 컴퓨팅 기능을 제공하기 위해 사용될 수 있다.
도 11을 참조하면, MEC 네트워크 아키텍처(1100)는 MEC 호스트(1102, 1104), 가상화 인프라 관리자(VIM)(1108), MEC 플랫폼 관리자(1106), MEC 조율기(1110), 운영 지원 시스템(1112), 사용자 앱 프록시(1114), UE(1120) 상에서 구동되는 UE 앱(1118), 및 CFS 포털(1116)을 포함할 수 있다. MEC 호스트(1102)는 필터링 규칙 제어 컴포넌트(1140), DNS 핸들링 컴포넌트(1142), 서비스 레지스트리(1138), 및 MEC 서비스(1136)를 갖는 MEC 플랫폼(1132)을 포함할 수 있다. MEC 서비스(1136)는 가상화 인프라(1122)에서 MEC 앱(또는 NFV)(1126, 1127, 1128)을 인스턴스화하기 위한 리소스를 선택하는 데 사용할 수 있는 적어도 하나의 스케줄러를 포함할 수 있다. MEC 앱(1126, 1128)은 하나 이상의 무선 연결(예를 들어, 하나 이상의 RAN 또는 텔레콤 코어 네트워크 엔티티에 대한 연결)과 연관된 상이한 유형의 네트워크 통신 트래픽을 처리하는 것을 포함할 수 있는 서비스(1130,1131)를 제공하도록 구성될 수 있다. MEC 호스트(1104) 내에서 인스턴스화된 MEC 앱(1105)은 MEC 호스트(1102) 내에서 인스턴스화된 MEC 앱(1126-1128)과 유사할 수 있다. 가상화 인프라(1122)는 MP2 인터페이스를 통해 MEC 플랫폼에 결합된 데이터 평면(1124)을 포함한다. MEC 아키텍처(1100)의 다양한 네트워크 엔티티들 사이의 추가 인터페이스가 도 11에 도시되어 있다.
MEC 플랫폼 관리자(1106)는 MEC 플랫폼 요소 관리 컴포넌트(1144), MEC 앱 규칙 및 요구사항 관리 컴포넌트(1146), 및 MEC 앱 라이프사이클 관리 컴포넌트(1148)를 포함할 수 있다. MEC 아키텍처(1100) 내의 다양한 엔티티는 ETSI GS MEC-003 사양에 의해 개시된 기능을 수행할 수 있다. 일부 양상들에서, 원격 애플리케이션(또는 앱)(1150)은 MEC 조율기(1110) 및 MEC 플랫폼 관리자(1106)를 통해 MEC 호스트(1102)와(예를 들어, MEC 앱(1126-1128)과) 통신하도록 구성된다.
도 12는 각각의 게이트웨이에 대한 링크를 통해 결합된 각각의 사물 인터넷(IoT) 네트워크에 대한 예시적인 도메인 토폴로지를 도시한다. 사물 인터넷(IoT)은 많은 수의 컴퓨팅 장치가 서로 그리고 인터넷에 상호 연결되어 매우 낮은 레벨에서 기능과 데이터 수집을 제공하는 개념이다. 따라서, 본 명세서에서 사용되는 바와 같이, IoT 장치는 다른 IoT 장치 및 인터넷과 같은 광역 네트워크와 통신하면서, 무엇보다도 감지 또는 제어와 같은 기능을 수행하는 반자율적 장치를 포함할 수 있다.
종종, IoT 장치는 메모리, 크기 또는 기능면에서 제한되어 더 적은 수의 더 큰 장치에 유사한 비용으로 더 많은 수를 배치할 수 있다. 그러나, IoT 장치는 스마트폰, 노트북, 태블릿, PC 또는 기타 더 큰 장치일 수 있다. 또한, IoT 장치는 스마트 폰 또는 다른 컴퓨팅 장치 상의 애플리케이션과 같은 가상 장치일 수 있다. IoT 장치는 데이터 저장, 프로세스 제어 등을 위해 IoT 장치를 다른 IoT 장치 및 클라우드 애플리케이션에 연결하는 데 사용되는 IoT 게이트웨이를 포함할 수 있다.
IoT 장치의 네트워크는 물 분배 시스템, 전력 분배 시스템, 파이프라인 제어 시스템, 플랜트 제어 시스템, 전등 스위치, 온도 조절기, 잠금 장치, 카메라, 경보, 동작 센서 등과 같은 상업용 및 가정용 자동화 장치를 포함할 수 있다. IoT 장치는 예를 들어 시스템을 제어하거나 데이터에 액세스하기 위해, 원격 컴퓨터, 서버 및 기타 시스템을 통해 액세스가능할 수 있다.
인터넷 및 유사 네트워크의 미래 성장은 매우 많은 수의 IoT 장치를 포함할 수 있다. 따라서, 본 명세서에 논의된 기술의 맥락에서, 이러한 미래 네트워킹을 위한 여러 가지 혁신은 이러한 모든 계층이 방해받지 않고 성장하고 연결된 리소스를 검색 및 액세스할 수 있도록 하고 연결된 리소스를 숨기고 구획화하는 기능을 지원해야 할 필요성을 해결할 것이다. 임의의 수의 네트워크 프로토콜 및 통신 표준이 사용될 수 있으며, 여기서 각 프로토콜 및 표준은 특정 목적을 다루도록 설계된다. 또한, 프로토콜은 위치, 시간 또는 공간에 관계없이 작동하는 사람이 액세스할 수 있는 서비스를 지원하는 패브릭의 일부이다. 혁신에는 서비스 제공 및 하드웨어 및 소프트웨어와 같은 관련 인프라, 보안 강화, 및 서비스 레벨 및 서비스 제공 계약에 명시된 서비스 품질(QoS) 조항에 따른 서비스 공급이 포함된다. 이해되는 바와 같이, 도 12 및 도 13에 도입된 것과 같은 IoT 장치 및 네트워크의 사용은 유선 및 무선 기술의 조합을 포함하는 이기종 연결 네트워크에서 여러 가지 새로운 과제를 제시한다.
도 12는 IoT 장치(1204)를 포함하는 다수의 사물 인터넷(IoT) 네트워크에 사용될 수 있는 도메인 토폴로지의 단순화된 도면을 구체적으로 제공하며, IoT 네트워크(1256, 1258, 1260, 1262)는 백본 링크(1202)를 통해 각각의 게이트웨이(1254)에 연결된다. 예를 들어, 다수의 IoT 장치(1204)는 게이트웨이(1254)와 통신할 수 있고 게이트웨이(1254)를 통해 서로 통신할 수 있다. 도면을 단순화하기 위해, 모든 IoT 장치(1204) 또는 통신 링크(예컨대, 링크(1216, 1222, 1228 또는 1232)가 표시된 것은 아니다. 백본 링크(1202)는 광 네트워크를 포함하는 임의의 수의 유선 또는 무선 기술을 포함할 수 있고, LAN(Local Area Network), WAN(Wide Area Network) 또는 인터넷의 일부일 수 있다. 또한, 이러한 통신 링크는 다양한 장치의 상호연결을 용이하게 하는 MUXing/deMUXing 컴포넌트의 사용을 포함하여, IoT 장치(1204)와 게이트웨이(1254) 양자 사이의 광 신호 경로를 용이하게 한다.
네트워크 토폴로지는 블루투스 저에너지(BLE) 링크(1222)를 사용하는 네트워크(1256)가 제공된 메시 네트워크와 같은 임의의 수의 IoT 네트워크 유형을 포함할 수 있다. 존재할 수 있는 다른 유형의 IoT 네트워크는 IEEE 802.11(Wi-Fi®) 링크(1228)를 통해 IoT 장치(1204)와 통신하는 데 사용되는 무선 로컬 영역 네트워크(WLAN) 네트워크(1258), LTE/LTE-A(4G) 또는 5G 셀룰러 네트워크를 통해 IoT 장치(1204)와 통신하는 데 사용되는 셀룰러 네트워크(1260), 및 저전력 광역(LPWA) 네트워크(1262), 예를 들어 LoRa 연합에 의해 공표된 LoRaWan 사양과 호환되는 LPWA 네트워크, 또는 IETF(인터넷 엔지니어링 태스크 포스)에 의해 공표된 사양과 호환되는 LPWAN(Low Power Wide-Area Networks) 네트워크를 통한 IPv6를 포함할 수 있다. 또한, 각 IoT 네트워크는 LTE 셀룰러 링크, LPWA 링크, 또는 예컨대, Zigbee®과 같은 IEEE 802.15.4 표준 기반 링크와 같은 임의의 수의 통신 링크를 사용하여 외부 네트워크 제공자(예컨대, 계층 2 또는 계층 3 제공자)와 통신할 수 있다. 각각의 IoT 네트워크는 또한 CoAP(Constrained Application Protocol)와 같은 다양한 네트워크 및 인터넷 애플리케이션 프로토콜을 사용하여 작동할 수 있다. 각각의 IoT 네트워크는 연결된 장치 및 네트워크의 클러스터 트리를 형성하는 링크 체인을 제공하는 조정자 장치와 통합될 수도 있다.
이러한 IoT 네트워크 각각은 본 명세서에 설명된 것과 같은 새로운 기술적 특징에 대한 기회를 제공할 수 있다. 개선된 기술과 네트워크는 IoT 네트워크를 "포그" 장치로 사용하거나 "에지" 컴퓨팅 시스템에 통합하는 것을 포함하여, 장치 및 네트워크의 기하급수적인 성장을 가능하게 할 수 있다. 이러한 개선된 기술의 사용이 증가함에 따라, 직접적인 인간 개입 없이도 자체 관리, 기능 진화 및 협업을 위한 IoT 네트워크가 개발될 수 있다. 심지어 개선된 기술을 통해서는, IoT 네트워크가 중앙 집중식 제어 시스템 없이 작동할 수도 있다. 따라서, 본 명세서에 설명된 개선된 기술은 현재 구현을 훨씬 뛰어 넘는 네트워크 관리 및 운영 기능을 자동화하고 향상시키는 데 사용될 수 있다.
일 예에서, 예컨대 백본 링크(1202)를 통한 IoT 장치(1204) 간의 통신은 인증, 권한 부여 및 과금(AAA)을 위한 분산 시스템에 의해 보호될 수 있다. 분산형 AAA 시스템에서, 분산 지불, 신용, 감사, 승인 및 인증 시스템은 상호 연결된 이기종 네트워크 인프라 전반에 걸쳐 구현될 수 있다. 이를 통해 시스템과 네트워크가 자율 운영으로 이동할 수 있다. 이러한 유형의 자율 작업에서, 머신은 인적 자원에 대해 계약을 맺고 다른 머신 네트워크와 파트너십을 협상할 수 있다. 이를 통해 측정, 측정치, 트레이서빌리티 및 추적 가능성을 제공하는 솔루션을 달성할 뿐만 아니라 개략적이고 계획된 서비스 레벨 계약에 대해 상호 목표 및 균형 잡힌 서비스 제공을 달성할 수 있다. 새로운 공급망 구조와 방법을 만들면 어떠한 인간의 개입 없이도 수 많은 서비스가 생성되고 가치를 위해 채굴되고 붕괴될 수 있다.
이러한 IoT 네트워크는 소리, 빛, 전자 교통, 얼굴 및 패턴 인식, 냄새, 진동과 같은 감지 기술을 IoT 장치 간의 자율 조직에 통합함으로써 더욱 향상될 수 있다. 감각 시스템의 통합은 계약된 서비스 목표, 조율 및 서비스 품질(QoS) 기반 스웜 및 리소스 융합에 대한 서비스 전달의 자율적인 통신 및 조정을 허용할 수 있다. 네트워크 기반 리소스 프로세싱의 개별 예 중 일부는 후속하는 것을 포함한다.
예를 들어, 메시 네트워크(1256)는 인라인 데이터-정보 변환을 수행하는 시스템에 의해 향상될 수 있다. 예를 들어, 다중 링크 네트워크를 포함하는 프로세싱 리소스들의 자체 형성 체인은 원시 데이터를 정보로 변환한 것을 효율적인 방식으로 분배할 수 있으며 자산과 리소스 및 각각의 관련 관리 간을 구별하는 기능을 배포할 수 있다. 또한, 데이터 무결성, 품질, 보증을 개선하고 데이터 신뢰도의 메트릭을 제공하기 위해 인프라 및 리소스 기반 신뢰 및 서비스 지표의 적절한 구성 요소를 삽입할 수 있다.
예를 들어, WLAN 네트워크(1258)는 다중 표준 연결을 제공하기 위해 표준 변환을 수행하는 시스템을 사용할 수 있으며, 이는 서로 다른 프로토콜을 사용하는 IoT 장치(1204)가 통신할 수 있게 한다. 추가 시스템은 보이는 인터넷 리소스와 숨겨진 인터넷 리소스를 포함하는 다중 표준 인프라 전반에 걸쳐 원활한 상호 연결을 제공할 수 있다.
예를 들어, 셀룰러 네트워크(1260)에서의 통신은 데이터를 오프로드하고, 통신을 더 많은 원격 장치로 확장하거나, 또는 이 둘 모두를 수행하는 시스템에 의해 향상될 수 있다. LPWA 네트워크(1262)는 비-인터넷 프로토콜(IP) 대 IP 상호접속, 어드레싱 및 라우팅을 수행하는 시스템을 포함할 수 있다. 또한, IoT 장치(1204) 각각은 그 장치와의 광역 통신을 위한 적절한 트랜시버를 포함할 수 있다. 또한, 각각의 IoT 장치(1204)는 추가 프로토콜 및 주파수를 사용하는 통신을 위한 다른 트랜시버를 포함할 수 있다. 이것은 도 14 및 도 15에 도시된 IoT 프로세싱 장치의 통신 환경 및 하드웨어와 관련하여 더 논의된다.
마지막으로, 클라우드 네트워크뿐만 아니라 다른 IoT 장치와 통신하기 위해 IoT 장치의 클러스터가 장착될 수 있다. 이를 통해 IoT 장치는 장치들 간에 애드-혹 네트워크를 형성할 수 있으므로, 이들 장치는 포그 장치, 포그 플랫폼 또는 포그 네트워크라고 할 수 있는 단일 장치로 작동할 수 있다. 이 구성은 도 13과 관련하여 아래에서 더 논의된다.
도 13은 네트워크 시나리오에서 포그 플랫폼으로서 동작하는 IoT 장치(장치(1302))의 메시 네트워크와 통신하는 클라우드 컴퓨팅 네트워크를 도시한다. IoT 장치의 메시 네트워크는 클라우드(1300)의 에지에서 동작하는 장치들의 네트워크로부터 구축된 포그 네트워크(1320)로 지칭될 수 있다. 다이어그램을 단순화하기 위해, 모든 IoT 장치(1302)가 라벨링되는 것은 아니다.
포그 네트워크(1320)는 다수의 IoT 장치(1302)가 예를 들어 무선 링크(1322)에 의해 서로 통신하는 대규모로 상호 연결된 네트워크로 간주될 수 있다. 포그 네트워크(1320)는 IoT 에지 장치와 클라우드 또는 데이터 센터 사이에 상주하는 것으로 간주될 수 있는 수평적, 물리적 또는 가상의 리소스 플랫폼을 구축할 수 있다. 일부 예에서, 포그 네트워크는 계층화된, 연합된 또는 분산된 컴퓨팅, 저장 및 네트워크 연결 작업을 통해 수직으로 격리되고 대기 시간에 민감한 애플리케이션을 지원할 수 있다. 그러나, 포그 네트워크는 또한 에지와 클라우드 간에 리소스와 서비스를 분배하는 데 사용될 수도 있다. 따라서, 본 문서에서 "에지", "포그" 및 "클라우드"에 대한 참조는 반드시 서로 분리되거나 배타적이지 않다.
예로서, 포그 네트워크(1320)는 OCF(Open Connectivity Foundation™)에 의해 발표된 상호접속 사양을 사용하여 촉진될 수 있다. 이 표준을 사용하면 장치가 서로를 검색하고 상호 연결을 위한 통신을 설정할 수 있다. 예를 들어, 최적화된 링크 상태 라우팅(OLSR) 프로토콜, BATMAN(the better approach to mobile ad-hoc networking) 라우팅 프로토콜, 또는 OMA LWM2M(Lightweight M2M) 프로토콜을 비롯한 다른 상호 연결 프로토콜도 사용될 수 있다.
이 예에서 3가지 유형의 IoT 장치(1302), 즉 게이트웨이(1304), 데이터 집계기(1326) 및 센서(1328)가 도시되어 있지만, IoT 장치(1302) 및 기능의 임의의 조합이 사용될 수 있다. 게이트웨이(1304)는 클라우드(1300)와 포그 네트워크(1320) 사이의 통신을 제공하는 에지 장치일 수 있고, 모션 데이터, 흐름 데이터, 온도 데이터 등과 같은 센서(1328)로부터 획득된 데이터에 대한 백엔드 프로세스 기능도 제공할 수 있다. 데이터 집계기(1326)는 임의의 수의 센서(1328)로부터 데이터를 수집하고 분석을 위한 백엔드 프로세싱 기능을 수행할 수 있다. 결과, 미가공 데이터, 또는 둘 모두는 게이트웨이(1304)를 통해 클라우드(1300)로 전달될 수 있다. 센서(1328)는 예를 들어 데이터를 수집하고 데이터를 처리할 수 있는 전체 IoT 장치(1302)일 수 있다. 일부 경우에, 센서(1328)는 예를 들어 데이터를 수집하는 기능 및 데이터 집계기(1326) 또는 게이트웨이(1304)가 데이터를 처리하도록 하는 기능이 더 제한될 수 있다.
임의의 IoT 장치(1302)로부터의 통신은 게이트웨이(1304)에 도달하기 위해 임의의 IoT 장치(1302) 사이의 편리한 경로를 따라 전달될 수 있다. 이들 네트워크에서, 상호연결의 수는 현저한 중복성을 제공하므로 많은 IoT 장치(1302)가 손실되더라도 통신이 유지될 수 있다. 또한, 메시 네트워크의 사용은, 다른 IoT 장치(1302)에 연결하는 범위가 게이트웨이(1304)에 연결하는 범위보다 훨씬 작기 때문에 매우 저전력이거나 인프라에서 멀리 떨어진 IoT 장치(1302)를 사용할 수 있게 한다.
이러한 IoT 장치(1302)로부터 제공되는 포그 네트워크(1320)는, 클라우드(1300)의 에지에 위치한 단일 장치, 예를 들어 장치 또는 플랫폼으로 작동하는 포그 네트워크로서, 서버(1306)와 같은 클라우드(1300) 내의 장치에 제공될 수 있다. 이 예에서, 포그 플랫폼에서 오는 경보는 포그 네트워크(1320) 내의 특정 IoT 장치(1302)로부터 오는 것으로 식별되지 않고 전송될 수 있다. 이러한 방식으로, 포그 네트워크(1320)는, 무엇보다도, 데이터 분석, 데이터 집계 및 머신 학습과 같은 프로세싱 또는 데이터 집약적 작업을 수행하기 위한 컴퓨팅 및 저장 리소스를 제공하는 분산 플랫폼으로 간주될 수 있다.
일부 예에서, IoT 장치(1302)는 명령형 프로그래밍 스타일을 사용하여 구성될 수 있는데, 예를 들어 각각의 IoT 장치(1302)는 특정 기능 및 통신 파트너를 갖는다. 그러나, 포그 플랫폼을 형성하는 IoT 장치(1302)는 선언적 프로그래밍 스타일로 구성될 수 있어 IoT 장치(1302)는 조건, 질의 및 장치 장애에 응답하여 필요한 리소스를 결정하는 것과 같이 자신의 동작 및 통신을 재구성할 수 있다. 예를 들어, IoT 장치(1302)에 의해 모니터링되는 장비의 서브세트의 동작에 대해 서버(1306)에 위치한 사용자로부터의 질의는 포그 네트워크(1320) 장치, 예컨대 특정 센서(1328)와 같은 IoT 장치(1302)가 질의에 응답하게 한다. 이러한 센서(1328)로부터의 데이터는 질의에 응답하기 위해 포그 네트워크(1320)에 의해 서버(1306)로 전송되기 전에 센서(1328), 데이터 집계기(1326), 또는 게이트웨이(1304)의 임의의 조합에 의해 집계되고 분석될 수 있다. 이 예에서, 포그 네트워크(1320) 내의 IoT 장치(1302)는 흐름 센서 또는 온도 센서로부터의 데이터를 추가하는 것과 같이 질의에 기초하여 사용되는 센서(1328)를 선택할 수 있다. 또한, IoT 장치(1302) 중 일부가 작동하지 않는 경우, 포그 네트워크(1320)의 다른 IoT 장치(1302)가 가능하다면 그 다른 IoT 장치(1302)는 유사한 데이터를 제공할 수 있다.
다른 예에서, 본 명세서에 설명된 동작 및 기능은 전자 프로세싱 시스템의 예시적인 형태로 IoT 또는 에지 컴퓨팅 장치에 의해 구현될 수 있으며, 그 내에서 명령어 세트 또는 시퀀스가 실행되어 전자 프로세싱 시스템으로 하여금 예시적인 실시예에 따라, 본 명세서에서 논의된 방법들 중 임의의 하나를 수행하게 한다. 장치는 개인용 컴퓨터(PC), 태블릿 PC, 개인 휴대 정보 단말기(PDA), 휴대 전화 또는 스마트폰의 양태에 의해 구현된 머신, 또는 해당 머신에 의해 수행될 동작을 지정하는 (순차적 또는 기타) 명령어를 실행할 수 있는 임의의 머신을 비롯한, IoT 장치 또는 IoT 게이트웨이일 수 있다.
또한, 위의 예에서는 단일 머신만이 묘사되고 참조될 수 있지만, 그러한 머신은 또한 명령어 세트(또는 여러 세트)를 개별적으로 또는 공동으로 실행하여 본 명세서에 설명된 임의의 하나 이상의 방법을 수행하는 머신의 임의의 집합을 포함하는 것으로 간주되어야 한다. 또한, 프로세서 기반 시스템에 대한 이러한 예는 본 명세서에 설명된 임의의 하나 이상의 방법을 수행하기 위해 명령어를 개별적으로 또는 공동으로 실행하는 프로세서, 프로세서 세트 또는 프로세싱 회로(예컨대, 컴퓨터)에 의해 제어되거나 작동되는 하나 이상의 머신의 임의의 세트를 포함하는 것으로 간주되어야 한다. 따라서, 다양한 예에서, 프로세싱(예를 들어, 프로세싱, 제어, 생성, 평가 등)를 위한 적용 가능한 수단은 이러한 프로세싱 회로에 의해 구현될 수 있다.
도 14는 다수의 사물 인터넷(IoT) 장치와 통신하는 클라우드 컴퓨팅 네트워크 또는 클라우드(1400)의 도면을 예시한다. 클라우드(1400)는 인터넷을 의미할 수 있고, LAN(Local Area Network), 기업 전용 네트워크와 같은 WAN(Wide Area Network)일 수 있다. IoT 장치는 다양한 조합으로 그룹화된 임의의 수의 다양한 유형의 장치를 포함할 수 있다. 예를 들어, 교통 통제 그룹(1406)은 도시의 거리를 따라 IoT 장치를 포함할 수 있다. 이러한 IoT 장치에는 신호등, 교통 흐름 모니터, 카메라, 기상 센서 등이 포함될 수 있다. 교통 통제 그룹(1406) 또는 다른 서브그룹은 LPWA 링크 등과 같은 유선 또는 무선 링크(1408)를 통해 클라우드(1400)와 통신할 수 있다. 또한, 유선 또는 무선 서브 네트워크(1412)는 예를 들어, 근거리 통신망, 무선 근거리 통신망 등을 통해 IoT 장치들이 서로 통신하도록 할 수 있다. IoT 장치는 클라우드(1400)와 같은 원격 위치와 통신하기 위해 게이트웨이(1410 또는 1428)와 같은 다른 장치를 사용할 수 있고, IoT 장치는 또한 하나 이상의 서버(1430)를 사용하여 클라우드(1400) 또는 게이트웨이(1410)와의 통신을 용이하게 할 수 있다. 예를 들어, 하나 이상의 서버(1430)는 근거리 통신망에서 로컬 에지 클라우드 또는 포그 구현을 지원하기 위해 중간 네트워크 노드로서 작동할 수 있다. 또한, 도시된 게이트웨이(1428)는 다양한 IoT 장치(1414, 1420, 1424)가 클라우드(1400)에서의 리소스의 할당 및 사용에 제한되거나 동적인 것과 같이 클라우드 대 게이트웨이 대 다수 에지 장치 구성(cloud-to-gateway-to-many edge devices configuration)에서 작동할 수 있다.
IoT 장치의 다른 예시적인 그룹은 특히, 원격 기상 관측소(1414), 지역 정보 단말기(1416), 경보 시스템(1418), 현금 자동 입출금기(1420), 경보 패널(1422), 또는 비상 차량(1424) 또는 기타 차량(1426)과 같은 이동 차량을 포함할 수 있다. 이들 IoT 장치 각각은 다른 IoT 장치, 서버(1404), 다른 IoT 포그 장치 또는 시스템(미도시, 그러나 도 13에 도시됨), 또는 그 조합과 통신할 수 있다. IoT 장치 그룹은 다양한 주거, 상업 및 산업 환경(개인 또는 공공 환경 모두 포함)에 배포될 수 있다.
도 14에서 볼 수 있는 바와 같이, 클라우드(1400)를 통해 다수의 IoT 장치가 통신하고 있을 수 있다. 이를 통해 서로 다른 IoT 장치가 자율적으로 다른 장치에 정보를 요청하거나 제공할 수 있다. 예를 들어, IoT 장치들의 그룹(예를 들어, 교통 통제 그룹(1406))은 인간의 개입 없이 예보를 제공할 수 있는 원격 기상 관측소(1414)의 그룹으로부터 현재 기상 예보를 요청할 수 있다. 또한, 긴급 차량(1424)은 현금 자동 인출금기(1420)에 의해 강도가 진행 중임을 경고받을 수 있다. 긴급 차량(1424)이 현금 자동 입출금기(1420)를 향해 진행함에 따라, 그것은 예를 들어 긴급 차량(1424)이 교차로에 방해받지 않고 접근할 수 있도록 충분한 시간에서 교차로의 교차 교통을 차단하기 위해 신호등이 빨간색으로 바뀌는 방식으로 교통 통제 그룹(1406)에 접근하여 해당 위치에 대한 허가를 요청할 수 있다.
원격 기상 관측소(1414) 또는 교통 통제 그룹(1406)과 같은 IoT 장치의 클러스터는 클라우드(1400)뿐만 아니라 다른 IoT 장치와 통신하도록 구성될 수 있다. 이를 통해 IoT 장치는 장치들 간에 애드-혹 네트워크를 형성할 수 있고, 그에 따라 이들은 (예를 들어, 도 13을 참조하여 위에서 설명된 바와 같이) 포그 장치 또는 시스템이라고 부를 수 있는 단일 장치로서 기능할 수 있다.
도 15는 본 명세서에 설명된 기법들을 구현하기 위해 IoT 장치(1550)에 존재할 수 있는 컴포넌트들의 예의 블록도이다. IoT 장치(1550)는 예시에 도시되거나 위의 개시에서 참조된 컴포넌트들의 임의의 조합을 포함할 수 있다. 컴포넌트는 IC, 그 일부, 개별 전자 장치, 또는 IoT 장치(1550)에 적응된 다른 모듈, 로직, 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합으로 구현되거나 더 큰 시스템의 섀시 내에 통합된 컴포넌트로서 구현될 수 있다. 또한, 도 15의 블록도는 IoT 장치(1550)의 컴포넌트의 상위 레벨 뷰를 묘사하도록 의도된다. 그러나, 도시된 컴포넌트 중 일부는 생략될 수 있고, 추가 컴포넌트가 존재할 수 있으며, 도시된 컴포넌트의 상이한 배열이 다른 구현에서 발생할 수 있다.
IoT 장치(1550)는 프로세서(1552) 형태의 프로세싱 회로를 포함할 수 있고, 이는 마이크로프로세서, 멀티-코어 프로세서, 멀티스레드 프로세서, 초저전압 프로세서, 임베디드 프로세서, 또는 다른 공지된 프로세싱 요소일 수 있다. 프로세서(1552)는 프로세서(1552) 및 다른 컴포넌트들이 단일 집적 회로, 또는 단일 패키지, 예컨대 Intel Corporation으로부터의 Edison™ 또는 Galileo™ SoC 보드 내에 형성되는 SoC(system on a chip)의 일부일 수 있다. 예로서, 프로세서(1552)는 Quark™, Atom™, i3, i5, i7, 또는 MCU-클래스 프로세서와 같은, 캘리포니아주 산타 클라라의 Intel®Architecture Core™ 기반 CPU 프로세서, 또는 Intel®로부터 입수가능한 다른 그러한 프로세서를 포함할 수 있다. 그러나, 예를 들어, 캘리포니아주 서니베일의 AMD®(Advanced Micro Devices, Inc.)로부터 입수가능한 것, 캘리포니아주 서니베일의 MIPS Technologies, Inc.로부터의 MIPS 기반 설계, ARM Holdings, Ltd. 또는 그의 고객, 또는 그들의 면허권자들 또는 사용권자로부터 라이센싱된 ARM 기반 설계와 같은, 임의의 수의 다른 프로세서가 사용될 수 있다. 프로세서들은 Apple®Inc.로부터의 A5-A13 프로세서, Qualcomm®Technologies, Inc.로부터의 Snapdragon™ 프로세서 또는 Texas Instruments, Inc.로부터의 OMAP™ 프로세서와 같은 유닛들을 포함할 수 있다.
프로세서(1552)는 인터커넥트(1556)(예를 들어, 버스)를 통해 시스템 메모리(1554)와 통신할 수 있다. 주어진 양의 시스템 메모리를 제공하기 위해 임의의 수의 메모리 장치를 사용할 수 있다. 예로서, 메모리(1554)는 DDR 또는 모바일 DDR 표준(예를 들어, LPDDR, LPDDR2, LPDDR3, 또는 LPDDR4)과 같은 JEDEC(Joint Electron Devices Engineering Council) 설계에 따른 랜덤 액세스 메모리(RAM)일 수 있다. 다양한 구현에서, 개별 메모리 장치는 단일 다이 패키지(SDP), 듀얼 다이 패키지(DDP) 또는 쿼드 다이 패키지(Q17P)와 같은 임의의 수의 상이한 패키지 유형일 수 있다. 일부 예에서 이러한 장치는 낮은 프로파일 솔루션을 제공하기 위해 마더보드에 직접 납땜될 수 있는 반면, 다른 예에서 장치는 주어진 커넥터에 의해 차례로 마더보드에 연결되는 하나 이상의 메모리 모듈로 구성된다. 다른 유형의 메모리 모듈, 예를 들어 microDIMM 또는 MiniDIMM을 포함하지만 이에 국한되지 않는 다양한 종류의 듀얼 인라인 메모리 모듈(DIMM)과 같은 임의의 수의 다른 메모리 구현이 사용될 수 있다.
데이터, 애플리케이션, 운영 체제 등과 같은 정보의 영구적 저장을 제공하기 위해, 저장소(1558)가 인터커넥트(1556)를 통해 프로세서(1552)에 연결될 수 있다. 예에서, 저장소(1558)는 SSDD(solid-state disk drive)를 통해 구현될 수 있다. 저장소(1558)에 사용될 수 있는 다른 장치들은 SD 카드, microSD 카드, xD 픽처 카드들 등과 같은 플래시 메모리 카드, 및 USB 플래시 드라이브를 포함한다. 저전력 구현에서, 저장소(1558)는 프로세서(1552)와 연관된 온-다이 메모리 또는 레지스터일 수 있다. 그러나, 일부 예에서, 저장소(1558)는 마이크로 하드 디스크 드라이브(HDD)를 이용하여 구현될 수 있다. 또한, 설명된 기술에 더하여, 또는 그 대신에, 많은 것들 중에서도 특히, 저항 변화 메모리, 상 변화 메모리, 홀로그래픽 메모리, 또는 화학 메모리와 같은, 임의의 수의 새로운 기술이 저장소(1558)에 사용될 수 있다.
컴포넌트는 인터커넥트(1556)를 통해 통신할 수 있다. 인터커넥트(1556)는 ISA(industry standard architecture), EISA(extended ISA), PCI(peripheral component interconnect), PCIx(peripheral component interconnect extended), PCIe(PCI express)를 포함하는 임의의 수의 기술들, 또는 임의의 수의 다른 기술들을 포함할 수 있다. 인터커넥트(1556)는, 예를 들어, SoC 기반 시스템에서 사용되는 사유 버스(proprietary bus)일 수 있다. 많은 것들 중에서도 특히, I2C(Inter-Integrated Circuit) 인터페이스, SPI(Serial Peripheral Interface) 인터페이스, 포인트 투 포인트 인터페이스, 및 전력 버스와 같은, 다른 버스 시스템이 포함될 수 있다.
장치에서 다른 컴포넌트 또는 네트워크로의 적용 가능한 다양한 유형의 통신이 주어지면, 장치에 의해 사용되는 적용 가능한 통신 회로는 컴포넌트(1562, 1566, 1568 또는 1570) 중 임의의 하나 이상을 포함하거나 이에 의해 구현될 수 있다. 따라서, 다양한 예에서, 통신(예를 들어, 수신, 송신 등)을 위한 적용 가능한 수단은 이러한 통신 회로에 의해 구현될 수 있다.
인터커넥트(1556)는 다른 메시 장치(1564)와의 통신을 위해, 프로세서(1552)를 메시 트랜시버(1562)에 연결할 수 있다. 메시 트랜시버(1562)는, 많은 것들 중에서도 특히, Bluetooth® Special Interest Group에 의해 정의된 BLE(Bluetooth® low energy) 표준, 또는 ZigBee® 표준을 이용하는, IEEE 802.15.4 표준 하의 2.4 기가헤르츠(GHz) 송신과 같은 임의의 수의 주파수 및 프로토콜을 사용할 수 있다. 특정 무선 통신 프로토콜을 위해 구성된 임의의 수의 무선기들이 메시 장치(1564)로의 연결을 위해 사용될 수 있다. 예를 들어, WLAN 유닛은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따라 Wi-FiTM 통신을 구현하기 위해 사용될 수 있다. 또한, 예를 들어, 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신이 무선 광역 네트워크(WWAN) 유닛을 통해 발생할 수 있다.
메시 트랜시버(1562)는 상이한 거리에서의 통신을 위해 다수의 표준 또는 무선기를 이용하여 통신할 수 있다. 예를 들어, IoT 장치(1550)는, BLE(Bluetooth Low Energy)에 기초한 로컬 트랜시버, 또는 다른 저전력 무선기를 이용하여, 예를 들어, 약 10 미터 내의 가까운 장치들과 통신하여, 전력을 절약할 수 있다. 예를 들어, 약 50 미터 내의 더 멀리 있는 메시 장치(1564)는 ZigBee 또는 다른 중간 전력 무선기들을 통해 도달될 수 있다. 양쪽 통신 기법들은 상이한 전력 레벨들에서 단일 무선기를 통해 발생할 수 있거나, 별개의 트랜시버들을 통해, 예를 들어, BLE를 사용하는 로컬 트랜시버 및 ZigBee를 사용하는 별개의 메시 트랜시버를 통해 발생할 수 있다.
로컬 또는 광역 네트워크 프로토콜을 통해 클라우드(1500) 내의 장치 또는 서비스와 통신하기 위해 무선 네트워크 트랜시버(1566)가 포함될 수 있다. 무선 네트워크 트랜시버(1566)는, 많은 것들 중에서도 특히, IEEE 802.15.4, 또는 IEEE 802.15.4g 표준들을 따르는 LPWA 트랜시버일 수 있다. IoT 장치(1550)는 Semtech 및 LoRa Alliance에 의해 개발된 LoRaWAN™(Range Wide Area Network)을 이용하여 광역에 걸쳐 통신할 수 있다. 본 명세서에서 설명된 기법들은 이들 기술로 제한되지 않고, 장거리, 낮은 대역폭 통신, 예컨대 Sigfox, 및 다른 기술들을 구현하는 임의의 수의 다른 클라우드 트랜시버들과 함께 사용될 수 있다. 또한, IEEE 802.15.4e 사양에 기술된 시간 슬롯 채널 호핑과 같은 다른 통신 기법들이 사용될 수 있다.
본 명세서에서 설명된 바와 같이, 메시 트랜시버(1562) 및 무선 네트워크 트랜시버(1566)에 대해 언급된 시스템에 더하여 임의의 수의 다른 무선 통신 및 프로토콜이 사용될 수 있다. 예를 들어, 무선 트랜시버(1562, 1566)는 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 사용하는 LTE 또는 다른 셀룰러 트랜시버를 포함할 수 있다. 또한, 네트워크 통신의 제공 및 중속 통신을 위해 Wi-Fi® 네트워크와 같은 임의의 수의 다른 프로토콜이 사용될 수 있다.
무선 트랜시버(1562 및 1566)는 임의의 수의 3GPP(3세대 파트너십 프로젝트) 사양, 특히 LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced) 및 LTE-Pro(Long Term Evolution-Advanced Pro)와 호환되는 무선기를 포함할 수 있다. 임의의 수의 다른 고정형, 이동식 또는 위성 통신 기술 및 표준과 호환되는 무선기를 선택할 수 있음을 알아야 한다. 이들은 예를 들어 5세대(5G) 통신 시스템, GSM(Global System for Mobile Communications) 무선 통신 기술, GPRS(General Packet Radio Service) 무선 통신 기술 또는 EDGE(Enhanced Data Rates for GSM Evolution) 무선 통신 기술, UMTS(Universal Mobile Telecommunications System) 통신 기술을 포함할 수 있는 임의의 셀룰러 광역 무선 통신 기술을 포함할 수 있다. 위에 나열된 표준 외에, 예를 들어 특히 ITU(International Telecommunication Union) 또는 ETSI(European Telecommunications Standards Institute)에 의해 공표된 표준에 부합하는 무선기를 포함하는 무선 네트워크 트랜시버(1566)에 대해 임의의 수의 위성 업링크 기술이 사용될 수 있다. 따라서 본 명세서에 제공된 예는 존재하하는 것 그리고 아직 공식화되지 않은 것 모두의 다양한 다른 통신 기술에 적용할 수 있는 것으로 이해된다.
네트워크 인터페이스 제어기(NIC)(1568)는 클라우드(1500) 또는 메시 장치(1564)와 같은 다른 장치에 유선 통신을 제공하기 위해 포함될 수 있다. 유선 통신은 이더넷 연결을 제공할 수 있고, 또는 CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS 또는 PROFINET과 같은 다른 유형의 네트워크에 기반을 둘 수 있다. 제2 네트워크로의 연결을 가능하게 하기 위해 추가 NIC(768), 예를 들어, 이더넷을 통해 클라우드에 통신을 제공하는 제1 NIC(768), 및 다른 유형의 네트워크를 통해 다른 장치에 통신을 제공하는 제2 NIC(768)가 포함될 수 있다.
인터커넥트(1556)는 외부 장치 또는 서브시스템을 접속하는데 사용되는 외부 인터페이스(1570)에 프로세서(1552)를 연결할 수 있다. 외부 장치는 가속도계, 레벨 센서, 흐름 센서, 광학 광 센서, 카메라 센서, 온도 센서, GPS(global positioning system) 센서, 압력 센서, 기압 센서 등과 같은 센서(1572)를 포함할 수 있다. 외부 인터페이스(1570)는 추가로 IoT 장치(1550)를 전력 스위치, 밸브 액추에이터, 가청 사운드 생성기, 시각적 경고 장치 등과 같은 액추에이터(1574)에 접속하는데 사용될 수 있다.
일부 옵션의 예에서, 다양한 입력/출력(I/O) 장치가 IoT 장치(1550) 내에 존재하거나 그에 접속될 수 있다. 예를 들어, 센서 판독 또는 액추에이터 위치와 같은 정보를 보여주기 위해 디스플레이 또는 다른 출력 장치(1584)가 포함될 수 있다. 입력을 수용하기 위해 터치 스크린 또는 키패드와 같은 입력 장치(1586)가 포함될 수 있다. 출력 장치(1586)는, 이진 상태 지시기(예를 들어, LED(light-emitting diode)) 및 다중 문자 시각적 출력과 같은 단순한 시각적 출력, 또는 디스플레이 스크린(예를 들어, LCD 스크린)과 같은 더 복잡한 출력을 포함하는 임의의 수의 오디오 또는 시각적 디스플레이 형식을 포함할 수 있고, 문자, 그래픽, 멀티미디어 객체 등의 출력이 IoT 장치(1550)의 동작으로부터 발생되거나 생성된다.
배터리(1576)는 IoT 장치(1550)에 전력을 공급할 수 있지만, IoT 장치(1550)가 고정된 위치에 장착되는 예에서, 이는 전력망에 연결된 전원을 가질 수도 있다. 배터리(1576)는 리튬 이온 배터리, 또는 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리와 같은 금속-공기 배터리 등일 수 있다.
배터리(1576)의 충전 상태(SoCh)를 추적하기 위해 IoT 장치(1550)에 배터리 모니터/충전기(1578)가 포함될 수 있다. 배터리 모니터/충전기(1578)는 배터리(1576)의 헬쓰 상태(state of health)(SoH) 및 기능 상태(SoF)와 같은 고장 예측을 제공하기 위해 배터리(1576)의 다른 파라미터를 모니터링하기 위해 사용될 수 있다. 배터리 모니터/충전기(1578)는 Linear Technologies로부터의 LTC4020 또는 LTC2990과 같은 배터리 모니터링 집적 회로, 아리조나주 피닉스의 ON Semiconductor로부터의 ADT7488A, 또는 텍사스주 달라스의 Texas Instruments로부터의 UCD90xxx 패밀리로부터의 IC를 포함할 수 있다. 배터리 모니터/충전기(1578)는 배터리(1576)에 관한 정보를 인터커넥트(1556)를 통해 프로세서(1552)에 전달할 수 있다. 배터리 모니터/충전기(1578)는 프로세서(1552)가 배터리(1576)의 전압 또는 배터리(1576)로부터의 전류 흐름을 직접 모니터링하는 것을 가능하게 하는 아날로그-디지털(ADC) 컨버터를 또한 포함할 수 있다. 배터리 파라미터는 송신 주파수, 메시 네트워크 동작, 감지 주파수 등과 같은, IoT 장치(1550)가 수행할 수 있는 액션을 결정하기 위해 사용될 수 있다.
전력망에 연결된 전력 블록(1580), 또는 다른 전원이 배터리(1576)를 충전하기 위해 배터리 모니터/충전기(1578)에 연결될 수 있다. 일부 예에서, 전력 블록(1580)은 무선 전력 수신기로 대체되어, 예를 들어, IoT 장치(1550) 내의 루프 안테나를 통해 무선으로 전력을 획득할 수 있다. 많은 것들 중에서도 특히, 캘리포니아주 밀피타스의 Linear Technologies로부터의 LTC4020 칩과 같은 무선 배터리 충전 회로가 배터리 모니터/충전기(1578)에 포함될 수 있다. 특정 충전 회로는 배터리(1576)의 크기, 및 따라서 요구되는 전류에 기초하여 선택될 수 있다. 충전은, 많은 것들 중에서도 특히, Airfuel Alliance에 의해 공포된 Airfuel 표준, Wireless Power Consortium에 의해 공포된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 공포된 Rezence 충전 표준을 이용하여 수행될 수 있다.
저장소(1558)는 본 명세서에서 설명된 기법을 구현하기 위한 소프트웨어, 펌웨어 또는 하드웨어 커맨드의 형식으로 된 명령어(1582)를 포함할 수 있다. 그러한 명령어(1582)가 메모리(1554) 및 저장소(1558)에 포함된 코드 블록으로서 도시되어 있지만, 코드 블록 중 임의의 것이, 예를 들어, ASIC(application specific integrated circuit)에 내장된 하드와이어드 회로로 대체될 수 있다는 것을 이해할 수 있다.
예에서, 메모리(1554), 저장소(1558), 또는 프로세서(1552)를 통해 제공되는 명령어(1582)는 프로세서(1552)가 IoT 장치(1550)에서 전자 동작을 수행하도록 지시하는 코드를 포함하는 비일시적 머신 판독 가능 매체(1560)로서 구현될 수 있다. 프로세서(1552)는 인터커넥트(1556)를 통해 비일시적 머신 판독 가능 매체(1560)에 액세스할 수 있다. 예를 들어, 비일시적 머신 판독 가능 매체(1560)는 도 15의 저장소(1558)에 대해 설명된 장치에 의해 구현될 수 있고, 또는 광 디스크, 플래시 드라이브 또는 임의의 수의 기타 하드웨어 장치와 같은 특정 저장 장치를 포함할 수 있다. 비일시적 머신 판독 가능 매체(1560)는 예를 들어 앞서 설명된 동작 및 기능의 흐름도(들) 및 블록도(들)과 관련하여 설명된 바와 같이 동작의 특정 시퀀스 또는 흐름을 수행하도록 프로세서(1552)에 지시하는 명령을 포함할 수 있다.
또한 특정 예에서, 프로세서(1552) 상의 명령어(1582)(개별적으로, 또는 머신 판독가능 매체(1560)의 명령어(1582)와 조합하여)는 TEE(trusted execution environment)(1590)의 실행 또는 동작을 구성할 수 있다. 예를 들어, TEE(1590)는 명령의 보안 실행 및 데이터에 대한 보안 액세스를 위해 프로세서(1552)에 액세스할 수 있는 보호 영역으로 작동한다. TEE(1590)의 다양한 구현, 및 프로세서(1552) 또는 메모리(1554)의 수반되는 보안 영역은 예를 들어 Intel® SGX(Software Guard Extensions) 또는 ARM® TrustZone® 하드웨어 보안 확장, Intel® ME(Management Engine) 또는 인텔® CSME(Converged Security Manageability Engine)을 사용해서 제공될 수 있다. 보안 강화, 하드웨어 신뢰 기반, 신뢰 또는 보호되는 동작의 다른 측면은 TEE(1590) 및 프로세서(1552)를 통해 장치(1550)에서 구현될 수 있다.
더 일반적인 레벨에서, 에지 컴퓨팅 시스템은 에지 클라우드(710)에서 작동하는 임의의 수의 배치를 포함하도록 설명될 수 있으며, 이는 클라이언트 및 분산 컴퓨팅 장치로부터 조정을 제공한다. 도 16은 예시를 위해 에지 컴퓨팅 환경 사이에 배치된 분산 컴퓨팅 계층의 추가의 추상 개요를 제공한다.
도 16은 네트워크의 계층들에 걸쳐 분산되어 있는, 하나 이상의 클라이언트 컴퓨팅 노드(1602), 하나 이상의 에지 게이트웨이 노드(1612), 하나 이상의 에지 집계 노드(1622), 하나 이상의 코어 데이터 센터(1632) 및 글로벌 네트워크 클라우드(1642) 사이에 분산된 다중 이해관계자 엔티티에 에지 서비스 및 애플리케이션을 제공하기 위한 에지 컴퓨팅 시스템을 일반적으로 도시한다. 에지 컴퓨팅 시스템의 구현은 원격통신 서비스 제공자(“텔코” 또는 “TSP”), 사물 인터넷 서비스 제공자, 클라우드 서비스 제공자(CSP), 기업 엔터티 또는 임의의 다른 수의 엔터티에 제공되거나 이들을 대신하여 제공될 수 있다.
에지 컴퓨팅 시스템의 각 노드 또는 장치는 계층(1610, 1620, 1630, 1640, 1650)에 대응하는 특정 계층에 위치한다. 예를 들어, 클라이언트 컴퓨팅 노드(1602)는 각각 엔드포인트 계층(1610)에 위치하지만, 에지 게이트웨이 노드(1612) 각각은 에지 컴퓨팅 시스템의 에지 장치 계층(1620)(로컬 레벨)에 위치한다. 또한, 에지 집계 노드(1622) (및/또는 포그 네트워킹 구성(1626)과 함께 또는 그 사이에서 배열되거나 동작되는 경우라면, 포그 장치(1624))는 네트워크 액세스 계층(1630)(중간 레벨)에 위치한다. 일반적으로 포그 컴퓨팅(또는 "포깅(fogging)")은, 전형적으로 조정된 분산 또는 다중 노드 네트워크에서, 클라우드 컴퓨팅을 엔터프라이즈 네트워크의 에지로 확장하는 것을 지칭한다. 일부 형태의 포그 컴퓨팅은 클라우드 컴퓨팅 위치를 대신하여, 최종 장치와 클라우드 컴퓨팅 데이터 센터 사이에서 컴퓨팅, 저장 및 네트워킹 서비스의 배포를 제공한다. 그러한 형태의 포그 컴퓨팅은 본 명세서에서 논의된 바와 같은 에지 컴퓨팅과 일치하는 동작을 제공하며; 본 명세서에서 논의된 에지 컴퓨팅 양상의 다수는 포그 네트워크, 포깅 및 포그 구성에도 적용 가능하다. 또한, 본 명세서에서 논의되는 에지 컴퓨팅 시스템의 양상은 포그로서 구성될 수 있거나, 또는 포그의 양상은 에지 컴퓨팅 아키텍처에 통합될 수 있다.
코어 데이터 센터(1632)는 코어 네트워크 계층(1640)(예컨대, 지역 또는 지리적 중심 레벨)에 위치하는 반면, 글로벌 네트워크 클라우드(1642)는 클라우드 데이터 센터 계층(1650)(예컨대, 국가 또는 전 세계 계층)에 위치한다. "코어"의 사용은 다수의 에지 노드 또는 컴포넌트에 의해 액세스 가능한 중앙집중식 네트워크 위치 - 네트워크에서 더 깊은 곳 - 의 용어로서 제공되지만, "코어"가 반드시 "중심" 또는 네트워크의 가장 깊은 위치를 지정하는 것은 아니다. 따라서, 코어 데이터 센터(1632)는 에지 클라우드(710) 내부에, 에지 클라우드(710)에, 또는 그 근처에 위치할 수 있다.
클라이언트 컴퓨팅 노드(1602), 에지 게이트웨이 노드(1612), 에지 집계 노드(1622), 코어 데이터 센터(1632), 글로벌 네트워크 클라우드(1642)의 예시적인 수가 도 16에 도시되어 있지만, 에지 컴퓨팅 시스템은 각 계층에 더 많거나 더 적은 수의 장치 또는 시스템을 포함할 수 있음을 이해해야 한다. 또한, 도 16에 도시된 바와 같이, 각 계층(1610, 1620, 1630, 1640, 1650)의 컴포넌트의 수는 일반적으로 각각의 하위 레벨에서(즉, 엔드포인트에 더 가까이 이동할 때) 증가한다. 이와 같이, 하나의 에지 게이트웨이 노드(1612)는 다수의 클라이언트 컴퓨팅 노드(1602)를 서비스할 수 있고, 하나의 에지 집계 노드(1622)는 다수의 에지 게이트웨이 노드(1612)를 서비스할 수 있다.
본 명세서에서 제공된 예와 일관하여, 각각의 클라이언트 컴퓨팅 노드(1602)는 데이터의 생산자 또는 소비자로서 통신할 수 있는 임의의 유형의 엔드포인트 컴포넌트, 장치, 기기 또는 다른 사물로서 구현될 수 있다. 또한, 에지 컴퓨팅 시스템(1600)에서 사용되는 "노드" 또는 "장치"라는 레이블은 그러한 노드 또는 장치가 반드시 클라이언트 또는 에이전트/미니언/팔로워 역할로 동작한다는 것을 의미하지는 않고, 오히려 에지 컴퓨팅 시스템(1600)의 임의의 노드 또는 장치는 에지 클라우드(710)를 용이하게 하거나 사용하는 별개의 또는 접속된 하드웨어 또는 소프트웨어 구성을 포함하는 개별 엔티티, 노드 또는 서브시스템을 지칭한다.
이와 같이, 에지 클라우드(710)는 계층(1620,1630)의 에지 게이트웨이 노드(1612) 및 에지 집계 노드(1622)에 의해 그리고 이러한 노드 내에서 각기 동작되는 네트워크 컴포넌트 및 기능적 특징으로부터 형성된다. 에지 클라우드(710)는 도 16에서 클라이언트 컴퓨팅 노드(1602)로서 도시되는, 무선 액세스 네트워크(RAN) 가능 엔드포인트 장치(예컨대, 모바일 컴퓨팅 장치, IoT 장치, 스마트 장치 등)에 근접하게 위치한 에지 컴퓨팅 및/또는 저장 리소스를 제공하는 임의의 유형의 네트워크로서 구현될 수 있다. 다시 말해서, 에지 클라우드(710)는 엔드포인트 장치와 통상의 모바일 네트워크 액세스 포인트를 연결하여, 캐리어 네트워크(예컨대, 글로벌 모바일 통신 시스템(Global System for Mobile Communications: GSM) 네트워크, 롱 텀 에볼루션(Long-Term Evolution: LTE) 네트워크, 5G/6G 네트워크 등)를 비롯한 서비스 제공자 코어 네트워크로의 진입 지점(ingress point)으로서 역할을 하면서 저장소 및/또는 컴퓨팅 능력을 또한 제공하는 "에지"로서 구상될 수 있다. 다른 유형 및 형태의 네트워크 액세스(예컨대, Wi-Fi, 장거리 무선 네트워크)가 또한 이러한 3GPP 캐리어 네트워크 대신에 또는 이와 결합하여 이용될 수 있다.
일부 예에서, 에지 클라우드(710)는 특정 기능을 수행하도록 리소스 및 서비스를 분배하는 시스템 레벨의 수평적인 분산 아키텍처로서 구현될 수 있는 포그 네트워킹 구성(1626)(예컨대, 포그 장치(1624)의 네트워크, 상세히 도시되지 않음)의 일부를 형성하거나 그렇지 않으면 포그 네트워킹 구성으로의 진입 지점 또는 이를 가로지르는 진입 지점을 제공할 수 있다. 예를 들어, 포그 장치(1624)의 조정되고 분산된 네트워크는 IoT 시스템 배열의 컨텍스트에서 컴퓨팅, 저장, 제어 또는 네트워킹의 양상을 수행할 수 있다. 다른 네트워킹되고, 집계되고 분산된 기능이 클라우드 데이터 센터 계층(1650)와 클라이언트 엔드포인트(예컨대, 클라이언트 컴퓨팅 노드(1602)) 사이의 에지 클라우드(710)에서 존재할 수 있다. 이러한 기능 중 일부는 다수의 이해관계자를 위해 조율된 가상 에지 및 가상 서비스의 사용을 비롯한, 네트워크 기능 또는 서비스 가상화의 컨텍스트에서 다음 섹션에서 논의된다.
에지 게이트웨이 노드(1612) 및 에지 집계 노드(1622)는 다양한 에지 서비스 및 보안을 클라이언트 컴퓨팅 노드(1602)에 제공하기 위해 협력한다. 더욱이, 각각의 클라이언트 컴퓨팅 노드(1602)가 고정적 또는 이동적일 수 있기 때문에, 각각의 에지 게이트웨이 노드(1612)는 대응하는 클라이언트 컴퓨팅 노드(1602)가 지역 여기저기로 이동함에 따라 다른 에지 게이트웨이 장치와 협력하여 현재 제공되는 에지 서비스, 및 보안을 전파할 수 있다. 이를 위해, 에지 게이트웨이 노드(1612) 및/또는 에지 집계 노드(1622) 각각은 다수의 서비스 제공자, 및 다수의 소비자로부터의 (또는 이들을 위해 호스팅되는) 서비스가 단일 또는 다수의 컴퓨팅 장치에 걸쳐 지원되고 조정될 수 있는 다중 테넌시(multiple tenancy) 및 다중 이해관계자 구성을 지원할 수 있다.
도 17은 도 3의 예시적인 컴퓨터 판독가능 명령어(282)와 같은 소프트웨어를, 예시적인 프로세서 플랫폼(들)(1700) 및/또는 예시적인 연결된 에지 장치(262)와 같은 하나 이상의 장치로 배포하기 위한 예시적인 소프트웨어 배포 플랫폼(1705)을 예시한다. 예시적인 소프트웨어 배포 플랫폼(1705)은 소프트웨어를 저장하고 다른 컴퓨팅 장치(예를 들어, 제3자, 도 3의 예시적인 연결된 에지 장치(262))에 전송할 수 있는 임의의 컴퓨터 서버, 데이터 설비, 클라우드 서비스 등에 의해 구현될 수 있다. 예시적인 연결된 에지 장치는 고객, 클라이언트, 관리 장치(예컨대, 서버), 제3자(예컨대, 소프트웨어 배포 플랫폼(1705)를 소유 및/또는 운영하는 엔티티의 고객)일 수 있다. 예시적인 연결된 에지 장치는 상업용 및/또는 가정용 자동화 환경에서 작동할 수 있다. 일부 예들에서, 제3자는 도 3의 예시적인 컴퓨터 판독가능 명령어(282)와 같은 소프트웨어의 개발자, 판매자, 및/또는 라이선스 제공자이다. 제3자는 사용 및/또는 재판매 및/또는 하위 라이선스를 위해 소프트웨어를 구매 및/또는 라이선스하는 소비자, 사용자, 소매업체, OEM 등이 될 수 있다. 일부 예에서, 배포된 소프트웨어는, (예컨대, 물 분배 제어(예를 들어, 펌프), 전기 분배 제어(예컨대, 릴레이) 등을 담당하는 물리적으로 분리된 IoT 장치인) 지리적으로 및/또는 논리적으로 서로 분리된 하나 이상의 장치(예컨대, 연결된 에지 장치)를 식별하도록 하나 이상의 사용자 인터페이스(UI) 및/또는 그래픽 사용자 인터페이스(GUI)가 디스플레이되게 한다.
도 17의 예시된 예에서, 소프트웨어 배포 플랫폼(1705)은 하나 이상의 서버 및 하나 이상의 저장 장치를 포함한다. 저장 장치는 앞서 설명한 바와 같이, 도 3의 예시적인 컴퓨터 판독가능 명령어(282)에 대응할 수 있는 컴퓨터 판독가능 명령어(282)를 저장한다. 예시적인 소프트웨어 배포 플랫폼(1705)의 하나 이상의 서버는 위에서 설명된 임의의 하나 이상의 인터넷 및/또는 임의의 예시적인 네트워크(295)에 대응할 수 있는 네트워크(1710)와 통신하고 있다. 일부 예에서, 하나 이상의 서버는 상업적 거래의 일부로서 요청 당사자에게 소프트웨어를 전송하라는 요청에 응답한다. 소프트웨어의 배송, 판매 및/또는 라이선스에 대한 지불은 소프트웨어 배포 플랫폼의 하나 이상의 서버에 의해 및/또는 제3자 지불 엔티티를 통해 처리될 수 있다. 서버는 구매자 및/또는 라이선스 제공자가 소프트웨어 배포 플랫폼(1705)으로부터 컴퓨터 판독가능 명령어(282)를 다운로드할 수 있게 한다. 예를 들어, 도 3의 예시적인 컴퓨터 판독가능 명령어(282)에 대응할 수 있는 소프트웨어는 이 소프트웨어를 구현하도록 컴퓨터 판독가능 명령어(282)를 실행하는 예시적인 프로세서 플랫폼(들)(1700)(예를 들어, 예시적인 연결된 에지 장치)에 다운로드될 수 있다. 일부 예에서, 소프트웨어 배포 플랫폼(1705)의 하나 이상의 서버는 예시적인 컴퓨터 판독가능 명령어(282)의 요청 및 전송이 통과해야 하는 하나 이상의 보안 도메인 및/또는 보안 장치에 통신 가능하게 연결된다. 일부 예에서, 소프트웨어 배포 플랫폼(1705)의 하나 이상의 서버는, 최종 사용자 장치에서 개선, 패치, 업데이트 등이 소프트웨어에 배포 및 적용되는 것을 보장하기 위해 소프트웨어(예를 들어, 도 3의 예시적인 컴퓨터 판독 가능 명령어(282))에 대한 업데이트를 주기적으로 제공, 전송 및/또는 강제한다.
도 17의 예시된 예에서, 컴퓨터 판독 가능 명령어(282)는 특정 포맷으로 소프트웨어 배포 플랫폼(1705)의 저장 장치에 저장된다. 컴퓨터 판독 가능 명령어의 포맷은 특정 코드 언어(예컨대, 자바, 자바스크립트, 파이썬, C, C#, SQL, HTML 등) 및/또는 특정 코드 상태(예컨대, 컴파일되지 않은 코드(예를 들어, ASCII), 해석된 코드, 링크된 코드, 실행 가능한 코드(예를 들어, 바이너리) 등))를 포함하지만 이에 국한되지는 않는다. 일부 예에서, 소프트웨어 배포 플랫폼(1705)에 저장된 컴퓨터 판독 가능 명령어(282)는 예시적인 프로세서 플랫폼(들)(1700)에 전송될 때 제1 포맷으로 되어 있다. 일부 예에서, 제1 포맷은 프로세서 플랫폼(들)(1700)은 실행할 수 있는 실행가능 바이너리이다. 그러나, 일부 예들에서, 제1 포맷은 예시적인 프로세서 플랫폼(들)(1700) 상에서 실행을 가능하게 하기 위해 제1 포맷을 제2 포맷으로 변환하기 위해 하나 이상의 준비 작업을 필요로 하는 컴파일되지 않은 코드이다. 예를 들어, 수신 프로세서 플랫폼(들)(1700)은 프로세서 플랫폼(들)(1700) 상에서 실행될 수 있는 제2 포맷으로 실행 가능한 코드를 생성하기 위해 제1 포맷으로 컴퓨터 판독 가능 명령어(282)를 컴파일할 필요가 있을 수 있다. 또 다른 예들에서, 제1 포맷은 프로세서 플랫폼(들)(1700)에 도달하면, 명령어의 실행을 용이하게 하기 위해 해석기에 의해 해석되는 해석된 코드이다.
본 명세서에 개시된 기술의 예시적인 예가 아래에 제공된다. 기술의 실시예는 아래에 설명된 예 중 임의의 하나 이상 및 임의의 조합을 포함할 수 있다.
예 1은 비디오를 인코딩하기 위한 컴퓨팅 노드를 포함하고, 컴퓨팅 노드는 비디오 인코더를 포함하고, 이 비디오 인코더는 비디오 소스로부터 비디오의 참조 이미지를 수신하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하고, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하고, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 인코딩한다.
예 2는 예 1의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 것은 저장을 위해 참조 이미지를 메모리에 보내고, 참조 이미지가 저장될 때 참조 이미지를 인라인으로 압축하는 것을 포함한다.
예 3은 예 1 및 예 2 중 어느 하나의 주제를 포함하고, 비디오 인코더는 프로세서와, 이 프로세서에 통신 가능하게 결합된 메모리와, 데이터 저장소를 포함한다.
예 4는 예 1-3 중 어느 하나의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 손실 압축 알고리즘을 참조 이미지에 적용하는 것은 미리 결정된 임계 압축률 이하의 압축률로 손실 압축된 참조 이미지를 생성하도록 손실 압축 알고리즘을 참조 이미지에 적용하는 것을 포함하되, 임계 압축률은 50%이다.
예 5는 예 1-4 중 어느 하나의 주제를 포함하고, 비디오 인코더는 메모리의 11 메가바이트 미만을 사용하여 24비트 이미지의 1080p 비디오를 인코딩하는 것이다.
예 6은 예 1-5 중 어느 하나의 주제를 포함하고, 비디오 인코더는 복수의 비디오 소스 각각으로부터의 비디오를 동시에 인코딩하는 것이다.
예 7은 예 1-6 중 어느 하나의 주제를 포함하고, 비디오 인코더는 또한 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드에 전송한다.
예 8은 예 1-7 중 어느 하나의 주제를 포함하고, 카메라를 더 포함하며, 카메라는 비디오 소스이다.
예 9는 예 1-8 중 어느 하나의 컴퓨팅 노드를 포함하고, 비디오를 디코딩하기 위한 원격 컴퓨팅 노드를 더 포함하는 시스템을 포함하되, 비디오 인코더는 또한, 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드에 전송하고, 원격 컴퓨팅 노드는 비디오 디코더를 포함하고, 이 비디오 디코더는, 컴퓨팅 노드로부터 참조 이미지를 수신하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하고, 컴퓨팅 노드로부터 비디오의 복수의 추가 이미지를 수신하고, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩한다.
예 10은 예 1-9 중 어느 하나의 주제를 포함하고, 원격 컴퓨팅 노드는 복수의 추가 이미지에 대한 비디오 분석을 수행하기 위한 비디오 추론기를 더 포함한다.
예 11은 비디오를 디코딩하기 위한 컴퓨팅 노드를 포함하고, 컴퓨팅 노드는 비디오 디코더를 포함하고, 이 비디오 디코더는 비디오 소스로부터 비디오의 참조 이미지를 수신하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하고, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하고- 복수의 추가 이미지 각각은 참조 이미지에 기초하여 인코딩됨 -, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩한다.
예 12는 예 11의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 것은 참조 이미지를 저장을 위해 메모리에 보내고, 참조 이미지가 저장될 때 참조 이미지를 인라인으로 압축하는 것을 포함한다.
예 13은 예 11 및 예 12 중 어느 하나의 주제를 포함하고, 비디오 소스로부터의 비디오의 복수의 추가 이미지 각각은 압축 없이 참조 이미지를 사용하여 인코딩된다.
예 14는 예 11-13 중 어느 하나의 주제를 포함하고, 복수의 추가 이미지에 대한 비디오 분석을 수행하기 위한 비디오 추론기를 더 포함한다.
예 15는 예 11-14 중 어느 하나의 주제를 포함하고, 비디오 소스는 원격 컴퓨팅 노드이다.
예 16은 비디오를 인코딩하는 방법을 포함하며, 이 방법은 컴퓨팅 노드에 의해, 비디오 소스로부터 비디오의 참조 이미지를 수신하는 단계와, 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 단계와, 컴퓨팅 노드에 의해, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하는 단계와, 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 인코딩하는 단계를 포함한다.
예 17은 예 16의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 단계는 저장을 위해 참조 이미지를 메모리에 전송하는 단계와, 참조 이미지가 저장됨에 따라 인라인으로 참조 이미지를 압축하는 단계를 포함한다.
예 18은 예 16 및 예 17 중 어느 하나의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 단계는 미리 결정된 임계 압축률 이하인 압축률로 손실 압축된 참조 이미지를 생성하도록 참조 이미지에 손실 압축 알고리즘을 적용하는 단계를 포함하되, 임계 압축률은 50%이다.
예 19는 예 16-18 중 어느 하나의 주제를 포함하고, 컴퓨팅 노드에 의해, 메모리의 11 메가바이트 미만을 사용하여 24비트 이미지의 1080p 비디오를 인코딩하는 단계를 더 포함한다.
예 20은 예 16 내지 예 19 중 어느 하나의 주제를 포함하고, 컴퓨팅 노드에 의해, 복수의 비디오 소스 각각으로부터의 비디오를 동시에 인코딩하는 것을 더 포함한다.
예 21은 예 16-20 중 어느 하나의 주제를 포함하고, 컴퓨팅 노드에 의해, 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드로 전송하는 단계를 더 포함한다.
예 22는 예 16-21 중 어느 하나의 주제를 포함하되, 비디오 소스는 카메라이다.
예 23은 예 16-22 중 어느 하나의 주제를 포함하고, 컴퓨팅 노드에 의해, 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드로 전송하는 단계와, 원격 컴퓨팅 노드에 의해, 컴퓨팅 노드로부터 참조 이미지를 수신하는 단계와, 원격 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 단계와, 원격 컴퓨팅 노드에 의해, 컴퓨팅 노드로부터 비디오의 복수의 추가 이미지를 수신하는 단계와, 원격 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩하는 단계를 더 포함한다.
예 24는 예 16-23 중 어느 하나의 주제를 포함하고, 원격 컴퓨팅 노드에 의해, 복수의 추가 이미지에 대한 비디오 분석을 수행하는 단계를 더 포함한다.
예 25는 비디오를 디코딩하기 위한 방법을 포함하며, 이 방법은 컴퓨팅 노드에 의해, 비디오 소스로부터 비디오의 참조 이미지를 수신하는 단계와, 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 단계와, 컴퓨팅 노드에 의해, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하는 단계- 복수의 추가 이미지 각각은 참조 이미지에 기초하여 인코딩됨 -와, 및 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩하는 단계를 포함한다.
예 26은 예 25의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 단계는 저장을 위해 참조 이미지를 메모리에 전송하는 단계와, 참조 이미지가 저장됨에 따라 인라인으로 참조 이미지를 압축하는 단계를 포함한다.
예 27은 예 25 및 예 26 중 어느 하나의 주제를 포함하고, 비디오 소스로부터의 비디오의 복수의 추가 이미지 각각은 압축 없이 참조 이미지를 사용하여 인코딩된다.
예 28은 예 25-27 중 어느 하나의 주제를 포함하고, 컴퓨팅 노드에 의해, 복수의 추가 이미지에 대한 비디오 분석을 수행하는 단계를 더 포함한다.
예 29는 예 25-28 중 어느 하나의 주제를 포함하고, 비디오 소스는 원격 컴퓨팅 노드이다.
예 30은 복수의 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하고, 이 복수의 명령어는 컴퓨팅 노드에 의해 실행될 때 컴퓨팅 노드로 하여금, 비디오 소스로부터 비디오의 참조 이미지를 수신하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하고, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하고, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 인코딩하게 한다.
예 31은 예 30의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 것은 저장을 위해 참조 이미지를 메모리에 보내고, 참조 이미지가 저장될 때 참조 이미지를 인라인으로 압축하는 것을 포함한다.
예 32는 예 30 및 예 31 중 어느 하나의 주제를 포함하고, 손실 압축된 참조 이미지를 생성하기 위해 손실 압축 알고리즘을 참조 이미지에 적용하는 것은 미리 결정된 임계 압축률 이하의 압축률로 손실 압축된 참조 이미지를 생성하도록 손실 압축 알고리즘을 참조 이미지에 적용하는 것을 포함하되, 임계 압축률은 50%이다.
예 33은 예 30-32 중 어느 하나의 주제를 포함하되, 복수의 명령어는 컴퓨팅 노드로 하여금 메모리의 11 메가바이트 미만을 사용하여 24비트 이미지의 1080p 비디오를 인코딩하게 한다.
예 34는 예 30 내지 예 33 중 어느 하나의 주제를 포함하되, 복수의 명령어는 컴퓨팅 노드로 하여금 복수의 비디오 소스 각각으로부터의 비디오를 동시에 인코딩하게 한다.
예 35는 예 30-34 중 어느 하나의 주제를 포함하고, 여기서 복수의 명령어는 컴퓨팅 노드로 하여금 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드로 전송하게 합니다.
예 36은 복수의 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하고, 이 복수의 명령어는 컴퓨팅 노드에 의해 실행될 때 컴퓨팅 노드로 하여금, 비디오 소스로부터 비디오의 참조 이미지를 수신하고, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하고, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하고- 복수의 추가 이미지 각각은 참조 이미지에 기초하여 인코딩됨 -, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩하게 한다.
예 37은 예 36의 주제를 포함하고, 비디오 소스로부터의 비디오의 복수의 추가 이미지 각각은 압축 없이 참조 이미지를 사용하여 인코딩된다.
예 38은 예 36 및 예 37 중 어느 하나의 주제를 포함하되, 복수의 명령어는 컴퓨팅 노드로 하여금 복수의 추가 이미지에 대해 비디오 분석을 수행하게 한다.
예 39는 예 36-38 중 어느 하나의 주제를 포함하고, 비디오 소스로부터의 비디오의 복수의 추가 이미지 각각은 손실 압축된 참조 이미지를 사용하여 인코딩된다.
예 40은 비디오를 인코딩하기 위한 컴퓨팅 노드를 포함하되, 이 컴퓨팅 노드는, 컴퓨팅 노드에 의해, 비디오 소스로부터 비디오의 참조 이미지를 수신하기 위한 수단과, 손실 압축된 참조 이미지를 생성하기 위해 손실 압축 알고리즘을 참조 이미지에 적용하는 수단과, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하기 위한 수단과, 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 인코딩하기 위한 수단을 포함한다.
예 41은 예 40의 주제를 포함하되, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하기 위한 수단은 저장을 위해 참조 이미지를 메모리로 전송하기 위한 수단과, 참조 이미지가 저장됨에 따라 인라인으로 참조 이미지를 압축하기 위한 수단을 포함한다.
예 42는 예 40 및 예 41 중 어느 하나의 주제를 포함하되, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 수단은 미리 결정된 임계 압축 비율 이하로 손실 압축된 참조 이미지를 생성하도록 손실 압축 알고리즘을 참조 이미지에 적용하기 위한 수단을 포함하되, 임계 압축 비율은 50%이다.
예 43은 예 40-42 중 어느 하나의 주제를 포함하고, 메모리의 11 메가바이트 미만을 사용하여 24비트 이미지의 1080p 비디오를 인코딩하기 위한 수단을 더 포함한다.
예 44는 예 40 내지 예 43 중 어느 하나의 주제를 포함하고, 복수의 비디오 소스 각각으로부터의 비디오를 동시에 인코딩하기 위한 수단을 더 포함한다.
예 45는 예 40-44 중 어느 하나의 주제를 포함하고, 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드에 전송하기 위한 수단을 더 포함한다.
예 46은 예 40-45 중 어느 하나의 주제를 포함하되, 비디오 소스는 카메라이다.
예 47은 예 40-46 중 어느 하나의 주제를 포함하고, 참조 이미지 및 복수의 추가 이미지 각각을 원격 컴퓨팅 노드에 전송하기 위한 수단과, 원격 컴퓨팅 노드에 의해, 컴퓨팅 노드로부터 참조 이미지를 수신하기 위한 수단과, 원격 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하기 위한 수단과, 원격 컴퓨팅 노드에 의해, 컴퓨팅 노드로부터 비디오의 복수의 추가 이미지를 수신하기 위한 수단과, 원격 컴퓨팅 노드에 의해, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩하기 위한 수단을 더 포함한다.
예 48은 예 40-47 중 어느 하나의 주제를 포함하고, 원격 컴퓨팅 노드에 의해, 복수의 추가 이미지에 대한 비디오 분석을 수행하기 위한 수단을 더 포함한다.
예 49는 비디오를 디코딩하기 위한 컴퓨팅 노드를 포함하되, 이 컴퓨팅 노드는, 컴퓨팅 노드에 의해, 비디오 소스로부터 비디오의 참조 이미지를 수신하기 위한 수단과, 손실 압축된 참조 이미지를 생성하기 위해 손실 압축 알고리즘을 참조 이미지에 적용하는 수단과, 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하기 위한 수단- 복수의 추가 이미지 각각은 참조 이미지에 기초하여 인코딩됨 -과, 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩하기 위한 수단을 포함한다.
예 50은 예 49의 주제를 포함하되, 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하기 위한 수단은 저장을 위해 참조 이미지를 메모리로 전송하기 위한 수단과, 참조 이미지가 저장됨에 따라 인라인으로 참조 이미지를 압축하기 위한 수단을 포함한다.
예 51은 예 49 및 예 50 중 어느 하나의 주제를 포함하되, 비디오 소스로부터의 비디오의 복수의 추가 이미지 각각은 압축 없이 참조 이미지를 사용하여 인코딩된다.
예 52는 예 49-51 중 어느 하나의 주제를 포함하고, 복수의 추가 이미지에 대한 비디오 분석을 수행하기 위한 수단을 더 포함한다.
예 53은 예 49-52 중 어느 하나의 주제를 포함하되, 비디오 소스는 원격 컴퓨팅 노드이다.
일부 실시예에서, 선행 도면 중 하나 이상에 설명된 시스템 또는 컴포넌트 중 적어도 하나는 선행 예에 설명된 하나 이상의 작업, 기술, 프로세스 및/또는 방법을 수행하도록 구성될 수 있다. 예를 들어, 컴퓨팅 노드(102), 에지 노드(350), 에지/IoT 프로세싱 장치(1550) 등은 예 1-15 또는 40-53 중 어느 하나로서 구현될 수 있거나 예 16-29 중 어느 하나의 방법을 수행할 수 있다.

Claims (25)

  1. 비디오를 인코딩하기 위한 컴퓨팅 노드로서,
    상기 컴퓨팅 노드는 비디오 인코더를 포함하고,
    상기 비디오 인코더는,
    비디오 소스로부터 비디오의 참조 이미지를 수신하고,
    손실 압축된 참조 이미지를 생성하기 위해 상기 참조 이미지에 손실 압축 알고리즘을 적용하고,
    상기 비디오 소스로부터 상기 비디오의 복수의 추가 이미지를 수신하고,
    상기 손실 압축된 참조 이미지에 기초하여 상기 복수의 추가 이미지 각각을 인코딩하는
    컴퓨팅 노드.
  2. 제1항에 있어서,
    상기 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 것은
    저장을 위해 상기 참조 이미지를 메모리에 보내는 것과,
    상기 참조 이미지가 저장될 때 상기 참조 이미지를 인라인으로 압축하는 것을 포함하는
    컴퓨팅 노드.
  3. 제1항에 있어서,
    상기 비디오 인코더는
    프로세서와,
    상기 프로세서에 통신 가능하게 결합된 메모리와,
    데이터 저장소를 포함하는
    컴퓨팅 노드.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 손실 압축된 참조 이미지를 생성하기 위해 손실 압축 알고리즘을 참조 이미지에 적용하는 것은 미리 결정된 임계 압축률 이하의 압축률로 손실 압축된 참조 이미지를 생성하도록 상기 손실 압축 알고리즘을 상기 참조 이미지에 적용하는 것을 포함하되, 상기 임계 압축률은 50%인
    컴퓨팅 노드.
  5. 제4항에 있어서,
    상기 비디오 인코더는 메모리의 11 메가바이트 미만을 사용하여 24비트 이미지의 1080p 비디오를 인코딩하는
    컴퓨팅 노드.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 비디오 인코더는 복수의 비디오 소스 각각으로부터의 비디오를 동시에 인코딩하는
    컴퓨팅 노드.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 비디오 인코더는 또한 상기 참조 이미지 및 상기 복수의 추가 이미지 각각을 원격 컴퓨팅 노드에 전송하는
    컴퓨팅 노드.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서,
    카메라를 더 포함하되, 상기 카메라는 비디오 소스인
    컴퓨팅 노드.
  9. 제1항 내지 제3항 중 어느 한 항의 컴퓨팅 노드를 포함하는 시스템으로서,
    비디오를 디코딩하기 위한 원격 컴퓨팅 노드를 더 포함하되,
    상기 비디오 인코더는 또한, 상기 참조 이미지 및 상기 복수의 추가 이미지 각각을 상기 원격 컴퓨팅 노드에 전송하고,
    상기 원격 컴퓨팅 노드는 비디오 디코더를 포함하고, 상기 비디오 디코더는,
    상기 컴퓨팅 노드로부터 상기 참조 이미지를 수신하고,
    상기 손실 압축된 참조 이미지를 생성하기 위해 상기 참조 이미지에 상기 손실 압축 알고리즘을 적용하고,
    상기 컴퓨팅 노드로부터 상기 비디오의 복수의 추가 이미지를 수신하고,
    상기 손실 압축된 참조 이미지에 기초하여 상기 복수의 추가 이미지 각각을 디코딩하는
    시스템.
  10. 제9항에 있어서,
    상기 원격 컴퓨팅 노드는 상기 복수의 추가 이미지에 대한 비디오 분석을 수행하기 위한 비디오 추론기를 더 포함하는
    시스템.
  11. 비디오를 디코딩하기 위한 컴퓨팅 노드로서,
    상기 컴퓨팅 노드는 비디오 디코더를 포함하고,
    상기 비디오 디코더는
    비디오 소스로부터 비디오의 참조 이미지를 수신하고,
    손실 압축된 참조 이미지를 생성하기 위해 상기 참조 이미지에 손실 압축 알고리즘을 적용하고,
    상기 비디오 소스로부터 상기 비디오의 복수의 추가 이미지를 수신하고- 상기 복수의 추가 이미지 각각은 상기 참조 이미지에 기초하여 인코딩됨 -,
    상기 손실 압축된 참조 이미지에 기초하여 상기 복수의 추가 이미지 각각을 디코딩하는
    컴퓨팅 노드.
  12. 제11항에 있어서,
    상기 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 것은
    상기 참조 이미지를 저장을 위해 메모리에 보내는 것과,
    상기 참조 이미지가 저장될 때 상기 참조 이미지를 인라인으로 압축하는 것을 포함하는
    컴퓨팅 노드.
  13. 제11항 또는 제12항에 있어서,
    상기 비디오 소스로부터의 상기 비디오의 복수의 추가 이미지 각각은 압축 없이 상기 참조 이미지를 사용하여 인코딩된
    컴퓨팅 노드.
  14. 제13항에 있어서,
    상기 복수의 추가 이미지에 대한 비디오 분석을 수행하기 위한 비디오 추론기를 더 포함하는
    컴퓨팅 노드.
  15. 제11항 또는 제12항에 있어서,
    상기 비디오 소스는 원격 컴퓨팅 노드인
    컴퓨팅 노드.
  16. 복수의 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 복수의 명령어는 컴퓨팅 노드에 의해 실행될 때 상기 컴퓨팅 노드로 하여금,
    비디오 소스로부터 비디오의 참조 이미지를 수신하고,
    손실 압축된 참조 이미지를 생성하기 위해 상기 참조 이미지에 손실 압축 알고리즘을 적용하고,
    상기 비디오 소스로부터 비디오의 복수의 추가 이미지를 수신하고,
    상기 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 인코딩하게 하는
    컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서,
    상기 손실 압축된 참조 이미지를 생성하기 위해 참조 이미지에 손실 압축 알고리즘을 적용하는 것은,
    저장을 위해 상기 참조 이미지를 메모리에 보내는 것과,
    상기 참조 이미지가 저장될 때 상기 참조 이미지를 인라인으로 압축하는 것을 포함하는
    컴퓨터 판독가능 저장 매체.
  18. 제16항에 있어서,
    상기 손실 압축된 참조 이미지를 생성하기 위해 손실 압축 알고리즘을 참조 이미지에 적용하는 것은 미리 결정된 임계 압축률 이하의 압축률로 상기 손실 압축된 참조 이미지를 생성하도록 상기 손실 압축 알고리즘을 상기 참조 이미지에 적용하는 것을 포함하되, 임계 압축률은 50%인
    컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서,
    상기 복수의 명령어는 상기 컴퓨팅 노드로 하여금 메모리의 11 메가바이트 미만을 사용하여 24비트 이미지의 1080p 비디오를 인코딩하게 하는
    컴퓨터 판독가능 저장 매체.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 복수의 명령어는 상기 컴퓨팅 노드로 하여금 복수의 비디오 소스 각각으로부터의 비디오를 동시에 인코딩하게 하는
    컴퓨터 판독가능 저장 매체.
  21. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 복수의 명령어는 상기 컴퓨팅 노드로 하여금 상기 참조 이미지 및 상기 복수의 추가 이미지 각각을 원격 컴퓨팅 노드로 전송하게 하는
    컴퓨터 판독가능 저장 매체.
  22. 복수의 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 복수의 명령어는 컴퓨팅 노드에 의해 실행될 때 상기 컴퓨팅 노드로 하여금,
    비디오 소스로부터 비디오의 참조 이미지를 수신하고,
    손실 압축된 참조 이미지를 생성하기 위해 상기 참조 이미지에 손실 압축 알고리즘을 적용하고,
    상기 비디오 소스로부터 상기 비디오의 복수의 추가 이미지를 수신하고- 상기 복수의 추가 이미지 각각은 상기 참조 이미지에 기초하여 인코딩됨 -,
    상기 손실 압축된 참조 이미지에 기초하여 복수의 추가 이미지 각각을 디코딩하게 하는
    컴퓨터 판독가능 저장 매체.
  23. 제22항에 있어서,
    상기 비디오 소스로부터의 상기 비디오의 복수의 추가 이미지 각각은 압축 없이 상기 참조 이미지를 사용하여 인코딩된
    컴퓨터 판독가능 저장 매체.
  24. 제23항에 있어서,
    상기 복수의 명령어는 상기 컴퓨팅 노드로 하여금 상기 복수의 추가 이미지에 대해 비디오 분석을 수행하게 하는
    컴퓨터 판독가능 저장 매체.
  25. 제22항 내지 제24항 중 어느 한 항에 있어서,
    상기 비디오 소스로부터의 상기 비디오의 복수의 추가 이미지 각각은 상기 손실 압축된 참조 이미지를 사용하여 인코딩된
    컴퓨터 판독가능 저장 매체.
KR1020210162246A 2020-12-23 2021-11-23 메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술 KR20220091363A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/132,638 2020-12-23
US17/132,638 US20210120259A1 (en) 2020-12-23 2020-12-23 Technologies for memory-efficient video encoding and decoding

Publications (1)

Publication Number Publication Date
KR20220091363A true KR20220091363A (ko) 2022-06-30

Family

ID=75491415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210162246A KR20220091363A (ko) 2020-12-23 2021-11-23 메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술

Country Status (3)

Country Link
US (1) US20210120259A1 (ko)
KR (1) KR20220091363A (ko)
DE (1) DE102021211048A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220245081A1 (en) * 2021-02-04 2022-08-04 Harman Becker Automotive Systems Gmbh Interchangeable computing nodes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8054330B2 (en) * 2004-10-12 2011-11-08 International Business Machines Corporation Apparatus and methods for establishing and managing a distributed, modular and extensible video surveillance system
US8024768B2 (en) * 2005-09-15 2011-09-20 Penthera Partners, Inc. Broadcasting video content to devices having different video presentation capabilities
US20070139557A1 (en) * 2005-12-19 2007-06-21 Eli Arad Personal computer motherboard with on-board video compression capability
US7460725B2 (en) * 2006-11-09 2008-12-02 Calista Technologies, Inc. System and method for effectively encoding and decoding electronic information
JP6049017B2 (ja) * 2010-04-07 2016-12-21 リグオリ,ヴィンチェンツォLIGUORI,Vincenzo メモリ要求低減ビデオ送信システム
CN103716691B (zh) * 2012-09-29 2017-10-27 腾讯科技(深圳)有限公司 一种视频采集方法和装置
US10798396B2 (en) * 2015-12-08 2020-10-06 Samsung Display Co., Ltd. System and method for temporal differencing with variable complexity
US10924755B2 (en) * 2017-10-19 2021-02-16 Arizona Board Of Regents On Behalf Of Arizona State University Real time end-to-end learning system for a high frame rate video compressive sensing network
US10931304B1 (en) * 2019-09-25 2021-02-23 Arm Ip Limited Sensor content encoding

Also Published As

Publication number Publication date
US20210120259A1 (en) 2021-04-22
DE102021211048A1 (de) 2022-06-23

Similar Documents

Publication Publication Date Title
US11388054B2 (en) Modular I/O configurations for edge computing using disaggregated chiplets
EP3985511A1 (en) Orchestration of meshes
US11838138B2 (en) Multi-access edge computing (MEC) billing and charging tracking enhancements
KR20210038827A (ko) 에지 컴퓨팅 환경에서의 적응적 데이터 흐름 변환
CN111953725A (zh) 边缘计算环境中的加速的自动定位
US20210119962A1 (en) Neutral host edge services
EP4155933A1 (en) Network supported low latency security-based orchestration
US20220116755A1 (en) Multi-access edge computing (mec) vehicle-to-everything (v2x) interoperability support for multiple v2x message brokers
EP4156745A1 (en) Unlicensed spectrum harvesting with collaborative spectrum sensing in next generation networks
US20230164241A1 (en) Federated mec framework for automotive services
US20210117134A1 (en) Technologies for storage and processing for distributed file systems
EP4156637A1 (en) Software defined networking with en-route computing
EP4020424A1 (en) Edge automatic and adaptive processing activations
KR20220065670A (ko) 에지 네트워킹을 이용한 확장 피어-투-피어(p2p)
US20230189319A1 (en) Federated learning for multiple access radio resource management optimizations
EP3975028A1 (en) One-touch inline cryptographic data processing
US20210320988A1 (en) Information centric network unstructured data carrier
KR20220090402A (ko) 비디오 프레임의 관심 영역에 대한 계층적 액세스
US20210152834A1 (en) Technologies for region-of-interest video encoding
KR20220091363A (ko) 메모리 효율적인 비디오 인코딩 및 디코딩을 위한 기술
US20220201320A1 (en) Video analytics using scalable video coding
WO2023081202A1 (en) Mec dual edge apr registration on behalf of edge platform in dual edge deployments
US20210320875A1 (en) Switch-based adaptive transformation for edge appliances
US20230020182A1 (en) Technologies for source degradation detection and auto-tuning of cameras
US20220415050A1 (en) Apparatus and method for increasing activation sparsity in visual media artificial intelligence (ai) applications