KR102004060B1 - 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신 - Google Patents

자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신 Download PDF

Info

Publication number
KR102004060B1
KR102004060B1 KR1020177006990A KR20177006990A KR102004060B1 KR 102004060 B1 KR102004060 B1 KR 102004060B1 KR 1020177006990 A KR1020177006990 A KR 1020177006990A KR 20177006990 A KR20177006990 A KR 20177006990A KR 102004060 B1 KR102004060 B1 KR 102004060B1
Authority
KR
South Korea
Prior art keywords
memory segment
node
data
local memory
global memory
Prior art date
Application number
KR1020177006990A
Other languages
English (en)
Other versions
KR20180039011A (ko
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 KR20180039011A publication Critical patent/KR20180039011A/ko
Application granted granted Critical
Publication of KR102004060B1 publication Critical patent/KR102004060B1/ko

Links

Images

Classifications

    • 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/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W30/00Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
    • B60W30/14Adaptive cruise control
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/0088Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Medical Informatics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Business, Economics & Management (AREA)
  • Artificial Intelligence (AREA)
  • Game Theory and Decision Science (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Traffic Control Systems (AREA)
  • Multi Processors (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 제1 데이터 스트림은 자율 주행 차량을 작동하는 특정 기능을 처리하기 위한 처리 노드들 중의 하나이다. 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행된다. 제1 데이터 스트림의 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당한다. 제1 로컬 메모리 세그먼트를 제1 전역 메모리 세그먼트에 맵핑한다. 제1 로컬 메모리 세그먼트는 제1 처리 노드를 포함한 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당된다. 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 제1 전역 메모리 세그먼트에 저장된 제1 데이터 스트림의 데이터 블록을 직접 액세스한다.

Description

자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신{EFFICIENT COMMUNICATIONS AMONGST COMPUTING NODES FOR OPERATING AUTONOMOUS VEHICLES}
본 개시의 실시예는 전반적으로 자율 주행 차량을 작동하는 것에 관한 것이다. 더 구체적으로, 본 개시의 실시예는 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신에 관한 것이다.
자율 주행 차량은 통상적으로, 수동 모드 또는 자율 주행 모드로 작동될 수 있다. 수동 모드로 작동되는 차량은 운전자의 입력에 응답한다. 자율 주행 모드로 작동할 경우, 차량은 차량용 센서를 이용하여 다양한 위치로 내비게이션할 수 있으므로, 차량이 인간과 컴퓨터 사이의 인터랙션이 가장 적은 상황 또는 승객이 전혀 없는 일부 상황에서 주행하는 것을 허용한다. 자율 주행 모드로 작동되는(예를 들어, 운전자가 없는) 차량은 탑승자, 특히 운전자들이 일부 운전에 관련된 의무에서 해방되도록 할 수 있다.
기존의 차량과 비교하면, 자율 주행 차량 자체는 컴퓨팅 기능에 대한 요구가 상당히 높다. 자율 주행 차량의 컴퓨터의 내부 아키텍처는 통상적으로, 자율 주행의 다양한 태스크(예를 들어, 센서 처리, 감지, 계획 및 제어)를 위한 프로그램을 포함하는 다수의 노드; 및 상기 노드들을 연결하고 서로 연관되는 주제에 대한 데이터를 전송하는 통신 채널로 구성된다.
자율 주행 차량의 유용성, 사용자 체험 및 안전성은 단대단 연산처리의 실시간 성능에 크게 의존하므로 노드들 사이의 통신 성능에 대한 수요도 매우 높다. 전형적인 수요는, 높은 처리량(특히 데이터 채널에 대하여), 낮은 지연(특히 제어 채널에 대하여), 낮은 프로세서 점용, 낮은 메시지 드롭율 및 기타 고급 기능(예를 들어, 영활한 통신 속도를 협상하는 기능)을 포함하나, 이에 한정되지 않는다. 통신 메커니즘과 간접적으로 연관된 기타 수요는 프로그램/프로세스 격리 및 자원 관리를 포함하고, 상기 프로그램/프로세스 격리 및 자원 관리는 시스템의 강인성과 안정성이 개선되도록 한다. 종래의 아키텍처는 이러한 수요를 만족시키지 못한다.
[해결하려는 과제]
본 개시의 실시예는 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하는 컴퓨터 실시 방법, 비일시적인 기계 판독 가능한 매체 및 데이터 처리 시스템을 제공한다.
[과제의 해결 수단]
본 개시의 일 양태에 있어서, 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하기 위한 컴퓨터 구현 방법은, 제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 상기 제1 데이터 스트림은 다른 일 처리 노드에 의해 구독될 제1 통신 주제를 표시하고, 상기 제1 처리 노드는 다수의 처리 노드들 중의 하나이고, 각 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 처리하며, 상기 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행되는 단계; 제1 요청에 응답하여, 상기 제1 데이터 스트림의 상기 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당하는 단계; 및 제1 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제1 로컬 메모리 세그먼트는 상기 제1 처리 노드를 포함하는 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당되고, 상기 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 직접 액세스하는 단계;를 포함한다.
본 개시의 다른 일 양태에 있어서, 내부에 명령어가 저장된 비일시적인 기계 판독 가능한 매체를 제공하고, 상기 명령어는 프로세서에 의해 실행될 경우 상기 프로세서로 하여금 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하는 동작을 수행하도록 하며, 상기 동작은, 제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 상기 제1 데이터 스트림은 다른 일 처리 노드에 의해 구독될 제1 통신 주제를 표시하고, 상기 제1 처리 노드는 다수의 처리 노드들 중의 하나이고, 각 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 처리하며, 상기 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행되는 단계; 제1 요청에 응답하여, 상기 제1 데이터 스트림의 상기 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당하는 단계; 및 제1 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제1 로컬 메모리 세그먼트는 상기 제1 처리 노드를 포함하는 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당되고, 상기 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 직접 액세스하는 단계;를 포함한다.
본 개시의 또 다른 일 양태에 있어서, 프로세서 및 메모리를 포함하는 데이터 처리 시스템을 제공하고, 상기 메모리는 명령어를 저장하도록 상기 프로세서에 연결되고, 상기 명령어는 상기 프로세서에 의해 실행될 경우 상기 프로세서로 하여금 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하는 동작을 수행하도록 하며, 상기 동작은, 제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 상기 제1 데이터 스트림은 다른 일 처리 노드에 의해 구독될 제1 통신 주제를 표시하고, 상기 제1 처리 노드는 다수의 처리 노드들 중의 하나이고, 각 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 처리하며, 상기 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행되는 단계; 제1 요청에 응답하여, 상기 제1 데이터 스트림의 상기 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당하는 단계; 및 제1 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제1 로컬 메모리 세그먼트는 상기 제1 처리 노드를 포함하는 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당되고, 상기 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 직접 액세스하는 단계;를 포함한다.
[발명의 효과]
일 실시예에 있어서, 각 연산 태스크는 상이한 루트 디렉터리를 구비하거나 심지어 더 격리된 독립적인 노드 컨테이너(예들 들어, 가상 머신)에 의해 호스팅된 처리 노드로 수행되고, 처리 노드는 프로세스의 형식으로 실행될 수 있다. 이로써, 시스템의 안정성과 신뢰성을 유지할 수 있다. 또한 상이한 노드 컨테이너들에서, 동일한 주제에 관심이 있는 다수의 게시자와 구독자는 그들 자체의 로컬 메모리 주소 공간에 맵핑된 공유 전역 메모리를 직접 액세스함으로써 데이터를 발송하고 수신하여 높은 안정성과 신뢰성을 포함하여 보다 뛰어난 성능을 실현한다
본 개시의 실시예는 첨부된 도면의 각 도면에서 한정적이 아니고 예를 드는 방식으로 도시되어 도면의 동일한 첨부기호가 유사한 부재를 가리킨다.
도 1은 본 개시의 일 실시예에 따른 네트워크화 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 자율 주행 차량을 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이고, 상기 데이터 처리 시스템은 자율 주행 차량과 같이 사용될 수 있다.
도 4는 본 개시의 일 실시예에 따른 전역 메모리 세그먼트의 예시를 나타내는 블록도이다.
도 5a는 본 개시의 일 실시예에 따른 메모리 세그먼트의 메타데이터를 저장하기 위한 데이터 구조를 나타내는 블록도이다.
도 5b는 본 개시의 일 실시예에 따른 데이터 블록 색인을 표시하는 데이터 구조를 나타내는 블록도이다.
도 6은 본 개시의 일 실시예에 따른 자율 주행 차량을 작동하는 메모리 관리 과정을 나타내는 흐름도이다.
도 7은 본 개시의 다른 일 실시예에 따른 자율 주행 차량을 작동하는 메모리 관리 과정을 나타내는 흐름도이다.
도 8은 본 개시의 다른 일 실시예에 따른 자율 주행 차량을 작동하는 메모리 관리 과정을 나타내는 흐름도이다.
도 9는 본 개시의 일 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이다.
이하, 기술된 세부 사항들을 참조하여 본 개시의 다수의 실시예와 양태에 대해 설명하기로 하는 바, 첨부된 도면은 상기 다수의 실시예를 보여준다. 이하의 설명과 도면은 본 개시에 대한 설명일 뿐, 본 개시를 한정하는 것으로 해석하여서는 아니된다. 본 개시의 다수의 실시예들에 대한 완전한 이해를 제공하기 위해 대량의 특정된 세부 사항들에 대해 설명하였다. 그러나, 일부 실시예에서는, 본 개시의 실시예에 대한 간결한 기술을 제공하기 위해 널리 알려져 있거나 상투적인 세부 사항에 대해서는 설명하지 않는다.
본 명세서에 있어서, "일 실시예" 또는 "실시예"에 대한 언급은 해당 실시예를 결합하여 설명한 특정의 특징, 구조 또는 특성이 본 개시의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 개시의 여러 곳에 나타난 문구 "일 실시예에 있어서"는 전부 동일한 실시예를 가리켜야만 하는 것이 아니다.
일부 실시예에 따르면, 자율 주행 차량 내의 처리 노드들 사이에서 고효율적인 통신 메커니즘이 사용되고, 상기 통신 메커니즘은 상기 처리 노드를 포함하는 노드 컨테이너들 사이에서 공유되는 메모리 세그먼트를 기반으로 한다. 새로운 통신 메커니즘은 성능과 안정성 요소 방면에서 종래의 방법보다 훨씬 우수한 장점을 제공한다. 일 실시예에 있어서, 각 연산 태스크는 상이한 루트 디렉터리를 구비하거나 심지어 더 고립된 독립적인 노드 컨테이너(예들 들어, 가상 머신)에 의해 호스팅된 처리 노드로 수행되고, 처리 노드는 프로세스의 형식으로 실행될 수 있다. 이로써, 시스템의 안정성과 신뢰성을 유지할 수 있다. 노드 간에 통신의 기초로서, 통신 메커니즘은 공유 전역 메모리 세그먼트를 관리한다. 상이한 노드 컨테이너들에서, 동일한 주제에 관심이 있는 다수의 게시자와 구독자는 그들 자체의 로컬 메모리 주소 공간에 맵핑된 공유 전역 메모리를 직접 액세스함으로써 데이터를 발송하고 수신하여 높은 안정성과 신뢰성을 포함하여 보다 뛰어난 성능을 실현한다.
일 실시예에 있어서, 다른 일 처리 노드에 의해 구독될 통신 주제와 관련된 데이터 스트림의 데이터 블록을 생성하거나 게시하도록, 생산자 노드로서의 제1 처리 노드로부터 제1 요청을 수신할 경우, 상기 데이터 스트림의 데이터 블록을 저장하도록 전역 메모리로부터 전역 메모리 세그먼트가 할당된다. 제1 처리 노드는 자율 주행 차량을 작동하는 데이터 처리 시스템 내에서 실행되는 다수의 처리 노드들 중의 하나이다. 각각의 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 수행하도록 구성될 수 있다. 안정성, 신뢰성 또는 안전성을 실현하기 위해, 상기 각각의 처리 노드는 독립적인 작동 환경을 구비한 노드 컨테이너(예를 들어, 가상 머신)에서 실행된다. 전역 메모리 세그먼트가 제1 데이터 스트림에 할당되면,제1 로컬 메모리로부터 제1 로컬 메모리 세그먼트를 할당하되, 상기 제1 로컬 메모리는 제1 처리 노드를 포함하는 제1 노드 컨테이너와 관련된다.
그 다음, 제1 로컬 메모리 세그먼트는 전역 메모리의 전역 메모리 세그먼트에 맵핑되어, 제1 처리 노드가 맵핑된 제1 로컬 메모리 세그먼트를 경유하여 제1 데이터 스트림의 데이터 블록을 액세스할 수 있게 된다. 즉, 전역 메모리 세그먼트의 전역 메모리 주소 공간은 제1 노드 컨테이너의 로컬 메모리 주소 공간에 맵핑된다. 제1 처리 노드는 제1 노드 컨테이너와 전역 메모리와 사이에 보안 침입이 없이 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 간단히 액세스하여, 전역 메모리 세그먼트 내에 저장된 데이터 블록을 액세스할 수 있다.
이어서, 일 실시예에 따르면, 제1 데이터 스트림을 구독하도록 구독자 노드로서의 제2 처리 노드로부터 제2 요청을 수신할 경우, 제2 로컬 메모리로부터 제2 로컬 메모리 세그먼트를 할당하되, 상기 제2 로컬 메모리는 제2 처리 노드를 포함하는 제2 노드 컨테이너와 관련된다. 그 다음, 제2 로컬 메모리 세그먼트를 전역 메모리 세그먼트에 맵핑하여, 제2 처리 노드가 제2 노드 컨테이너와 전역 메모리 사이에 보안 침입이 없이 제2 노드 컨테이너 내의 맵핑된 제2 로컬 메모리 세그먼트를 경유하여 전역 메모리 세그먼트에 저장된 데이터 블록을 액세스할 수 있게 된다. 제1 로컬 메모리 세그먼트, 제2 로컬 메모리 세그먼트 및 전역 메모리 세그먼트는 서로 다른 메모리 장치들로부터 할당될 수 있거나, 선택적으로, 동일한 메모리 장치의 서로 다른 메모리 구역(region) 또는 영역(area)들로부터 할당될 수 있다. 일 실시예에 있어서, 제1 로컬 메모리 세그먼트, 제2 로컬 메모리 세그먼트 및 전역 메모리 세그먼트는 구체적으로 노드 컨테이너 및 메모리 관리자에 할당된 가상 메모리의 일부분으로서의 가상 메모리 세그먼트이다. 따라서, 처리 노드를 독립적인 노드 컨테이너에 포함시킴으로써, 생산자 노드에 의해 생성되고 구독자 노드에 의해 구독되는 데이터 블록을 액세스하는 효율을 크게 개선할 수 있으며, 동시에 처리 노드들 사이의 안정성, 신뢰성 및 안전성을 유지할 수 있다.
도 1은 본 개시의 일 실시예에 따른 자율 주행 차량의 네트워크 구성을 나타내는 블록도이다. 도 1을 참조하면, 네트워크 구성(100)은 네트워크(102)를 통해 통신적 방식으로 하나 또는 다수의 서버(103-104)에 연결될 수 있는 자율 주행 차량(101)을 포함한다. 비록 하나의 자율 주행 차량을 도시하였지만, 다수의 자율 주행 차량이 네트워크(102)를 통해 서로 연결되고 및/또는 서버(103-104)에 연결될 수 있다. 네트워크(102)는 임의 유형의 네트워크일 수 있고, 예를 들어, 유선 또는 무선의 근거리망(LAN), 인터넷, 셀룰러 네트워크 및 위성 네트워크와 같은 광역망(WAN) 또는 이들의 조합일 수 있다. 서버(103-104)는 임의 유형의 서버 또는 서버 클러스터일 수 있고, 예를 들어, 네트워크 또는 클라우드 서버, 애플리케이션 서버, 백엔드 서버 또는 이들의 조합일 수 있다. 서버(103-104)는 데이터 분석 서버, 콘텐츠 서버, 교통 정보 서버, 지도 및 관심지점(POI) 서버 또는 위치 서버 등일 수 있다.
자율 주행 차량은 자율 주행 모드에 처하도록 구성될 수 있는 차량을 가리키고, 상기 자율 주행 모드에서, 차량은 운전자의 입력이 극히 적거나 아예 없는 상황에서 내비게이션을 하고 환경을 통행한다. 이러한 자율 주행 차량은 센서 시스템을 포함할 수 있고, 상기 센서 시스템은 차량 작동 환경과 관련된 정보를 검측하도록 구성된 하나 또는 다수의 센서를 구비한다. 차량과 그에 관련된 제어 장치는 검측된 정보를 이용하여 내비게이션을 하고 환경을 통행한다. 자율 주행 차량(101)는 수동 모드, 완전 자율 모드 또는 부분 자율 모드로 작동할 수 있다.
일 실시예에 있어서, 자율 주행 차량(101)은 데이터 처리 시스템(110), 차량 제어 시스템(111), 무선 통신 시스템(112), 사용자 인터페이스 시스템(113), 인포테인먼트 시스템(114) 및 센서 시스템(115)을 포함하나 이에 한정되지 않는다. 자율 주행 차량(101)은 일반적인 차량 중에 포함된 일부 범용 부재(예를 들어, 엔진, 바퀴, 핸들 및 변속기 등)를 더 포함할 수 있고, 상기 범용 부재는 차량 제어 시스템(111) 및/또는 데이터 처리 시스템(110)에 의해 다양한 통신 신호 및/또는 명령(예를 들어, 가속도 신호 또는 명령, 감속도 신호 또는 명령, 조향 신호 또는 명령, 제동 신호 또는 명령 등)을 이용하여 제어한다.
부재(110-115)는 상호 연결 장치, 버스, 네트워크 또는 그들의 조합을 경유하여 통신 방식으로 상호 연결될 수 있다. 예컨대, 부재(110-115)는 제어 장치 근거리망(CAN)의 버스를 경유하여 통신 방식으로 상호 연결될 수 있다. CAN 버스는 마이크로 제어 장치 및 장치로 하여금 호스트 컴퓨터가 없는 애플리케이션에서 상호 통신이 가능하도록 설계된 차량 버스 표준이다. 상기 CAN 버스는 정보 기반의 프로토콜이고, 처음엔 자동차 내에서 사용하는 멀티 플렉스 전기 배선으로 설계되었으나, 기타 다양한 상황에서도 사용된다.
도 2를 참조하면, 일 실시예에 있어서, 센서 시스템(115)은 하나 또는 다수의 카메라(211), 글로벌 위치측정시스템(GPS) 유닛(212), 관성측정 유닛(IMU; 213), 레이더 유닛(214)과 광탐지 및 거리측정(LIDAR) 유닛(215)을 포함하나 이에 한정되지 않는다. GPS 시스템(212)은 송수신기를 포함할 수 있고, 상기 송수신기는 자율 주행 차량의 위치와 관련된 정보를 제공하도록 작동될 수 있다. IMU유닛(213)은 관성 가속도를 기반으로 자율 주행 차량의 위치와 방향 변화를 감지할 수 있다. 레이더 유닛(214)은 무선 신호를 이용하여 자율 주행 차량의 로컬 환경 내의 대상을 감지하는 시스템을 표시할 수 있다. 일부 실시예에 있어서, 센싱 대상 외에, 레이더 유닛(214)은 대상의 속도 및/또는 전진 방향을 더 감지할 수 있다. LIDAR 유닛(215)은 레이저를 이용하여 자율 주행 차량이 처한 환경 중의 대상을 감지할 수 있다. LIDAR 유닛(215)은 기타 시스템 부재 중의 하나 또는 다수의 레이저 소스, 레이저 스캐너 및 하나 또는 다수의 탐지기를 포함할 수 있다. 카메라(211)는 자율 주행 차량 주변 환경의 이미지를 촬영하는 하나 또는 다수의 장치를 포함할 수 있다. 카메라(211)는 스틸 카메라 및/또는 비디오 카메라일 수 있다. 카메라는 기계적으로 이동 가능할 수 있고, 예를 들어 카메라를 회전 플랫폼 및/또는 경사진 플랫폼에 설치함으로써 이동 가능할 수 있다.
센서 시스템(115)은 기타 센서를 더 포함할 수 있고, 예컨대 소나 센서, 적외선 센서, 조향 센서, 스로틀 센서, 제동 센서 및 오디오 센서(예를 들어, 마이크)를 포함할 수 있다. 오디오 센서는 자율 주행 차량 주변 환경으로부터의 소리를 캡처할 수 있다. 조향 센서는 핸들, 차량의 바퀴 또는 그들의 조합의 조향 각도를 감지하도록 구성될 수 있다. 스로틀 센서 및 제동 센서는 각각 차량의 스로틀 위치 및 제동 위치를 감지한다. 일부 상황에서, 스로틀 센서 및 제동 센서는 집적 스로틀/제동 센서로 통합될 수 있다.
일 실시예에 있어서, 차량 제어 시스템(111)은 조향 유닛(201), 스로틀 유닛(202; 또는 가속 유닛으로도 지칭됨), 제동 유닛(203), 컴퓨터 시각 시스템(204), 내비게이션 유닛(205; 내비게이션과 경로(pathing) 또는 내비게이션/경로 시스템으로도 지칭됨) 및 충돌 회피 유닛(206)(장애물 회피 시스템으로도 지칭됨)을 포함하나 이에 한정되지 않는다. 조향 유닛(201)은 차량의 방향 또는 진행 방향을 조정한다. 스로틀 유닛(202)은 모터 또는 엔진의 속도를 제어하고, 상기 모터 또는 엔진은 차량의 속도와 가속도를 제어한다. 상기 제동 유닛(203)은 마찰을 제공하여 차량의 바퀴 또는 타이어를 늦춤으로써 차량의 속도를 줄인다.
컴퓨터 시각 유닛 또는 시스템(204)은 하나 또는 다수의 카메라(211)에 의해 캡처된 이미지를 처리하고 분석하여 자율 주행 차량 환경 중의 대상 및/또는 특징을 식별한다. 상기 대상은 교통 신호, 차도 경계, 기타 차량, 행인 및/또는 장애물 등을 포함할 수 있다. 컴퓨터 시각 시스템(204)은 대상 인식 알고리즘, 비디오 추적 및 기타 컴퓨터 시각 기술을 사용할 수 있다. 일부 실시예에 있어서, 컴퓨터 시각 시스템(204)은 환경 지도를 제작하고 대상을 추적하고 대상의 속도를 추산하는 등 동작을 진행할 수 있다.
내비게이션 유닛 또는 시스템(205)은 자율 주행 차량의 주행 경로를 확정한다. 예를 들어, 내비게이션 시스템은 자율 주행 차량이 아래와 같은 경로를 따라 이동하도록 하는 일련의 속도와 주행 방향을 확정할 수 있다. 즉, 상기 경로는 자율 주행 차량이 전반적으로 최종 목적지로 향한 차도 기반의 경로를 따라 전진하도록 하는 동시에, 대체적으로 감지한 장애물을 회피하도록 한다. 상기 목적지는 사용자 인터페이스를 통해 진행되는 사용자 입력에 따라 설정될 수 있다. 내비게이션 시스템(205)은 자율 주행 차량이 작동하고 있는 상황에서 동적으로 주행 경로를 업데이트할 수 있다. 자율 주행 차량의 주행 경로를 확정하기 위하여, 내비게이션 시스템(205)은 GPS 시스템으로부터의 데이터와 하나 또는 다수의 지도를 병합할 수 있다.
충돌 회피 유닛 또는 시스템(206)은 자율 주행 차량 환경 중의 잠재적인 장애물을 식별하여 평가하고 회피하거나 기타 방식으로 극복한다. 예컨대, 충돌 회피 시스템(206)은, 제어 시스템 중의 하나 또는 다수의 서브 시스템을 작동하여 방향을 바꾸는 동작(swerving maneuvers), 선회 동작(turning maneuvers), 브레이킹 동작 등을 진행함으로써 자율 주행 차량의 내비게이션에서 변경을 실현할 수 있다. 충돌 회피 시스템(206)은 주변의 교통 모드와 도로 상황 등에 기반하여 실행 가능한 장애물 회피 동작을 자동적으로 확정한다. 충돌 회피 시스템(206)은 기타 센서 시스템이 방향을 틀어 진입될 자율 주행 차량에 인접된 영역 중의 차량 및 건축 장애물 등이 검출될 경우, 방향을 바꾸는 동작을 취하지 않는다. 충돌 회피 시스템(206)은 이용 가능할 뿐만 아니라 자율 주행 차량의 승객의 안전을 최대화시키는 동작을 자동적으로 선택할 수 있다. 충돌 회피 장치(206)는 자율 주행 차량의 승객실에서 최소량의 가속도를 발생시키는 것으로 예측되는 회피 동작을 선택할 수 있다. 도 2에 도시된 부재는 하드웨어, 소프트웨어 또는 그들의 조합으로 구현될 수 있음을 유의하여야 한다.
도 1을 다시 참조하면, 무선 통신 시스템(112)은 자율 주행 차량(101)과 외부 시스템(예를 들어, 장치, 센서 및 기타 차량 등) 사이의 통신이 가능하도록 한다. 예컨대, 무선 통신 시스템(112)은 직접 또는 통신 네트워크를 경유하여 하나 또는 다수의 장치와 무선으로 통신할 수 있고, 예를 들어 네트워크(102)를 통해 서버(103-104)와 통신할 수 있다. 무선 통신 시스템(112)은 임의의 셀룰러 통신 네트워크 또는 무선 근거리망(WLAN; 예컨대 WIFI)을 이용하여 기타 부재 또는 시스템과 통신한다. 무선 통신 시스템(112)은, 예를 들어 적외선 링크, 블루투스 등을 이용하여 장치(예컨대, 승객의 모바일 장치, 디스플레이 장치 및 차량(101) 내의 스피커)와 직접 통신할 수 있다. 사용자 인터페이스 시스템(113)은 차량(101) 내에 설치된 주변 장치의 일부분일 수 있고, 예를 들어 키보드, 터치 스크린 디스플레이 장치, 마이크로 폰 및 스피커 등을 포함한다.
자율 주행 차량(101)의 일부분 또는 모든 기능은 특히 자율 주행 모드에서 작동할 경우, 데이터 처리 시스템(110)에 의해 제어되거나 관리될 수 있다. 데이터 처리 시스템(110)은 필요한 하드웨어(예를 들어, 프러세서, 메모리 및 저장 장치)와 소프트웨어(예를 들어, 운영체제, 계획 및 라우팅 프로그램)를 포함하고, 상기 하드웨어와 소프트웨어는 센서 시스템(115), 제어 시스템(111), 무선 통신 시스템(112) 및/또는 사용자 인터페이스 시스템(113)으로부터 정보를 수신하고, 수신한 정보를 처리하며, 시작점으로부터 목적지까지의 노선 또는 경로를 계획하며, 그 다음 계획 및 제어 정보에 기반하여 차량(101)을 운전한다. 선택적으로, 데이터 처리 시스템(110)은 차량 제어 시스템(110)과 통합될 수 있다.
예컨대, 승객으로서의 사용자가, 예를 들어 사용자 인터페이스를 통해 트립의 시작점과 목적지를 지정할 수 있다. 데이터 처리 시스템(110)은 자율 주행 차량(101)의 기타 부재와 통신하여 트립에 관한 데이터를 획득한다. 예를 들어, 데이터 처리 시스템(110)은 서버(103-104)의 일부분으로 간주될 수 있는 위치 서버 및 지도와 POI(MPOI)서버로부터 위치 및 노선 정보를 획득할 수 있다. 위치 서버는 위치 서비스를 제공하고, MPOI 서버(105)는 지도 서비스 및 일부 위치의 POI를 제공한다. 선택적으로, 이러한 위치 및 MPOI 정보는 데이터 처리 시스템(110)의 영구 저장 장치에 로컬로 캐시될 수 있다.
자율 주행 차량(101)가 상기 노선을 따라 주행하는 동안, 데이터 처리 시스템(110)은 교통 정보 시스템 또는 서버(TIS)로부터 실시간 교통 정보를 더 획득할 수 있다. 서버(103-104)는 제3자 엔터티에 의해 작동될 수 있음을 유의하여야 한다. 선택적으로, 서버(103-104)의 기능은 데이터 처리 시스템(110)에 통합될 수 있다. 실시간 교통 정보, MPOI 정보와 위치 정보 및 센서 시스템(115)에 의해 검출 또는 감지된 실시간 로컬 환경 데이터(예를 들어, 장애물, 대상 및 근처의 차량)에 기반하여, 데이터 처리 시스템(110)은 최적 노선을 계획할 수 있고, 계획한 노선에 따라, 예를 들어 제어 시스템(111)을 통해 차량(101)을 운전함으로써 안전하게 그리고 효율적으로 지정된 목적지에 도착할 수 있다.
일 실시예에 따라, 자율 주행 차량(101)은 정보 및 엔터테인먼트를 차량(101)의 승객에게 제공하기 위한 인포테인먼트 시스템(114)을 더 포함할 수 있다. 로컬 및/또는 원격 저장된(예를 들어, 서버(103-104)에 의해 제공된) 콘텐츠 정보를 기반으로 상기 정보 및 엔터테인먼트 콘텐츠를 수신, 컴파일 그리고 표시한다. 예를 들어, 정보는 네트워크(102)를 통해 서버(103-104) 중의 임의의 일 서버로부터 실시간으로 스트리밍되고, 차량(101)의 디스플레이 장치에 표시된다. 상기 정보는, 예를 들어 하나 또는 다수의 카메라를 통해 실시간으로 캡처된 로컬 정보에 첨부(augumented)될 수 있고, 그 후 첨가된 콘텐츠는 가상 현실 방식으로 표시될 수 있다.
자율 주행 차량에는 실제의 또는 물리적인 윈도우가 존재하지 않을 수 있다. 반대로, "윈도우"(본 명세서에서 가상 윈도우라고 지칭됨)는 디스플레이 장치(즉, 차창 형상의 평면 또는 곡면 스크린 디스플레이 장치로 조형되고 선택적으로 터치 스크린을 구비함)로 표시되거나 대체된다. 디스플레이 장치는 마치 사용자가 투명 윈도우를 통해 실제 물리적인 콘텐츠를 관람하거나 보듯이, 하나 또는 다수의 적절한 카메라를 통해 실시간 동적으로 캡처한 이미지 또는 이미지 스트림(예를 들어, 비디오)을 표시한다. 각 "윈도우"(예를 들어, 디스플레이 장치)에 대해, 실시간으로 표시될 상응한 콘텐츠를 스트리밍하기 위한 대응되는 디스플레이 채널이 존재하며, 상기 대응되는 콘텐츠는 증강 현실 시스템(예를 들어, 인포테인먼트 시스템(114) 및/또는 데이터 처리 시스템(110))에 의해 집중 처리될 수 있다. 이러한 경우, 가상 현실 방식(증강 현실 방식이라고도 지칭됨)으로 인포테인먼트 시스템(114)을 통하여 첨부된 이미지를 표시한다.
예를 들어, 콘텐츠 데이터베이스 또는 원격 콘텐츠 제공자 또는 콘텐츠 서버로부터 수신된 콘텐츠 아이템은 로칼에서 카메라에 의해 캡처된 이미지에 슈퍼임포즈되어 증강 이미지(augmented image)로 될 수 있다. 다음, 자율 주행 차량(101) 내의 디스플레이 장치에 증강 이미지가 표시된다. 상기 디스플레이 장치는 차량의 일반적인 윈도우로 표현되도록 구성될 수 있다. 사용자가 디스플레이 장치를 응시할 경우, 마치 사용자가 차량의 일반적인 윈도우를 통해 물리적인 대상을 관찰하 듯이, 가상 현실 방식으로 이미지의 대상을 가상 이미지로 표시한다. 디스플레이 장치는 증강 이미지(예를 들어, 첨가된 비디오)의 스트림을 실시간으로 표시할 수 있고, 이는 증강 현실(AR) 현경과 유사하거나 증강 현실 환경을 모의하는 것이다.
일 실시예에 있어서, 위치 및 노선 정보, MPOI 정보 및/또는 실시간 교통 정보를 기반으로, 인포테인먼트 시스템(114) 및/또는 데이터 처리 시스템(110)은 현재의 교통 환경(예를 들어, MPOI)에 적합한 일부 유형의 콘텐츠를 확정한다. 시스템은 콘텐츠 색인(도시되지 않음)에서 조회 작업을 수행하여, 예를 들어 실시간 주행 정보를 기반으로 콘텐츠 아이템의 후보로서의 리스트 콘텐츠 아이템(예를 들어, 협찬 콘텐츠(sponsored content) 또는 Ad)을 식별한다.
일 실시예에 있어서,시스템은 다양한 랭킹 알고리즘을 이용하여 리스트 중의 콘텐츠 아이템에 대해 랭킹을 진행한다. 사용자의 구성 파일을 기반으로 콘텐츠 아이템에 대해 랭킹을 진행할 수 있다. 예를 들어, 사용자의 선호를 기반으로 콘텐츠 아이템에 대해 랭킹을 진행할 수 있고, 상기 사용자의 선호는 사용자의 프로필로부터 도출될 수 있다. 사용자의 과거 작동 이력을 기반으로 사용자 프로필을 컴파일할 수 있다. 일 실시예에 있어서, 시스템은 하나 또는 다수의 콘텐츠 랭킹 모델을 콘텐츠 아이템 중의 각 아이템에 적용하여 각 콘텐츠 아이템의 순위 점수를 확정한다. 순위 점수가 기정된 역치보다 높은 콘텐츠 아이템을 선택할 수 있다. 과거의 유사한 주행 환경 또는 교통 상황을 표시하는 알려진 특징의 집합을 이용하여 콘텐츠 랭킹 모델을 트레이닝할 수 있다. 그리고, 유사한 사용자의 사용자 프로필을 기반으로 콘텐츠 랭킹 모델을 트레이닝할 수 있다.
다음, 선택된 콘텐츠 아이템을 랜더링하고, 이를 자율 주행 차량 내의 디스플레이 장치에 표시한다. 일 실시예에 있어서, 시스템은 상기 선택된 콘텐츠 아이템을, 자율 주행 차량의 하나 또는 다수의 카메라를 이용하여 어느 한 시점에서 캡처한 이미지에 더 첨부한다. 일 실시예에 있어서, 이미지에 대해 이미지 인식을 수행하여 상기 이미지에 의해 표시된 콘텐츠를 도출하거나 이해한다. 예를 들어, 하나 또는 다수의 키워드를 도출하여 상기 이미지 또는 POI를 묘사할 수 있다. 콘텐츠 아이템 리스트는 나아가 이미지에 의해 표시된 하나 또는 다수의 키워드 또는 POI를 기반으로 식별될 수 있다. 그 다음, 시스템은 선택된 콘텐츠 아이템을 이미지에 첨부하여 증강 이미지를 생성하고, 상기 콘텐츠 아이템은 이미지에 슈퍼임포즈될 수 있다. 다음, 증강 이미지는 자율 주행 차량의 디스플레이 장치에 표시된다. 일부 실시예에 따라, 인포테인먼트 시스템(114)이 데이터 처리 시스템(110)에 통합될 수 있음을 유의하여야 한다.
선택적으로, 사용자는 콘텐츠 저장소 또는 데이터베이스로부터의 미리 컴파일된 콘텐츠(예를 들어, 비디오 및 영화) 리스트에서 구체적인 선택을 진행할 수 있고, 상기 콘텐츠 저장소 또는 데이터베이스는 네트워크(예컨대, 클라우드 네트워크)를 통해 콘텐츠 제공자의 콘텐츠 서버에 따라 주기적인 업데이트를 진행할 수 있다. 따라서, 사용자는 구체적으로 실시간으로 캡처한 실시간 실제적인 콘텐츠 또는 미리 랜더링된 콘텐츠(예를 들어, 데이터 저장소에서 검색됨)를 선택하여 디스플레이 장치에 표시한다. 예를 들어, 자율 주행 차량(101)이 뉴욕시에서 설중 주행을 하고 있을 경우, 사용자는 디스플레이 장치를 바꿔 마치 자율 주행 차량(101)이 화창한 날씨에 주행하고 있듯이, 하와이의 화창한 날씨를 표시할 수 있다. 콘텐츠는 다수의 디스플레이 장치(예를 들어, 다수의 윈도우)에서 협력 또는 조율 방식(즉, 가상 현실 방식)으로 표시될 수 있다.
일 실시예에 따르면, 데이터 처리 시스템(110)은 다수의 처리 노드를 포함하고, 각각의 처리 노드는 자율 주행 차량(101)을 작동하는 특정 기능을 수행한다. 상기 처리 노드는 마스터 노드에 의해 조율되거나 자율 주행 차량(101)을 작동 및 제어하기에 적합한 운영 체제(예를 들어, 로봇 운영 체제(ROS))로 호스팅된다. ROS는 이기종 컴퓨터 클러스터 상에서 운영 체제와 유사한 기능을 제공하는, 로봇 소프트웨어의 개발을 위한 소프트웨어 프레임 집합이다. ROS는 표준 운영 체제 서비스를 제공하고, 예를 들어, 하드웨어 추상화(hardware abstraction), 저 레벨 장치 제어, 일반적으로 사용되는 기능의 구현, 프로세스 사이의 메시지 전송 및 패키지 관리를 제공한다. ROS 기반의 프로세스의 실행 집합은 그래프 구조로 표시되고, 상기 그래프 구조 상에서, 센서 메시지, 제어 메시지, 상태 메시지, 계획 메시지, 작동기 메시지 및 기타 메시지를 수신하고 게시하며 멀티 플랙싱할 수 있는 노드에서 처리가 진행된다.
처리 노드로 수행되는, 자율 주행 차량(101)를 작동하는 기능은, 예를 들어, 센서 처리, 감지, 계획 및 제어, 결함 식별, 구획 및 인식, 얼굴 인식, 손짓 인식, 동작 추적, 동작 이해, 입체 시각(예를 들어, 다수의 카메라를 경유한 깊이 감지) 등을 포함할 수 있다. 이러한 기능 중의 하나 또는 다수는 하나 또는 다수의 처리 노드로 수행될 수 있다. 일 실시예에 있어서, 각각의 처리 노드는 특정 노드 컨테이너에 호스팅 및 포함되며 마스터 노드에 의해 관리된다. 노드 컨테이너는 가상 머신 또는 모래 박스 환경일 수 있고, 상기 모래 박스 환경은 독립적인 작동 환경 및 전용 처리 자원의 집합(예를 들어, 프로세서, 메모리, 저장 장치, 네트워크 스택)을 구비한다.
일 실시예에 있어서, 처리 노드는 공유되는, 메모리 기반의 통신 메커니즘을 통해 서로 통신할 수 있다. 모든 통신 데이터 또는 메시지는 전역 메모리에 저장될 수 있고, 처리 노드에 의해 그들의 상응한 노드 컨테이너 내의 그들의 맵핑된 로컬 메모리 주소 공간을 경유하여 액세스된다. 2개의 처리 노드 간의 통신 세션은 데이터(또는 메시지) 생산자 노드 및 데이터 구독자 노드 형식의 통신 주제로 구성된다. 교환될 데이터는 전역 메모리 세그먼트에 저장되고, 상기 전역 메모리 세그먼트는 마스터 노드와 관련된 전역 메모리로부터 할당된다.
생산자 노드 및 구독자 노드 중의 각각은 그들 각각의 로컬 메모리로부터 로컬 메모리 세그먼트를 할당하고, 전역 메모리 세그먼트를 그들의 로컬 메모리 세그먼트에 맵핑한다. 그 다음, 생산자 노드는 간단하게 데이터를 그에 의해 맵핑된 로컬 메모리 세그먼트에 기록할 수 있고,상기 맵핑된 로컬 메모리 세그먼트는 결국 데이터를 대응되는 전역 메모리 세그먼트에 저장한다. 유사하게, 구독자 노드는 간단하게 그에 의해 맵핑된 로컬 메모리 세그먼트로부터 데이터를 판독할 수 있고, 상기 맵핑된 로컬 메모리 세그먼트는 결국 대응되는 전역 메모리 세그먼트로부터 데이터를 판독한다. 로컬 메모리 세그먼트를 전역 메모리 세그먼트에 맵핑함으로써,처리 노드는 처리 노드를 독립적인 노드 컨테이너에 포함시켜 더욱 우수한 성능을 실현하는 동시에 처리 노드 간의 안전성을 유지할 수 있다. 통신 세션이 종료될 경우(예를 들어, 모든 데이터가 전부 판독되고, 새로운 데이터가 기록되지 않을 경우), 전역 메모리 세그먼트와 로컬 메모리 세그먼트의 맵핑은 해제될 수 있고, 이들은 대응되는 프리 메모리 풀에 해제된다.
도 3은 본 개시의 일 실시예에 따른 데이터 처리 시스템을 나타내는 블록도이고, 상기 데이터 처리 시스템은 자율 주행 차량과 함께 사용될 수 있다. 시스템(300)은 도 1의 데이터 처리 시스템(110)의 일부분으로 구현될 수 있다. 도 3을 참조하면, 시스템(300)은 마스터 노드(301)를 포함하나 이에 한정되지 않고, 상기 마스터 노드는 처리 노드(302-303)를 조율 및/또는 관리한다. 비록 여기서 2개의 처리 노드(302-303)를 도시하였으나, 더 많은 또는 더 적은 수량의 처리 노드를 구현할 수 있다. 노드(301-303)는 시스템 메모리에 로딩되고, 하나 또는 다수의 프로세서에 의해 실행될 수 있다. 처리 노드(302-303) 중의 각 노드는 자율 주행 차량(예를 들어, 도 1의 자율 주행 차량(101))을 작동하기 위한 기능 중의 하나 또는 다수의 기능을 수행할 수 있다. 상기 기능은 센서 처리, 감지, 계획 및 제어, 결함 식별, 구획 및 인식, 얼굴 인식, 손짓 인식, 동작 추적, 동작 이해, 입체 시각(예를 들어, 다수의 카메라를 경유한 깊이 감지) 등을 포함할 수 있으나 이에 한정되지 않는다.
일 실시예에 있어서, 처리 노드(302-303) 중의 각각은 특정 노드 컨테이너(해당 예시에 있어서, 각각 노드 컨테이너(311-312)임)에 호스팅될 수 있다. 노드 컨테이너는 모래 박스 작동 환경을 가리키고, 여기서 자율 주행 차량을 작동하는 하나 또는 다수의 기능을 수행하는 하나 또는 다수의 프로세스는 상기 모래 박스 작동 환경에서 실행된다. 노드 컨테이너는 물리적인 처리 자원의 집합으로 구현될 수 있는 전용 처리 자원의 집합(예를 들어, 프로세서, 메모리, 저장 장치 및 네트워크 대역폭 등)을 구비한다. 선택적으로, 노드 컨테이너와 관련된 처리 자원은 이러한 처리 자원의 논리적인 집합일 수 있고, 이러한 처리 자원은 기타 처리 노드를 호스팅하는 기타 노드 컨테이너들이 공유하는 전역 처리 자원의 집합으로부터 할당된다. 통상적으로, 노드 컨테이너는 격리된 또는 모래 박스 작동 환경을 제공하고, 격리된 또는 모래 박스 작동 환경에서, 노드 컨테이너에서 실행되는 부재는 상기 노드 컨테이너 외부에 위치한 모든 자원을 직접 액세스할 수 없다. 예를 들어, 노드 컨테이너 내에 호스팅된 처리 노드는 상기 노드 컨테이너 외부에 위치한 전역 메모리를 직접 액세스하지 못할 수 있다. 일 실시예에 있어서, 노드 컨테이너(311-312)는 각각 가상 머신으로 구현된다.
연산 처리에 있어서, 가상 머신(VM)은 특정 컴퓨터 시스템에 대한 에뮬레이션이다. 가상 머신은 진실 또는 가상 컴퓨터의 컴퓨터 구조 및 기능을 기반으로 작동하고, 그들의 작동 방식은 전문적인 하드웨어, 소프트웨어 또는 양자의 조합에 관련될 수 있다. 다양한 종류의 가상 머신이 존재하고, 각각은 다른 기능을 구비한다. 시스템 가상 머신(완전 가상화 VM라고도 지칭됨)은 타킷으로서의 진실 기계에 대한 완전 대체물 및 완전한 운영 체제의 실행에 필요한 기능 레벨을 제공한다. 하이퍼바이저는 본체 실행을 이용하여 하드 웨어를 공유하고 관리함으로써 서로 격리된 다수의 상이한 환경이 동일한 물리적 기계에서 실행되는 것을 허용한다. 현대 하이퍼바이저는 하드웨어 지원 가상화를 사용하고, 상기 하드웨어 지원 가상화는 가상화 전문 하드웨어 기능(주로 호스트 프로세서로부터 제공됨)을 사용하여 효율적이고 완전한 가상화를 제공한다. 프로세스 가상 머신은 추상적이고 플랫폼 독립적 프로그램 실행 환경을 제공함으로써 단일의 컴퓨터 프로그램을 실행하도록 설계된다. 일부 가상 머신은 상이한 구조를 에뮬레이트하기도 하고 다른 한 프로세서 또는 구조를 상대로 작성된 소프트웨어 응용 프로그램 및 운영 체제의 실행을 허용하도록 설계된다. 운영 체제 레벨의 가상화는 커널이 다수의 격리된 사용자 공간의 사례에 대한 지원을 통하여 컴퓨터 자원의 분할을 허용하고, 상기 사용자 공간의 사례는 통상적으로 컨테이너라고 지칭되며 최종 사용자에게는 실제 기계처럼 보이고 느껴질 수 있다.
도 3을 다시 참조하면, 마스터 노드(301)는 가상 머신 모니터 또는 관리자(VMM)의 일부분 또는 가상화 계층의 일부분으로 구현될 수 있다. 마스터 노드(301)는 마스터 노드 컨테이너에서 실행될 수 있거나 마스터 노드 컨테이너 내에 포함될 수 있다. 예를 들어, 마스터 노드(301)는 호스트 운영 체제에 의해 호스팅될 수 있고, 처리 노드(302-303)는 각각 게스트 운영 체제에 의해 호스팅될 수 있다. 마스터 노드(301)는 노드 컨테이너(311-312)에 호스팅된 처리 노드(302-303)를 조율하거나 관리한다. 일 실시예에 있어서, 메모리 관리자(321; 공유 메모리 통신 관리자라고도 지칭됨)는 처리 노드(302-303) 중의 메모리 사용을 관리한다. 메모리 관리자(321)는, 예를 들어 응용 프로그래밍 인터페이스(API)를 경유하여 노드 컨테이너(311-312)의 노드 관리자(322-323)와 통신한다. 노드 관리자(322-323)는 상응한 처리 노드(302-303)로의 플러그인으로 구현될 수 있다. 전술한 바와 같이, 처리 노드(302-303)는 각각 자율 주행 차량을 작동하는 특정 또는 미리 설정된 기능을 구비한다. 처리 노드(302-303)는 운영 체제(예를 들어, ROS 운영 체제)로부터 제공된 표준 라이브러리 세트의 일부분일 수 있다. 유사하게, 메모리 관리자(321)는 마스터 노드(301)의 일부분으로 구현될 수 있거나 마스터 노드(301)로의 플러그인으로 구현될 수 있고, 상기 마스터 노드(301)는 운영 체제로부터 제공된 표준 관리 기능을 포함할 수 있다.
일 실시예에 따라, 메모리 관리자(321)는 전역 메모리(310)의 메모리 사용을 관리하는 것을 담당하고, 이는 상이한 통신 주제 또는 세션과 관련된 데이터 스트림을 저장하기 위한 전역 메모리 세그먼트의 할당 및 할당 해제를 포함한다. 노드 관리자(322-323)는각자 상응한 노드 컨테이너(311-312) 내의 대응되는 맵핑된 로컬 메모리 세그먼트(332-333)를 경유하여 전역 메모리 세그먼트에 저장된 데이터 스트림의 데이터 블록을 액세스(예를 들어, 기록 및 판독)하기 위하여, 각자 상응한 로컬 메모리 세그먼트(332-333)를 해당 전역 메모리 세그먼트에 맵핑하는 것을 담당한다. 본 예시에 있어서, 처리 노드(302)는 하나 또는 다수의 데이터 스트림을 생성하는 생산자 노드이고,처리 노드(303)는 하나 또는 다수의 데이터 스트림을 구독하거나 소비하는 구독자 또는 소비자 노드이다.
일 실시예에 있어서, 처리 노드(302)가 새로운 데이터 스트림을 게시하거나 생성할 경우, 노드 관리자(322)는 예를 들어 API를 경유하여 메모리 관리자(321)와 통신함으로써 데이터 스트림을 게시하도록 요청한다. 상기 요청에 응답하여, 메모리 관리자(321)는 전역 메모리(310)로부터 전역 메모리 세그먼트를 할당하여 데이터 스트림의 데이터 블록을 저장하고 유지한다. 본 예시에 있어서, 전역 메모리(310)는 각각 특정 데이터 스트림과 대응되는 데이터 블록(예를 들어, 데이터 블록(307-308))을 저장하는 전역 메모리 세그먼트(305-306)의 어레이를 포함한다. 본 명세서 중의 데이터 스트림은 특정 통신 세션에서 처리 노드 중에서 교환되는 데이터를 가리키고, 상기 전역 메모리 세그먼트는 데이터 스트림의 데이터 블록을 유지한다.
본 예시에 있어서, 메모리 관리자(321)는 요청에 응답하여 전역 메모리 세그먼트(305)를 처리 노드(302)에 할당한다. 메모리 관리자(321)는 전역 메모리 세그먼트(305)의 메모리 포인터를 노드 관리자(322)에 반환한다. 노드 관리자(322)는 메모리 포인터에 응답하여 로컬 메모리 세그먼트(본 예시에 있어서, 로컬 메모리 세그먼트(332))를 할당한다. 다음, 노드 관리자(322)는 로컬 메모리 세그먼트(332)를 전역 메모리 세그먼트(305)에 맵핑한다. 노드 관리자(322)는 로컬 메모리 세그먼트(332)를 전역 메모리 세그먼트(305)에 맵핑하도록, 노드 관리자(322)를 호스팅하는 운영 체제로부터 제공된 메모리 맵핑 기능을 호출할 수 있다. 그 다음, 처리 노드(302)가 데이터 블록을 게시하고자 시도할 경우, 처리 노드(302) 및/또는 노드 관리자(322)는 간단하게 데이터 블록을 노드 컨테이너(311) 내의 로컬 메모리 세그먼트(332) 내의 적당한 위치에 기록할 수 있고, 상기 데이터 블록은 결국 전역 메모리 세그먼트(305)의 대응되는 위치 내에 기록한다.
유사하게, 일 실시예에 따라, 처리 노드(303)가 처리 노드(302)에 의해 생성된 데이터 스트림을 구독하고자 할 경우, 노드 관리자(323)는 API를 경유하여 메모리 관리자(321)와 통신하여 상기 구독을 요청한다. 메모리 관리자(321)는 상기 요청에 응답하여 요청한 데이터 스트림과 대응되는 전역 메모리 세그먼트(본 예시에 있어서, 전역 메모리 세그먼트(305))을 식별한다. 메모리 관리자(321)는 이러한 데이터 구조 또는 색인(도시되지 않음)을 유지할 수 있고, 해당 데이터 구조 또는 색인은 데이터 스트림, 그들과 관련된 전역 메모리 세그먼트 및 그들의 생산자 노드를 기록한다. 메모리 관리자(321)는 식별된 전역 메모리 세그먼트의 메모리 포인터를 노드 관리자(323)에 반환한다. 노드 관리자(323)는 메모리 포인터에 응답하여 그의 로컬 메모리의 로컬 메모리 세그먼트(333)를 할당하고 로컬 메모리 세그먼트(333)를 전역 메모리 세그먼트(305)에 맵핑한다. 그 다음, 처리 노드(303)는 노드 컨테이너(312) 내의 로컬 메모리 세그먼트(333)를 경유하여 간단하게 데이터 블록을 판독함으로써 전역 메모리 세그먼트(305)에 저장된 데이터 블록(307)을 액세스할 수 있다.
일 실시예에 있어서, 메모리 관리자(321)는 전역 메모리 세그먼트(305-306)에 대해 일부 관리 또는 하우스키핑(house-keeping) 기능을 더 수행한다. 메모리 관리자(321)는 주기적으로 전역 메모리(310)의 사용과 처리 노드(302-303)로부터의 인터랙션을 모니터링할 수 있다. 통신 세션이 종료될 경우, 그의 대응되는 전역 메모리 세그먼트를 차후에 다시 사용하도록 해제하거나 할당을 해제할 수 있다. 예를 들어, 데이터 스트림의 모든 데이터 블록이 모든 구독자에 의해 판독되고 기정된 시간 내에 대응되는 생산자 노드에 의해 생성된 새로운 데이터 블록이 존재하지 않을 경우, 대응되는 전역 메모리 세그먼트를 해제할 수 있다. 선택적으로, 생산자 노드 및 모든 구독자 노드가, 예를 들어 API를 경유하여, 통신 주제로부터 등록을 취소하면 관련된 전역 메모리 세그먼트를 해제할 수 있다. 이로써, 메모리 관리자(321)는 어떠한 노드가 어떠한 통신 주제에 등록되어 있는지에 관한 정보를 유지할 수 있다. 임의의 처리 노드가 특정 통신 주제를 등록하고 및/또는 특정 통신 주제로부터 등록을 취소하는 것을 허용하는 API가 존재할 수 있다.
일 실시예에 있어서, 전역 메모리 세그먼트(예를 들어, 전역 메모리 세그먼트(305))을 해제하거나 할당을 해제하기 전에, 메모리 관리자(321)는 생산자 노드 및 모든 구독자 노드와 통신하여(예를 들어, API와 같은 통신 인터페이스를 경유하여) 상기 생산자 노드 및 상기 구독자 노드가 각자의 대응되는 로컬 메모리 세그먼트(예를 들어, 로컬 메모리 세그먼트(332-333))에 대해 등록 취소, 맵핑 해제 및 해제하는 것을 허용한다.
일 실시예에 있어서, 데이터 스트림의 데이터 블록은 미리 구성된 원형 버퍼 영역(원형 대기열, 순환 버퍼 영역 또는 링 버퍼 영역이라고도 지칭됨)에 저장될 수 있다. 일 실시예에 있어서, 전역 메모리 세그먼트에 저장된 데이터 스트림의 데이터 블록에 대한 액세스의 일관성을 확보하도록, 메모리 관리자(321)는 노드 관리자(322-323)와 조율할 수 있다. 일 실시예에 있어서, 데이터 블록을 전역 메모리 세그먼트에 기록하기 위하여, 생산자 노드는 반드시 적어도 액세스된 데이터 블록의 배타적 잠금(exclusive lock)을 획득하여야 한다. 다른 한 방면에 있어서, 구독자는 데이터 블록을 판독하기 위해, 배타적 잠금을 획득해야 할 수도 있고, 획득할 필요가 없을 수도 있다. 메모리 관리자(321) 및/또는 처리 노드의 노드 관리자는 데이터 블록의 상태를 점검함으로써 어떠한 분이 특정 데이터 블록을 액세스할 수 있고 없고를 유지하고 강제적으로 수행하는 것을 담당한다.
또한, 생산자 노드가 구독자 노드보다 데이터 블록을 더 빨리 생성하는 것을 방지하는 것이 중요하고, 이와 반대적인 상황도 역시 방지하여야 한다. 통신 인터페이스는 상응한 처리 노드가 속도를 유지할 수 없을 경우 생산자 노드 또는 구독자 노드가 콜백 함수를 등록하는 것을 허용하도록 유지될 수 있다. 예를 들어, 구독자 노드가 모든 데이터 블록을 판독하는 것을 완료하였으나 생산자 노드가 새로운 데이터 블록을 생성하는 속도를 유지할 수 없을 경우, 구독자 노드는 콜백 함수를 등록할 수 있다. 그 이후 새로운 데이터 블록을 획득할 수 있게 될 경우, 메모리 관리자(321)는 구독자 노드가 데이터 블록의 소비를 다시 시작하도록 구독자 노드에 통보한다. 유사하게, 구독자 노드가 데이터 블록을 판독하는 속도를 유지할 수 없을 경우, 생산자 노드도 콜백 함수를 등록할 수 있다. 데이터 블록이 판독되고 그의 저장 공간이 사용 가능하게 될 경우, 새로운 데이터 블록의 생성을 다시 시작하도록, 콜백 인터페이스를 경유하여 생산자 노드에 통보할 수 있다.
로컬 메모리 세그먼트(332), 로컬 메모리 세그먼트(333) 및 전역 메모리 세그먼트(305-306)는 상이한 메모리 장치(예를 들어, 상이한 물리적 메모리 장치)로부터 할당될 수 있거나, 선택적으로 동일한 메모리 장치의 상이한 메모리 구역 또는 영역으로부터 할당될 수 있음을 유의하여야 한다. 일 실시예에 있어서, 로컬 메모리 세그먼트(332), 로컬 메모리 세그먼트(333) 및 전역 메모리 세그먼트(305-306)는 구체적으로 노드 컨테이너(311-312) 및 메모리 관리자(321)에 할당되는 가상 메모리의 일부분으로서의 가상 메모리 세그먼트이다.
연산 처리에 있어서, 가상 메모리는 하드웨어와 소프트웨어 양자를 이용하여 구현되는 메모리 관리 기법이다. 이는 프로그램에 의해 사용되는 메모리 주소(가상 주소라고 지칭됨)를 컴퓨터 메모리 중의 물리적 주소에 맵핑한다. 프로세스 또는 태스크의 시각에서 보이는 메인 메모리는 연속적인 주소 공간 또는 연속적인 세그먼트의 집합으로 시현된다. 운영 체제는 가상 주소 공간과 실제 메모리로부터 가상 메모리로의 할당을 관리한다. 프로세서 중의 주소 변환 하드웨어(일반적으로 메모리 관리 유닛 또는 MMU라고 지칭됨)는 자동적으로 가상 주소를 물리적 주소로 변환한다. 운영 체제 내의 소프트웨어는 이러한 능력을 확장하여 실제 메모리의 용량을 초과하는 공간을 제공할 수 있고, 따라서 컴퓨터에 실제로 존재하는 메모리보다 더 많은 메모리의 가상 주소 공간을 참조한다. 가상 메모리의 주요한 장점으로는, 응용 프로그램으로 하여금 공유 메모리 공간을 관리해야 하는 것으로부터 벗어나도록 하는 것, 메모리 격리로 인한 향상된 안전성, 및 페이징 기법(technique of paging)을 이용하여 개념적으로 실제 이용 가능할 수 있는 메모리보다 더 많은 메모리를 사용하는 것이 포함된다.
처리 노드는 생산자 노드 및/또는 구독자 노드일 수 있다는 것을 유의하여야 한다. 처리 노드는 하나 또는 다수의 데이터 스트림을 생성할 수 있고, 동시에 다른 한 처리 노드에 의해 생성된 하나 또는 다수의 데이터 스트림을 구독할 수 있다. 일 실시예에 있어서, 각 통신 주제에 대해 오직 하나의 생산자 노드가 존재하나, 통신 주제에 대하여 하나 이상의 구독자 노드가 존재할 수 있다. 본 명세서에서, 공유 전역 메모리 세그먼트는 생산자 노드로부터 하나 또는 다수의 구독자 노드로의 단방향 통신 채널로 사용된다. 다른 일 실시예에 있어서, 정해진 통신 주제에 대해 다수의 생산자 노드 및 하나 또는 다수의 구독자 노드가 존재할 수 있다.
도 4는 본 개시의 일 실시예에 따른 전역 메모리 세그먼트의 예시를 나타내는 블록도이다. 전역 메모리 세그먼트(400)는 도 3의 전역 메모리 세그먼트(305-306) 중의 임의의 하나를 표시할 수 있다. 도 4를 참조하면, 전역 메모리 세그먼트(400)은 생산자 노드에 의해 생성되고 하나 또는 다수의 구독자 노드에 의해 소비되는 데이터 블록을 저장하는 데이터 버퍼(401)를 포함하나 이에 한정되지 않는다. 버퍼(401)는 원형 버퍼 영역 또는 선입 선출(FIFO) 버퍼일 수 있다. 원형 버퍼 영역은 마치 단대단으로 연결된 듯한, 하나의 고정 크기의 버퍼를 사용하는 데이터 구조를 가리킨다. 이러한 구조는 쉽게 데이터 스트림을 버퍼링한다. 원형 버퍼 영역의 유용한 특성은 하나의 요소가 소비될 경우, 기타 요서들을 뒤섞을(shuffle around) 필요가 없다.
또한, 전역 메모리 세그먼트(400)는 일부 메모리 세그먼트 메타데이터를 포함하고, 예를 들어, 기록 포인터(402),하나 또는 다수의 판독 포인터(403), 구독자 계수(404), 데이터 블록 색인(405) 및 콜백 레지스트리(406)를 포함한다. 기록 포인터(402)는 버퍼(401)에 저장된 데이터 블록들 중 다음 데이터 블록으로 간주되는 하나를 가리키며 생산자 노드가 다음 기록 순환에서 새로운 데이터 블록을 기록할 메모리 주소를 저장한다. 판독 포인터(403)는 버퍼(401)에 저장된 하나 또는 다수의 데이터 블록들 중의 하나 또는 다수를 가리키는 메모리 주소를 저장하고, 하나 또는 다수의 구독자 노드는 다음 판독 순환에서 상기 하나 또는 다수의 데이터 블록으로부터 다음 데이터 블록을 판독한다. 판독 포인터의 수량은 현재의 구독하는 구독자 노드의 수량에 대응되고, 이는 구독자 계수(404)의 일부분으로 기록된다. 다수의 생산자 노드가 존재할 경우, 생산자 노드들 사이에서 기록 포인터(402)를 공유한다. 기록 포인터(402)는 배타적 잠금의 일부분으로 사용될 수 있음으로써 한 생산자가 기정된 시점에서 데이터를 기록하도록 허용한다. 콜백 레지스트리(406)는 이미 콜백 알림에 등록한 처리 노드(생산자 노드 또는 구독자 노드임)를 기록한다. 처리 논리(예를 들어, 메모리 관리자(321))는 주기적으로 콜백 레지스트리(406)를 스캐닝하여 버퍼(401)에 저장된 데이터 블록의 상태에 결합하여 처리 노드에 통보할 필요가 있는지를 확정할 수 있다.
데이터 블록 색인(405)은 버퍼(401)에 저장된 데이터 블록의 구체적인 상태를 기록할 수 있다. 예를 들어, 블록 상태는 "판독중", "기록중" 또는 "디폴트" 또는 "유휴" 중의 하나일 수 있다. "기록중" 상태는 생산자 노드가 버퍼(401)의 대응되는 블록 위치에서 새로운 데이터 블록을 기록하고 있음을 가리킨다. "판독중" 상태는 구독자 노드가 대응되는 데이터 블록을 판독하고 있음을 가리킨다. "유휴" 또는 "디폴트" 상태는 대응되는 현재 데이터 블록을 액세스하고 있는 처리 노드가 존재하지 않음을 가리킨다. 데이터 블록 색인(405)의 블록 상태는 대응되는 블록 위치를 액세스 하기 위한 배타적 액세스 잠금 또는 권한으로 사용될 수 있다. 다수의 구독자가 동시에 데이터 블록을 판독하는 것을 허용할 경우, "판독중" 상태가 필요 없을 수 있고, 생산자 노드가 동일한 데이터 블록에 기록할 경우, 구독자가 데이터 블록의 액세스가 허용되지 않으므로, 오직 "기록중"만 필요하다.
도 5a는 본 개시의 일 실시예에 따른 메모리 세그먼트의 메타데이터를 저장하기 위한 데이터 구조를 나타내는 블록도이다. 도 4에 도시된 메타데이터(402-406)와 같은 구간 메타데이터를 저장하도록, 데이터 구조(500)는 전역 메모리 세그먼트에 유지될 수 있다. 도 5를 참조하면, 데이터 구조(500)(본 예시에 있어서, 표임)는 다수의 항목을 포함한다. 각 항목은 처리 노드(501)(생산자 노드 또는 구독자 노드임)에 대응되는다. 각 항목은 액세스 포인터를 저장하는 필드(502)를 더 포함하고, 상기 액세스 포인터는 처리 노드(501)가 액세스할 다음 데이터 블록의 데이터 블록 메모리 주소를 가리킨다. 생산자 노드에 대하여, 액세스 포인터(502)가 기록 포인터이고, 구독자 노드에 대하여, 액세스 포인터(502)가 판독 포인터이다.
일 실시예에 있어서, 어떠한 데이터 블록들이 이미 판독되고 모든 데이터 블록이 모두 판독되었는지 여부를 확정하도록, 처리 논리(예를 들어, 메모리 관리자(321) 및/또는 처리 노드의 노드 관리자)는 액세스 포인터(502)를 검사할 수 있다. 처리 논리는 액세스 포인터(502)를 기반으로 새로운 데이터 블록 및 구독 데이터 블록을 생성하는 속도를 확정할 수도 있다. 판독 포인터가 기록 포인터와 동일하거나 근접할 경우, 이는 대부분 또는 전부의 데이터 블록들이 이미 판독되었음을 가리킨다. 이는 또한 특정한 처리 노드가 다른 한 처리 노드 또는 대응되는 처리 노드보다 더 빠르게 데이터 블록을 액세스함을 가리킬 수도 있다. 다수의 생산자 노드가 존재할 경우, 상기 생산자 노드들 사이에서 기록 포인터를 공유한다. 하나의 생산자가 정해진 시점에 데이터를 기록하는 것을 허용하도록, 기록 포인터는 배타적 잠금의 일부분으로 간주될 수 있다. 데이터를 기록하기 전에, 생산자 노드 또는 메모리 관리자는 어떠한 노드가 기록 포인터를 획득하였는 지를 확정할 수 있다.
일 실시예에 있어서, 각 항목은 타임 스탬프를 저장한 필드(503)를 더 포함할 수 있고, 상기 타임 스탬프는 액세스 포인터(502)가 업데이트하는 시간을 가리킨다. 타임 스탬프(503)는 생산자 노드에 의해 생성되는 임의의 새로운 데이터 블록이 존재하는지를 확정할 수 있다. 생산자 노드의 기록 포인터(502)가 타임 스탬프(503)가 가리킨 바와 같은 시간 내에 업데이트되지 않을 경우, 이는 생성된 새로운 데이터 블록이 존재하지 않는 것으로 해석될 수 있다. 유사하게, 구독자 노드가 기정된 시간 내에 그의 판독 포인터를 업데이트하지 않을 경우, 이는 상기 구독자 노드가 더이상 통신 주제를 구독하지 않음을 가리킬 수 있다. 이러한 표시는 필드(502)에서 나타낸 것과 같은 기록 포인터와 판독 포인터의 근접한 정도와 결합됨으로써, 처리 논리가 모든 데이터 블록들이 모두 구독자에 의해 판독되었는지 여부 및 기정된 시간 내에 새로운 데이터 블록이 생성되지 않았는지 여부를 확정할 수 있다. 이러할 경우, 대응되는 통신 세션은 종료될 수 있고 대응되는 전역 메모리 세그먼트도 해제될 수 있다. 선택적으로, 타임 스탬프(503)는 특정한 처리 노드에 장애가 발생하였는지를 확정할 수 있다. 예를 들어, 특정한 처리 노드가 한 동안의 시간 내에 그의 포인터를 업데이트하지 않았을 경우, 상기 처리 노드는 이미 파괴되었거나 루프에 갇힐 수 있다. 다음, 처리 논리는 데이터 구조에 저장된 일부 정보를 재설정하여 통신 세션을 다시 시작할 수 있다.
일 실시예에 있어서, 각 항목은 인디케이터를 저장하는 필드(504)를 더 포함하고, 상기 인디케이터는 콜백 인터페이스를 경유하여 특정 처리 노드에 통보할 지를 가리킨다. 전술한 바와 같이, 처리 노드(예를 들어, 생산자 노드 또는 구독자 노드)가 데이터 블록을 액세스하는 속도가 그의 상대방(예를 들어, 구독자 노드 또는 생산자 노드)보다 훨씬 더 빠를 경우, 상기 처리 노드는 콜백 함수를 등록한 다음 수면 상태로 전환거나 기다리는 동시에 기타 태스크를 수행할 수 있다. 새로운 데이터 블록이 이용 가능하게 되거나 데이터 블록이 판독되고 그의 위치가 이용 가능하게 될 경우, 처리 논리는 필드(504)를 스캐닝하여 어떠한 처리 노드에 통보하여야 하는지를 확정할 수 있다. 처리 노드의 필드(504)가 기정된 값으로 설정될 경우, 상기 처리 노드에 통보하여 데이터 블록의 액세스를 다시 시작한다.
도 5b는 본 개시의 일 실시예에 따른 데이터 블록 색인을 표시하는 데이터 구조를 나타내는 블록도이다. 데이터 블록 색인(550)은 도 4의 데이터 블록 색인(405)의 일부분으로 구현될 수 있다. 도 5b를 참조하면, 일 실시예에 있어서, 데이터 블록 색인(550)은 다수의 항목을 포함하고, 각 항목은 전역 메모리 세그먼트에서의 데이터 블록 중의 하나에 대응되고 데이터 블록 식별자(551; ID)에 의해 색인된다. 데이터 블록 ID(551)는 데이터 버퍼(예를 들어, 도 4의 버퍼(401)) 내의 순차적 순서 위치일 수 있다. 각 항목은 대응되는 데이터 블록의 상태를 저장하는 필드(552)를 더 포함한다. 상태(552)는 "기록중", "판독중" 또는 디폴트(또는 공백/비움) 중의 하나일 수 있다. 상태(552)는 배타적 액세스 잠금의 일부분으로 사용되거나 처리 노드가 대응되는 데이터 블록를 액세스하려고 시도하는지를 가리키는 인디케이터로 사용될 수 있다.
각 항목은, 어떠한 처리 노드가 데이터 블록을 액세스하고 있는지를 가리키는 노드 ID(553); 및 처리 노드(노드 ID (553)에 의해 식별됨)가 데이터 블록을 액세스한지 얼마동안 되었는지(예를 들어, 처리 노드가 배타적 액세스 잠금을 획득하고 소유한지 얼마동안 되었는지)를 가리키는 타임 스탬프(554)를 더 포함할 수 있다. 이러한 정보를 이용하여 특정 처리 노드가 갇혔는지 또는 장애가 발생했는지를 확정할 수 있다. 예를 들어, 처리 노드가 이미 데이터 블록이 기정 시간 동안 액세스하고 있었다면, 상기 처리 노드는 장애 노드로 해석될 수 있고, 재설정 처리를 수행하여 교착 상태를 해결할 수 있다.
전술한 기술을 이용하여 다양한 기록/판독 기법(예를 들어, 메시지 삭제 기법)을 구비하는 게시자 및/또는 구독자를 지원할 수도 있다. 예를 들어, 일 방면에 있어서, 지연 및 처리량 성능은 컨테이너 내부에서 실행되는 응용 프로그램에 대해 결정적인 고려 사항일 경우, 게시자는 사전에 기록된 블록과의 순서를 막론하고 항상 모든 이용 가능한 블록에 기록하는 공격적인 방식을 사용할 수 있다. 선택적으로, 구독자는 이전의 판독이 어디에서 발생되는지를 막론하고 항상 기록자(이전의 업데이트된 블록)에 따르는 기법을 사용할 수 있다. 이런 기법에 의해, 시스템은 지연이 더 낮고 처리량이 더 큰 상황에서 더 뛰어난 응답성을 실현한다. 다른 한 방면에 있어서, 게시자 및/또는 구독자는 순서대로 다음 메모리 블록을 기록하거나 판독하는 것을 시도할 수 있다. 예정된 블록이 기록/판독될 수 없을 경우, 게시자/구독자는 차단될 것이고 한 동안 대기하게 된다. 이러한 보수적인 기법에 있어서, 일반적인 성능이 떨어질 수 있으나, 시스템은 더 일치하고 예측 가능한 행위를 구비할 것이다. 예를 들어, 전송율 또는 게시/구독 비율이, 자율 운전 정경에서의 변화 또는 시스템 자원에 임시적인 부하로 인해 갑자기 변화할 경우, 이러한 기법은 불필요한 데이터 블록 또는 메시지의 건너뜀(skipping) 또는 드롭을 초래하지 않으며서 동적으로 통신율을 조정할 수 있다.
도 6은 본 개시의 일 실시예에 따른 자율 주행 차량을 작동하는 메모리 관리 과정를 나타내는 흐름도이다. 과정(600)은 처리 논리에 의해 수행될 수 있고, 상기 처리 논리는 소프트웨어, 하드웨어 또는 그들의 조합을 포함할 수 있다. 예를 들어, 과정(600)은 도 3의 시스템(300)에 의해 (구체적으로, 메모리 관리자(321)에 의해) 수행될 수 있다. 과정(600)은, 새로운 통신 세션에 대한 요청에 응답하여 (예를 들어, 필요에 따라) 수행될 수 있거나, 선택적으로, 과정(600)은 시스템의 초기화(예를 들어, 작동) 기간에 수행될 수 있다. 도 6를 참조하면, 블록(601)에서, 처리 논리는 제1 노드 컨테이너에서 실행되는 생산자 노드로부터 새로운 통신 주제(예를 들어, 새로운 통신 세션)에 대한 제1 요청을 수신한다. 블록(602)에서, 처리 논리는 제1 요청에 응답하여 전역 메모리(예를 들어, 전역 메모리 주소 공간)로부터 전역 메모리 세그먼트를 할당함으로써 새로운 통신 주제와 관련된 데이터 블록을 저장한다. 블록(603)에서, 처리 논리는 제1 노드 컨테이너 내의 로컬 메모리의 제1 로컬 메모리 세그먼트를 전역 메모리 세그먼트에 맵핑한다. 일 실시예에 있어서, 처리 논리는 전역 메모리 세그먼트의 포인터(예를 들어, 메모리 주소)를 생산자 노드에 반환함으로써, 생산자 노드가 전역 메모리 세그먼트를 제1 노드 컨테이너 내의 로컬 메모리의 제1 로컬 메모리 세그먼트에 맵핑하도록 허용한다. 그 다음, 블록(604)에서, 처리 논리는 제2 노드 컨테이너에서 실행되는 구독자 노드로부터 통신 주제를 구독하고자 하는 제2 요청을 수신한다. 블록(605)에서, 처리 논리는 제2 요청에 응답하여 제2 노드 컨테이너 내의 로컬 메모리의 제2 로컬 메모리 세그먼트를 전역 메모리 세그먼트에 맵핑한다. 일 실시예에 있어서, 처리 논리는 전역 메모리 세그먼트의 포인터를 구독자 노드에 반환함으로써, 구독자 노드가 전역 메모리 세그먼트를 제2 노드 컨테이너 내의 제2 로컬 메모리로부터 할당된 제2 로컬 메모리 세그먼트에 맵핑하는 것을 허용하도록 한다.
도 7은 본 개시의 다른 실시예에 따른 자율 주행 차량을 작동하는 메모리 관리 과정을 나타내는 흐름도이다. 과정(700)은 처리 논리로 수행될 수 있고, 상기 처리 논리는 소프트웨어, 하드웨어 또는 그들의 조합을 포함할 수 있다. 예를 들어, 과정(700)은 도 3의 시스템(300)에 의해 (구체적으로, 메모리 관리자(321)에 의해) 주기적으로 수행될 수 있다. 도 7를 참조하면, 블록(701)에서, 처리 논리는 통신 주제와 관련된 전역 메모리 세그먼트에 저장된 데이터 블록에 대한 액세스을 모니터링한다. 블록(702)에서, 처리 논리는, 예를 들어 기록 포인터와 (다수의) 판독 포인터를 비교함으로써 모든 데이터 블록들이 모든 구독자에 의해 판독됨을 검출한다. 블록(703)에서, 처리 논리는, 예를 들어 기록 포인터 및 그의 타임 스탬프를 점검함으로써 생산자가 기정된 시간 동안 새로운 데이터 블록을 생성하지 않았음을 검출한다. 블록(704)에서, 처리 논리는 선택적으로 생산자 및 (다수의) 구독자에게 전역 메모리 세그먼트를 해제하도록 통보한다. 이러한 알림은 생산자 및 (다수의) 구독자가 맵핑을 해제하고 그들의 상응한 로컬 메모리 세그먼트를 해제하도록 허용한다. 블록(705)에서, 처리 논리는 차후의 사용을 위하여, 전역 메모리 세그먼트를 프리 메모리 풀에 해제한다.
도 8은 본 개시의 다른 실시예에 따른 자율 주행 차량을 작동하는 메모리 관리 과정을 나타내는 흐름도이다. 과정(800)은 처리 논리에 의해 수행될 수 있고, 상기 처리 논리는 소프트웨어, 하드웨어 또는 그들의 조합을 포함할 수 있다. 예를 들어, 과정(800)은 도 3의 시스템(300)에 의해 (구체적으로, 처리 노드의 노드 관리자에 의해) 수행될 수 있다. 도 8를 참조하면, 블록(801)에서, 처리 논리는 통신 주제를 액세스하는 (예를 들어, 생성하고 구독하는) 요청을 수신한다. 블록(802)에서, 처리 논리는, 예를 들어 API를 경유하여 통신 주제를 액세스하는 요청을 메모리 관리자에 전송한다. 블록(803)에서, 처리 논리는 메모리 관리자로부터 통신 주제와 대응되는 전역 메모리 세그먼트의 메모리 포인터를 수신한다. 블록(804)에서, 처리 논리는 메모리 포인터를 기반으로 로컬 메모리로부터 로컬 메모리 세그먼트를 할당하고 로컬 메모리 세그먼트를 전역 메모리 세그먼트에 맵핑한다. 블록(805)에서, 처리 논리는 맵핑된 로컬 메모리 세그먼트를 경유하여 전역 메모리 세그먼트에 저장된 데이터를 액세스한다. 그 다음, 블록(806)에서, 처리 논리는 전역 메모리 세그먼트를 해제하는 것을 가리키는 알림에 응답하여 맵핑을 해제하고, 로컬 메모리 세그먼트를 해제한다.
도 9는 본 개시의 일 실시예와 함께 사용될 수 있는 데이터 처리 시스템의 예시를 나타내는 블록도이다. 예를 들어, 시스템(1500)은 상술한 상기 과정 또는 방법 중의 임의의 하나를 수행하는 임의의 한 데이터 처리 시스템을 표시할 수 있고, 예컨대 도 1의 데이터 처리 시스템(110) 또는 서버(103-104) 중의 임의의 하나를 표시할 수 있다. 시스템(1500)은 다수의 상이한 부재를 포함할 수 있다. 이러한 부재들은 집적 회로(IC), 집적 회로의 일부분, 분리된 전자 장치 또는 회로판(예를 들어, 컴퓨터 시스템의 메인보드 또는 플러그인 카드)에 적합한 기타 모듈로 구현될 수 있거나, 또는 기타 방식으로 컴퓨터 시스템의 섀시 내에 통합된 부재로 구현될 수 있다.
시스템(1500)은 컴퓨터 시스템의 다수의 부재의 개략도를 도시하는 것을 목적으로 함을 더 유의하여야 한다. 그러나, 일부 실시예에서 추가 부재가 존재할 수 있고, 또한, 기타 실시예에서는 도시된 부재의 상이한 배치가 나타날 수 있다는 것을 이해하여야 한다. 시스템(1500)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 이동 전화, 미디어 플레이어, 개인용 휴대 단말기(PDA), 스마트워치, 개인 휴대 통신기, 게임 장치, 네트워크 라우터 또는 허브, 무선 액세스 포인트(AP) 또는 리피터, 셋탑 박스, 또는 이들의 조합을 가리킬할 수 있다. 또한, 오직 하나의 기계 또는 시스템만 도시하였으나, 용어 "기계" 또는 "시스템"은 단독적으로 또는 공동으로 하나(또는 다수)의 명령어 집합을 실행하여 본 명세서에 설명된 임의의 하나 또는 다수의 방법을 수행하는 기계 또는 시스템의 임의의 집합을 포함한다는 것으로도 이해되어야 한다.
일 실시예에 있어서, 시스템(1500)은 버스 또는 상호 연결 장치(1510)를 통하여 연결된 프로세서(1501), 메모리(1503) 및 장치(1505-1508)를 포함한다. 프로세서(1501)는 하나의 프로세서 코어 또는 다수의 프로세서 코어를 포함하는 하나의 프로세서 또는 다수의 프로세서를 표시할 수 있다. 프로세서(1501)는 하나 또는 다수의 범용 프로세서를 표시할 수 있고, 예를 들어, 마이크로 프로세서, 중앙 처리 장치(CPU) 등을 표시할 수 있다. 더 구체적으로, 프로세서(1501)는 복잡 명령어 집합 컴퓨팅(CISC) 마이크로 프로세서, 축소 명령어 집합 컴퓨팅(RISC) 마이크로 프로세서, 훨씬 긴 명령어(VLIW) 마이크로 프로세서, 또는 기타 명령어 집합을 실현하는 프로세서, 또는 명령어 집합의 조합을 실현하는 프로세서일 수 있다. 프로세서(1501)는 하나 또는 다수의 전용 프로세서일 수도 있고, 예컨대 전용 집적 회로(ASIC), 셀룰러 또는 베이스밴드 프로세서, 필드 프로그램 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서, 그래픽 프로세서, 통신 프로세서, 암호화 프로세서, 코프로세서, 내장형 프로세서 또는 명령어를 처리할 수 있는 모든 기타 유형의 논리일 수 있다.
프로세서(1501)는 상기 시스템의 각종 부재들과 통신하기 위한 메인 처리 유닛 및 중앙 허브로 작용할 수 있으며, 상기 프로세서(1501)는 초저 전압 프로세서와 같은 저출력 다중 코어 프로세서 소켓일 수 있다. 이러한 프로세서는 시스템 온 칩(SoC)으로 구현될 수 있다. 프로세서(1501)는 본 명세서에 기재된 동작 및 단계를 수행하기 위한 명령을 실행하도록 구성된다. 시스템(1500)은 선택적인 그래픽 서브 시스템(1504)과 통신하기 위한 그래픽 인터페이스를 더 포함할 수 있고, 상기 그래픽 서브 시스템(1504)은 표시 제어 장치, 그래픽 프로세서 및/또는 표시 장치를 포함할 수 있다.
프로세서(1501)는 일 실시예에서 다수의 메모리 장치로 구현되어 기정 량의 시스템 메모리를 제공할 수 있는 메모리(1503)와 통신할 수 있다. 메모리(1503)는 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 싱크로너스 DRAM(SDRAM), 스태틱 RAM(SRAM)과 같은 하나 또는 다수의 휘발성 저장(또는 메모리) 장치 또는 기타 유형의 저장 장치를 포함할 수 있다. 메모리(1503)는 프로세서(1501) 또는 기타 임의의 장치로 실행되는 명령 서열을 포함하는 정보를 저장할 수 있다. 예를 들어, 다양한 운영 체제, 장치 드라이버, 펌웨어(예를 들어, 기본 입출력 체계 또는 BIOS) 및/또는 응용 프로그램의 실행 가능한 코드 및/또는 데이터는 메모리(1503)에 로딩되어, 프로세서(1501)에 의해 실행될 수 있다. 운영 체제는 임의의 유형의 운영 체제일 수 있으며, 예를 들어, 로봇 운영 체제(ROS), Microsoft®의 Windows® 운영 체제, 애플의 Mac OS®/iOS®, Google®의 Android®, Linux®, Unix®, 또는 VxWorks과 같은 기타 실시간 또는 내장형 운영 체제일 수 있다.
시스템(1500)은 네트워크 인터페이스 장치(1505), 선택적인 입력 장치(1506) 및 기타 선택적인 IO 장치(1507)를 포함하는 장치(1505-1508)와 같은 IO 장치를 더 포함할 수 있다. 네트워크 인터페이스 장치(1505)는 무선 트래시버 및/또는 네트워크 인터페이스 카드(NIC)를 포함할 수 있다. 무선 트랜시버는 WiFi 트랜시버, 적외선 트랜시버, 블루투스 트랜시버, WiMax 트랜시버, 무선 셀룰러 텔레포니 트랜시버, 위성 트랜시버(예를 들어, 전지구 측위 시스템(GPS) 트랜시버) 또는 기타 무선 주파수(RF) 트랜시버 또는 이들의 조합일 수 있다. NIC는 이더넷 카드일 수 있다.
입력 장치(1506)는 마우스, 터치 패드, 터치 감응식 스크린(표시 장치(1504)에 통합될 수 있음), 스타일러스와 같은 지시 장치, 및/또는 키보드(예를 들어, 물리적 키보드 또는 터치 감응식 스크린의 일부분으로 표시된 가상 키보드)를 포함할 수 있다. 예를 들어, 입력 장치(1506)는 터치 스크린에 연결된 터치 스크린 제어 장치를 포함할 수 있다. 터치 스크린 및 터치 스크린 제어 장치는 예를 들어, 다수의 터치 감응 기술 중 임의의 하나 및 표면 탄성파 기술, 및 터치 스크린과의 하나 또는 다수의 접촉점을 결정하기 위한 기타 근접각 센서 어레이 또는 기타 소자를 이용하여 터치 스크린의 접촉 및 이동 또는 중단을 검출할 수 있다.
IO 장치(1507)는 오디오 장치를 포함할 수 있다. 오디오 장치는 스피커 및/또는 마이크로 폰 을 포함함으로써 음성 인식, 음성 복제, 디지털 녹음 및/또는 텔레포니 기능과 같은 음성 지원 기능이 가능하도록 할 수 있다. 기타 IO 장치(1507)는 범용 직렬 버스 라인(USB) 포트, 병렬 포트, 직렬 포트, 프린터, 네트워크 인터페이스, 버스 라인 브리지(예를 들어, PCI-PCI 브리지), 센서(예를 들어, 가속도계, 자이로스코프(gyroscope), 자력계, 광 센서, 나침판, 근접각 센서 등과 같은 동작 센서) 또는 이들의 조합을 더 포함할 수 있다. 장치(1507)는 이미징 처리 서브 시스템(예를 들어, 카메라)를 더 포함할 수 있고, 상기 이미징 처리 서브 시스템은 고체 촬상 소자(CCD) 또는 상보형 금속산화 반도체(CMOS) 광학 센서와 같이, 사진 및 비디오 클립을 기록하는 것과 같은 카메라 기능을 향상하도록 하기 위한 광학 센서를 포함할 수 있다. 일부 센서는 센서 허브(미도시)를 통해 상호연결 장치(1510)에 연결될 수 있고, 키보드 또는 온도 센서와 같은 기타 장치는 내장된 제어 장치(미도시)에 의해 제어될 수 있으며, 이는 시스템(1500)의 구체적인 구성 또는 디자인에 의해 결정된다.
데이터, 응용 프로그램, 하나 또는 다수의 운영 체제 등에 대한 영구 저장을 제공하기 위해, 프로세서(1501)에 대용량 저장 장치(미도시)가 연결될 수도 있다. 각종 실시예에 있어서, 더 얇고 가벼운 시스템 디자인을 실현하고 시스템 응답력을 향상시키기 위해, 상기 대용량 저장 장치는 고체 디바이스(SSD)를 통해 구현될 수 있다. 그러나, 기타 실시예에 있어서, 대용량 저장 장치는 주로 하드디스크 드라이브(HDD)를 이용하여 구현될 수 있으며, 비교적 적은 량의 SSD 저장 장치를 SSD 캐시로 작용하도록 하여 파워 다운 상황에서 맥락 상태 및 기타 유사한 정보에 대한 비휘발성 저장을 실현함으로써, 시스템 활동이 리부팅될 경우 빠른 파워 업을 실현할 수 있다. 또한, 플래시 장치는 예를 들어, 직렬 주변 장치 인터페이스(SPI)를 통해 프로세서(1501)에 연결될 수 있다. 이러한 플래시 장치는 BIOS 및 기타 펌웨어를 포함하는 시스템 소프트웨어에 대한 비휘발성 저장을 제공할 수 있다.
저장 장치(1508)는 본 명세서에 설명된 방법 또는 기능 중 임의의 하나 또는 다수를 구현하는 한 세트 또는 다수의 세트의 명령 또는 소프트웨어(예를 들어, 모듈, 유닛 및/또는 로직(1528))가 저장된 컴퓨터 접근 가능한 저장 매체(1509; 기계 판독 가능한 저장 매체 또는 컴퓨터 판독 가능한 매체라고도 함)를 포함할 수 있다. 모듈/유닛/로직(1528)은 전술된 부재 중의 임의의 하나를 표시할 수 있다. 모듈/유닛/로직(1528)은 데이터 처리 시스템(1500)에 의해 실행되는 동안, 완전히 또는 적어도 부분적으로 메모리(1503) 및/또는 프로세서(1501) 내에 위치될 수도 있으며, 여기서 메모리(1503) 및 프로세서(1501)는 기계 접근 가능한 저장 매체를 구성하기도 한다. 모듈/유닛/로직(1528)은 추가로 네트워크 인터페이스 장치(1505)를 통해 네트워크 상에서 발송 또는 수신될 수도 있다.
컴퓨터 판독 가능한 저장 매체(1509)는 상술한 일부 소프트웨어 기능을 영구적으로 저장하기 위한 것일 수도 있다. 예시적인 실시예에서 컴퓨터 판독 가능한 저장 매체(1509)는 단일 매체로 도시되였으나, 용어 "컴퓨터 판독 가능한 저장 매체"는 하나 또는 다수의 세트의 명령을 저장하는 단일 매체 또는 다수의 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스 및/또는 관련된 캐시 및 서버)를 포함하는 것으로 이해해야 한다. 또한, 용어 "컴퓨터 판독 가능한 저장 매체"는 기계에 의해 실행되고, 기계로 하여금 본 개시의 하나 또는 다수의 방법을 실행하도록 하는 한 세트의 명령을 저장하거나 인코딩할 수 있는 임의의 매체를 포함하는 것으로 이해해야 한다. 따라서, 용어 "컴퓨터 판독 가능한 저장 매체"는 고체 메모리 및 광학 및 자기식 매체 또는 기타 임의의 비일시적인 기계 판독 가능한 매체를 포함하나 이에 한정되지 않는 것으로 이해해야 한다.
본 명세서에서 설명된 모듈/유닛/로직(1528), 부재 및 기타 특징은 이산형 하드웨어 모듈로 구현되거나 ASICS, FPGAs, DSPs 또는 유사한 장치와 같은 하드웨어 모듈의 기능에 통합될 수 있다. 이외에, 모듈/유닛/로직(1528)은 하드웨어 장치 내에서 펌웨어 또는 기능성 회로로 구현될 수 있다. 또한, 모듈/유닛/로직(1528)은 하드웨어 장치 및 소프트웨어 모듈의 임의의 조합으로 구현될 수 있다.
시스템(1500)은 데이터 처리 시스템의 각종 모듈로 도시되였으나, 이러한 세부 사항들은 본 개시의 실시예에 밀접히 관련되는 것이 아니므로, 임의의 구체적인 체계 구조 또는 모듈들의 상호 연결 방식을 표시하는 것이 아님을 유의해야 한다. 또한, 본 개시의 실시예에서 더 적은 부재 또는 더 많은 부재들을 구비할 수 있는 네트워크 컴퓨터, 휴대용 컴퓨터, 모바일 폰, 서버 및/또는 기타 데이터 처리 시스템도 사용할 수 있음은 자명한 것이다.
이미 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 기호적 표현으로 상기 상세한 설명 중의 일부분을 표시하였다. 이러한 알고리즘적 설명 및 표현은 데이터 처리 분야의 당업자들이 그들 작업의 요지를 해당 분야의 기타 당업자들한테 효율적으로 전달하기 위해 사용하는 방식이다. 여기서, 알고리즘은 통상적으로 원하는 결과를 달성하기 위한 조작의 자기 부합적 시퀸스로 구상된다. 이러한 조작들은 물리량에 대한 물리적 조작을 필요로 하는 조작이다.
그러나, 이러한 용어 및 유사한 용어들은 모두 적당한 물리량에 연관되어야 하고, 단지 이러한 량에 적용된 편리한 라벨일 뿐이라는 것을 명기해야 한다. 상술한 기재로부터 명확히 알수 있는 바와 같이 기타 구체적인 설명이 없는 한, 첨부된 청구항에 기재된 용어를 사용하여 진행한 설명은 명세서 전체를 걸쳐 컴퓨터 시스템 또는 유사한 전자 계산 장치의 동작 및 과정을 가리킨다는 것은 자명한 것이며, 상기 컴퓨터 시스템 또는 유사한 전자 계산 장치는 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로 표시된 데이터를 조작하고, 상기 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 유사한 정보 저장 장치, 전송 및 표시 장치 내에서 유사하게 물리량으로 표시된 기타 데이터로 전환한다.
본 개시의 실시예는 본 명세서 중의 조작을 수행하기 위한 장치에 관련된다. 이와 같은 컴퓨터 프로그램은 비일시적인 컴퓨터 판독 가능한 매체에 저장된다. 기계 판독 가능한 매체는 정보를 기계(예를 들어, 컴퓨터)에 의해 판독 될수 있는 포맷으로 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 기계 판독 가능한(예를 들어, 컴퓨터 판독 가능한) 매체는 기계(예를 들어, 컴퓨터) 판독 가능한 저장 매체(예를 들어, 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치)를 포함한다.
첨부된 도면에 도시된 과정 또는 방법은 하드웨어(예를 들어, 회로, 전용 로직 등), 소프트웨어(예를 들어, 비일시적인 컴퓨터 판독 가능한 매체에 내장됨) 또는 이들의 조합을 포함하는 처리 로직에 의해 실행될 수 있다. 비록 위에서 일부 순차적인 조작에 의해 상기 과정 또는 방법에 대해 설명하였으나, 설명된 조작 중의 일부는 상이한 순서로 실행될 수도 있음을 자명할 것이다. 또한, 일부 조작은 순차적인 순서가 아니라, 병행으로 수행될 수 있다.
본 개시의 실시예는 어떠한 특정 프로그래밍 언어를 참조하여 설명된 것도 아니다. 다양한 프로그래밍 언어를 사용하여 본 명세서에서 설명된 본 개시의 실시예들의 교시를 실현할 수 있음을 자명할 것이다.
상기 명세서에서, 본 개시의 상세한 예시적 실시예들을 참조하여 본 개시의 실시예에 대해 설명하였다. 첨부된 청구항에 기재된 본 개시의 사상 및 범위를 벗어나지 않으면서 각종 변경을 진행할 수 있음은 명백할 것이다. 따라서, 명세서 및 도면은 한정적인 것이 아니라, 예시적인 것으로 이해하여야 한다. 따라서, 본 명세서와 도면은 제한적인 의미가 아닌, 설명적인 의미로 이해하여야 한다.
전술된 상세한 설명의 일부분은 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 기호에 따라 표시되었다. 이런 알고리즘의 설명과 표시는 데이터 처리 분야의 기술자들이 그들의 작업 실질을 해당 분야의 기타 기술자들에게 가장 효율적으로 전달하도록 사용하는 방식이다. 여기서, 알고리즘은 통상적으로 기대한 결과를 초래하는 연산의 자체 일관성 시퀀스로 간주된다. 이러한 연산은 물리량에 대해 물리적 조작을 요구하는 연산이다.
그러나, 모든 이러한 용어와 유사한 용어는 모두 적당한 물리량과 관련되어야 하고 이러한 양에 적용되는 적합한 라벨링일 뿐임을 명심하여야 한다. 이상의 토론에서 별도로 명확하게 설명되지 않은 한, 본 명세서 전체를 걸쳐, 아래의 청구항에서 사용된 용어와 같은 용어를 이용한 설명은 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작과 처리를 가리키는 것으로 이해하여야 하고, 상기 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치는 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로 표시된 데이터를 조작하고, 상기 데이터를 컴퓨터 시스템 메모리 또는 레지스터 또는 기타 유사한 정보 저장소, 전송 또는 디스플레이 장치 내의 유사하게 물리량으로 표시되는 기타 데이터로 전환한다.
또한, 본 개시의 실시예는 본 명세서에서 조작을 수행하는 장치에도 관련된다. 이러한 컴퓨터 프로그램은 비일시적인 컴퓨터 판독 가능한 매체에 저장된다. 기계 판독 가능한 매체는 기계(예를 들어, 컴퓨터)가 판독 가능한 방식으로 정보를 저장하는 모든 메카니즘을 포함한다. 예를 들어, 기계 판독 가능한(예를 들어, 컴퓨터 판독 가능한) 매체는 기계(예를 들어, 컴퓨터) 판독 가능한 저장 매체(예를 들어, 읽기 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치)를 포함한다.
상기 도면에서 설명한 과정 또는 방법은 처리 논리에 의해 수행될 수 있고, 상기 처리 논리는 하드웨어(예를 들어, 회로 및 전용 논리 등), 소프트웨어(예를 들어, 비일시적인 컴퓨터 판독 가능한 매체에 내장됨) 또는 양자의 조합을 포함한다. 이상에서 과정 또는 방법을 일부 순차적인 동작에 따라 설명하였으나, 설명된 동작 중의 일부는 상이한 순서에 따라 수행될 수 있다는 것을 이해하여야 한다. 또한, 일부 동작은 순차적으로 수행되는 것이 아니라, 동시에 수행될 수도 있다.
본 개시의 실시예는 그 어떠한 특정한 프로그래밍 언어를 참조하여 설명한 것이 아니다. 다양한 프로그래밍 언어를 이용하여 본 명세서에서 설명된 바와 같은 본 개시의 실시예의 교시를 실시할 수 있다는 것을 이해할 것이다.
이상의 명세서에서, 본 개시의 구체적인 예시적 실시예를 참조하여 본 개시의 실시예들에 대해 설명을 진행하였다. 이하 첨부된 청구항에서 설명된 본 개시의 더 넓은 정신과 범위에서 벗어나지 않는 상황에서, 이에 대하여 다양한 수정을 진행할 수 있다는 것은 자명할 것이다. 따라서, 제한적인 의미가 아닌 설명적인 의미로 명세서와 도면을 이해하여야 한다.

Claims (24)

  1. 제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 상기 제1 데이터 스트림은 다른 일 처리 노드에 의해 구독될 제1 통신 주제를 표시하고, 상기 제1 처리 노드는 다수의 처리 노드들 중의 하나이고, 각 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 처리하며, 상기 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행되는 단계;
    제1 요청에 응답하여, 상기 제1 데이터 스트림의 상기 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당하는 단계;
    제1 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제1 로컬 메모리 세그먼트는 상기 제1 처리 노드를 포함하는 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당되고, 상기 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 직접 액세스하는 단계;
    상기 제1 통신 주제를 구독하도록, 제2 처리 노드로부터 제2 요청을 수신하는 단계; 및
    상기 제2 요청에 응답하여, 제2 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제2 로컬 메모리 세그먼트는 제2 노드 컨테이너의 제2 로컬 메모리로부터 할당되고, 상기 제2 노드 컨테이너는 상기 제2 처리 노드를 포함하며, 상기 제2 처리 노드는 상기 제2 노드 컨테이너 내의 맵핑된 제2 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 액세스하는 단계;를 포함하는 것을 특징으로 하는, 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하기 위한 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 제1 데이터 스트림은 다수의 통신 주제와 관련된 다수의 데이터 스트림 중의 하나이고, 상기 데이터 스트림 중의 각각은 각기 대응되는 데이터 블록을 저장하기 위해 상기 전역 메모리로부터 할당된 다수의 전역 메모리 세그먼트 중의 하나에 연관되는 것을 특징으로 하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 제1 노드 컨테이너는 제1 가상 머신을 포함하고, 상기 제1 로컬 메모리는 상기 제1 가상 머신과 관련되며, 상기 제2 노드 컨테이너는 제2 가상 머신을 포함하고, 상기 제2 로컬 메모리는 상기 제2 가상 머신과 관련되는 것을 특징으로 하는 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 제2 처리 노드는 상기 제1 통신 주제를 구독하는, 구독 처리 노드인 다수의 처리 노드 중의 하나이고, 상기 제1 데이터 스트림의 상기 데이터 블록을 액세스하기 위하여, 상기 구독 처리 노드들 중의 각각은 상기 구독 처리 노드의 상응한 로컬 메모리 중의 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하는 것을 특징으로 하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 제1 처리 노드 및 상기 제2 처리 노드가 상기 제1 전역 메모리 세그먼트에 저장된 상기 데이터 블록에 대한 액세스을 모니터링하는 단계; 및
    상기 액세스가 기정 시간 동안 통신 세션을 종료할 경우, 상기 제1 전역 메모리 세그먼트를 상기 전역 메모리의 프리 전역 메모리 풀에 해제하는 단계;를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  6. 제5항에 있어서,
    상기 제1 전역 메모리 세그먼트에 저장된 상기 데이터 블록에 대한 액세스를 모니터링하는 단계는,
    상기 제1 데이터 스트림의 모든 데이터 블록들이 상기 제2 처리 노드에 의해 판독되었는지 여부를 확정하는 단계; 및
    상기 제1 처리 노드에 의해 생성된 새로운 데이터 블록이 존재하는지 여부를 확정하되, 상기 기정된 시간 동안 상기 제1 데이터 스트림의 모든 데이터 블록들이 판독되고 새로운 데이터 블록이 생성되지 않을 경우, 상기 제1 전역 메모리 세그먼트를 해제하는 단계;를 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  7. 제6항에 있어서,
    상기 제1 전역 메모리 세그먼트를 해제하기 전에,
    상기 제1 로컬 메모리의 상기 제1 로컬 메모리 세그먼트와 상기 제1 전역 메모리 세그먼트의 맵핑을 해제하는 단계; 및
    상기 제2 로컬 메모리의 상기 제2 로컬 메모리 세그먼트와 상기 제1 전역 메모리 세그먼트의 맵핑을 해제하는 단계;를 더 포함하는 것을 특징으로 하는 컴퓨터 구현 방법.
  8. 비일시적인 기계 판독 가능한 매체에 있어서,
    상기 비일시적인 기계 판독 가능한 매체에는 명령어가 저장되고, 상기 명령어는 프로세서에 의해 실행될 경우 상기 프로세서로 하여금 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하는 동작을 수행하도록 하며, 상기 동작은,
    제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 상기 제1 데이터 스트림은 다른 일 처리 노드에 의해 구독될 제1 통신 주제를 표시하고, 상기 제1 처리 노드는 다수의 처리 노드들 중의 하나이고, 각 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 처리하며, 상기 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행되는 단계;
    상기 제1 요청에 응답하여, 상기 제1 데이터 스트림의 상기 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당하는 단계;
    제1 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제1 로컬 메모리 세그먼트는 상기 제1 처리 노드를 포함하는 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당되고, 상기 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 직접 액세스하는 단계;
    상기 제1 통신 주제를 구독하도록, 제2 처리 노드로부터 제2 요청을 수신하는 단계; 및
    상기 제2 요청에 응답하여, 제2 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제2 로컬 메모리 세그먼트는 제2 노드 컨테이너의 제2 로컬 메모리로부터 할당되고, 상기 제2 노드 컨테이너는 상기 제2 처리 노드를 포함하며, 상기 제2 처리 노드는 상기 제2 노드 컨테이너 내의 맵핑된 제2 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 액세스하는 단계;를 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  9. 제8항에 있어서,
    상기 제1 데이터 스트림은 다수의 통신 주제와 관련된 다수의 데이터 스트림 중의 하나이고, 상기 데이터 스트림 중의 각각은 각기 대응되는 데이터 블록을 저장하기 위해 상기 전역 메모리로부터 할당된 다수의 전역 메모리 세그먼트 중의 하나에 연관되는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  10. 제8항에 있어서,
    상기 제1 노드 컨테이너는 제1 가상 머신을 포함하고, 상기 제1 로컬 메모리는 상기 제1 가상 머신과 관련되며, 상기 제2 노드 컨테이너는 제2 가상 머신을 포함하고, 상기 제2 로컬 메모리는 상기 제2 가상 머신과 관련되는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  11. 제8항에 있어서,
    상기 제2 처리 노드는 상기 제1 통신 주제를 구독하는, 구독 처리 노드인 다수의 처리 노드 중의 하나이고, 상기 제1 데이터 스트림의 상기 데이터 블록을 액세스하기 위하여, 상기 구독 처리 노드들 중의 각각은 상기 구독 처리 노드의 상응한 로컬 메모리 중의 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  12. 제8항에 있어서,
    상기 동작은,
    상기 제1 처리 노드 및 상기 제2 처리 노드가 상기 제1 전역 메모리 세그먼트에 저장된 상기 데이터 블록에 대한 액세스을 모니터링하는 단계; 및
    상기 액세스가 기정 시간 동안 통신 세션을 종료할 경우, 상기 제1 전역 메모리 세그먼트를 상기 전역 메모리의 프리 전역 메모리 풀에 해제하는 단계;를 더 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  13. 제12항에 있어서,
    상기 제1 전역 메모리 세그먼트에 저장된 상기 데이터 블록에 대한 액세스를 모니터링하는 단계는,
    상기 제1 데이터 스트림의 모든 데이터 블록들이 상기 제2 처리 노드에 의해 판독되었는지 여부를 확정하는 단계; 및
    상기 제1 처리 노드에 의해 생성된 새로운 데이터 블록이 존재하는지 여부를 확정하되, 상기 기정된 시간 동안 상기 제1 데이터 스트림의 모든 데이터 블록들이 판독되고 새로운 데이터 블록이 생성되지 않을 경우, 상기 제1 전역 메모리 세그먼트를 해제하는 단계;를 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  14. 제13항에 있어서,
    상기 제1 전역 메모리 세그먼트를 해제하기 전에, 상기 동작은,
    상기 제1 로컬 메모리의 상기 제1 로컬 메모리 세그먼트와 상기 제1 전역 메모리 세그먼트의 맵핑을 해제하는 단계; 및
    상기 제2 로컬 메모리의 상기 제2 로컬 메모리 세그먼트와 상기 제1 전역 메모리 세그먼트의 맵핑을 해제하는 단계;를 더 포함하는 것을 특징으로 하는 비일시적인 기계 판독 가능한 매체.
  15. 데이터 처리 시스템에 있어서,
    프로세서; 및
    메모리를 포함하되, 상기 메모리는 명령어를 저장하도록 상기 프로세서에 연결되고, 상기 명령어는 상기 프로세서에 의해 실행될 경우 상기 프로세서로 하여금 자율 주행 차량 중의 처리 노드의 데이터 스트림을 관리하는 동작을 수행하도록 하며, 상기 동작은,
    제1 데이터 스트림의 데이터 블록을 생성하도록, 제1 처리 노드로부터 제1 요청을 수신하되, 상기 제1 데이터 스트림은 다른 일 처리 노드에 의해 구독될 제1 통신 주제를 표시하고, 상기 제1 처리 노드는 다수의 처리 노드들 중의 하나이고, 각 처리 노드는 자율 주행 차량을 작동하는 특정 기능을 처리하며, 상기 처리 노드들 중의 각 노드는 특정 작동 환경을 구비한 특정 노드 컨테이너 내에서 실행되는 단계;
    상기 제1 요청에 응답하여, 상기 제1 데이터 스트림의 상기 데이터 블록을 저장하도록 전역 메모리로부터 제1 전역 메모리 세그먼트를 할당하는 단계;
    제1 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제1 로컬 메모리 세그먼트는 상기 제1 처리 노드를 포함하는 제1 노드 컨테이너의 제1 로컬 메모리로부터 할당되고, 상기 제1 처리 노드는 제1 노드 컨테이너 내의 맵핑된 제1 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 직접 액세스하는 단계;
    상기 제1 통신 주제를 구독하도록, 제2 처리 노드로부터 제2 요청을 수신하는 단계; 및
    상기 제2 요청에 응답하여, 제2 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하되, 상기 제2 로컬 메모리 세그먼트는 제2 노드 컨테이너의 제2 로컬 메모리로부터 할당되고, 상기 제2 노드 컨테이너는 상기 제2 처리 노드를 포함하며, 상기 제2 처리 노드는 상기 제2 노드 컨테이너 내의 맵핑된 제2 로컬 메모리 세그먼트를 액세스함으로써 상기 제1 전역 메모리 세그먼트에 저장된 상기 제1 데이터 스트림의 상기 데이터 블록을 액세스하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  16. 제15항에 있어서,
    상기 제1 데이터 스트림은 다수의 통신 주제와 관련된 다수의 데이터 스트림 중의 하나이고, 상기 데이터 스트림 중의 각각은 각기 대응되는 데이터 블록을 저장하기 위해 상기 전역 메모리로부터 할당된 다수의 전역 메모리 세그먼트 중의 하나에 연관되는 것을 특징으로 하는 데이터 처리 시스템.
  17. 제15항에 있어서,
    상기 제1 노드 컨테이너는 제1 가상 머신을 포함하고, 상기 제1 로컬 메모리는 상기 제1 가상 머신과 관련되며, 상기 제2 노드 컨테이너는 제2 가상 머신을 포함하고, 상기 제2 로컬 메모리는 상기 제2 가상 머신과 관련되는 것을 특징으로 하는 데이터 처리 시스템.
  18. 제15항에 있어서,
    상기 제2 처리 노드는 상기 제1 통신 주제를 구독하는, 구독 처리 노드인 다수의 처리 노드 중의 하나이고, 상기 제1 데이터 스트림의 상기 데이터 블록을 액세스하기 위하여, 상기 구독 처리 노드들 중의 각각은 상기 구독 처리 노드의 상응한 로컬 메모리 중의 로컬 메모리 세그먼트를 상기 제1 전역 메모리 세그먼트에 맵핑하는 것을 특징으로 하는 데이터 처리 시스템.
  19. 제15항에 있어서,
    상기 동작은,
    상기 제1 처리 노드 및 상기 제2 처리 노드가 상기 제1 전역 메모리 세그먼트에 저장된 상기 데이터 블록에 대한 액세스을 모니터링하는 단계; 및
    상기 액세스가 기정 시간 동안 통신 세션을 종료할 경우, 상기 제1 전역 메모리 세그먼트를 상기 전역 메모리의 프리 전역 메모리 풀에 해제하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  20. 제19항에 있어서,
    상기 제1 전역 메모리 세그먼트에 저장된 상기 데이터 블록에 대한 액세스를 모니터링하는 단계는,
    상기 제1 데이터 스트림의 모든 데이터 블록들이 상기 제2 처리 노드에 의해 판독되었는지 여부를 확정하는 단계; 및
    상기 제1 처리 노드에 의해 생성된 새로운 데이터 블록이 존재하는지 여부를 확정하되, 상기 기정된 시간 동안 상기 제1 데이터 스트림의 모든 데이터 블록들이 판독되고 새로운 데이터 블록이 생성되지 않을 경우, 상기 제1 전역 메모리 세그먼트를 해제하는 단계;를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  21. 제20항에 있어서,
    상기 제1 전역 메모리 세그먼트를 해제하기 전에, 상기 동작은,
    상기 제1 로컬 메모리의 상기 제1 로컬 메모리 세그먼트와 상기 제1 전역 메모리 세그먼트의 맵핑을 해제하는 단계; 및
    상기 제2 로컬 메모리의 상기 제2 로컬 메모리 세그먼트와 상기 제1 전역 메모리 세그먼트의 맵핑을 해제하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  22. 삭제
  23. 삭제
  24. 삭제
KR1020177006990A 2016-07-21 2016-07-21 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신 KR102004060B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/090827 WO2018014282A1 (en) 2016-07-21 2016-07-21 Efficient communications amongst computing nodes for operating autonomous vehicles

Publications (2)

Publication Number Publication Date
KR20180039011A KR20180039011A (ko) 2018-04-17
KR102004060B1 true KR102004060B1 (ko) 2019-07-25

Family

ID=60992815

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177006990A KR102004060B1 (ko) 2016-07-21 2016-07-21 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신

Country Status (6)

Country Link
US (2) US10225348B2 (ko)
EP (1) EP3488579B1 (ko)
JP (1) JP6559777B2 (ko)
KR (1) KR102004060B1 (ko)
CN (1) CN107864694B (ko)
WO (1) WO2018014282A1 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503615B2 (en) * 2011-12-16 2019-12-10 Basen Corporation Spime™ host system, process, object, self-determination apparatus, and host device
JP7069456B2 (ja) 2017-03-17 2022-05-18 ザ・リージェンツ・オブ・ザ・ユニバーシティ・オブ・ミシガン マルチポリシー意思決定を導くための有益な結果を構築するための方法および装置
US10216191B1 (en) * 2017-06-13 2019-02-26 Wells Fargo Bank, N.A. Property hunting in an autonomous vehicle
US10613548B2 (en) * 2017-10-19 2020-04-07 Zoox, Inc. Architecture for secure vehicle control
CN108182817A (zh) * 2018-01-11 2018-06-19 北京图森未来科技有限公司 自动驾驶辅助系统、路侧端辅助系统和车载端辅助系统
CN108594810B (zh) * 2018-04-08 2019-07-02 百度在线网络技术(北京)有限公司 数据处理的方法、装置、存储介质、终端设备和自动驾驶车辆
CN108566316B (zh) * 2018-04-18 2019-10-22 百度在线网络技术(北京)有限公司 无人车时延统计方法、装置、设备及计算机可读介质
CN108594819A (zh) * 2018-05-03 2018-09-28 济南浪潮高新科技投资发展有限公司 自动驾驶车载计算资源管理系统和方法
CN112236728B (zh) 2018-06-22 2024-05-03 软件伺服系统公司 运动控制程序、运动控制方法以及运动控制装置
SG11202010344QA (en) * 2018-06-22 2020-11-27 Soft Servo Systems Inc Motion control program, motion control method, and motion control device
EP3812855B1 (en) 2018-06-22 2024-01-17 Soft Servo Systems, Inc. Motion control program, motion control method, and motion control device
CN108845885B (zh) * 2018-07-04 2021-05-18 浪潮集团有限公司 一种面向自动驾驶的边缘计算资源管理方法
EP3824404A4 (en) 2018-07-20 2022-04-27 May Mobility, Inc. MULTI-PERSPECTIVE SYSTEM AND BEHAVIORAL POLICY SELECTION PROCESS BY AN AUTONOMOUS AGENT
US10614709B2 (en) 2018-07-24 2020-04-07 May Mobility, Inc. Systems and methods for implementing multimodal safety operations with an autonomous agent
US10666725B2 (en) 2018-09-26 2020-05-26 Micron Technology, Inc. Data center using a memory pool between selected memory resources
US10880361B2 (en) 2018-09-26 2020-12-29 Micron Technology, Inc. Sharing a memory resource among physically remote entities
US11197136B2 (en) * 2018-09-26 2021-12-07 Micron Technology, Inc. Accessing a memory resource at one or more physically remote entities
US11341295B2 (en) * 2018-09-27 2022-05-24 Intel Corporation Methods, systems, and devices for efficient computation of simulation runs
WO2019025872A2 (en) 2018-11-26 2019-02-07 Wasfi Alshdaifat MEANS OF AUTONOMOUS URBAN TRANSPORT WITH ARTIFICIAL TELEPATHY
US11281214B2 (en) 2018-12-19 2022-03-22 Zoox, Inc. Safe system operation using CPU usage information
WO2020132305A1 (en) * 2018-12-19 2020-06-25 Zoox, Inc. Safe system operation using latency determinations and cpu usage determinations
WO2020139389A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Shared memory architecture for a vehicle
WO2020139395A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Reading messages in a shared memory architecture for a vehicle
US10785170B2 (en) * 2018-12-28 2020-09-22 Beijing Voyager Technology Co., Ltd. Reading messages in a shared memory architecture for a vehicle
US10747597B2 (en) * 2018-12-28 2020-08-18 Beijing Voyager Technology Co., Ltd. Message buffer for communicating information between vehicle components
US11327489B2 (en) * 2018-12-28 2022-05-10 Beijing Voyager Technology Co., Ltd. Shared memory architecture for a vehicle
WO2020139396A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Writing messages in a shared memory architecture for a vehicle
WO2020139393A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Message buffer for communicating information between vehicle components
US10572405B1 (en) 2018-12-28 2020-02-25 Didi Research America, Llc Writing messages in a shared memory architecture for a vehicle
US11076022B2 (en) * 2018-12-31 2021-07-27 Lyft, Inc. Systems and methods for implementing robotics frameworks
US10969470B2 (en) 2019-02-15 2021-04-06 May Mobility, Inc. Systems and methods for intelligently calibrating infrastructure devices using onboard sensors of an autonomous agent
CN110034927B (zh) * 2019-03-25 2022-05-13 创新先进技术有限公司 一种通信的方法及装置
US10957196B2 (en) * 2019-04-03 2021-03-23 International Business Machines Corporation Traffic redirection for autonomous vehicles
CN109855646B (zh) * 2019-04-30 2020-02-28 奥特酷智能科技(南京)有限公司 分布集中式自动驾驶系统和方法
US20190318265A1 (en) * 2019-06-28 2019-10-17 Helen Adrienne Frances Gould Decision architecture for autonomous systems
CN110442425B (zh) * 2019-07-19 2022-04-08 南京芯驰半导体科技有限公司 一种虚拟化地址空间隔离系统及方法
CN110460586B (zh) * 2019-07-23 2021-09-03 北京伏羲车联信息科技有限公司 车内节点通信方法、装置、设备及存储介质
CN110375751A (zh) * 2019-07-29 2019-10-25 苏州索亚机器人技术有限公司 一种自动驾驶实时导航系统架构
US11624617B2 (en) * 2019-12-30 2023-04-11 GM Cruise Holdings LLC. Shared tile map with live updates
CN111208991B (zh) * 2020-01-03 2023-10-31 北京龙归科技有限公司 基于工作流的程序开发方法、电子设备及存储介质
CN111629031B (zh) * 2020-04-27 2023-04-07 浙江大华技术股份有限公司 集群存储的方法、系统、计算机设备及存储介质
JP2023533225A (ja) 2020-07-01 2023-08-02 メイ モビリティー,インコーポレイテッド 自律走行車ポリシーを動的にキュレーションする方法及びシステム
JP7547949B2 (ja) * 2020-11-10 2024-09-10 トヨタ自動車株式会社 情報処理装置、方法、プログラム、及び車両
JP2023553980A (ja) 2020-12-14 2023-12-26 メイ モビリティー,インコーポレイテッド 自律車両安全プラットフォームシステム及び方法
JP2024500672A (ja) 2020-12-17 2024-01-10 メイ モビリティー,インコーポレイテッド 自律エージェントの環境表現を動的に更新するための方法およびシステム
JP2024510746A (ja) * 2021-03-12 2024-03-11 ウーブン バイ トヨタ,ユーエス,インコーポレイティド 車両のためのサービス指向データアーキテクチャ
EP4314708A1 (en) 2021-04-02 2024-02-07 May Mobility, Inc. Method and system for operating an autonomous agent with incomplete environmental information
US11565717B2 (en) 2021-06-02 2023-01-31 May Mobility, Inc. Method and system for remote assistance of an autonomous agent
CN113954877A (zh) * 2021-11-24 2022-01-21 清华大学 基于安全沙箱的智能汽车安全仲裁及控制方法及装置
US12012123B2 (en) 2021-12-01 2024-06-18 May Mobility, Inc. Method and system for impact-based operation of an autonomous agent
US12056072B1 (en) * 2021-12-03 2024-08-06 Amazon Technologies, Inc. Low latency memory notification
US11814072B2 (en) 2022-02-14 2023-11-14 May Mobility, Inc. Method and system for conditional operation of an autonomous agent
JP2023179998A (ja) * 2022-06-08 2023-12-20 キヤノン株式会社 制御装置、制御方法、情報処理装置及びプログラム
US20240098143A1 (en) * 2022-06-29 2024-03-21 Amazon Technologies, Inc. Plug-in orchestrator for vehicle data stream subscription system
CN115114051B (zh) * 2022-08-29 2022-11-15 国汽智控(北京)科技有限公司 节点通信方法、装置、设备及存储介质
WO2024129832A1 (en) 2022-12-13 2024-06-20 May Mobility, Inc. Method and system for assessing and mitigating risks encounterable by an autonomous vehicle
CN115934000B (zh) * 2023-03-07 2023-06-09 苏州浪潮智能科技有限公司 一种存储系统的定时方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010165022A (ja) * 2009-01-13 2010-07-29 Ricoh Co Ltd プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体
JP2016062608A (ja) * 2014-09-15 2016-04-25 ジーイー・アビエイション・システムズ・エルエルシー 共有メモリにおけるデータにアクセスするためのメカニズム及び方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3003418B2 (ja) * 1992-09-25 2000-01-31 株式会社日立製作所 プロセッサ間データ通信方法
JP3667585B2 (ja) * 2000-02-23 2005-07-06 エヌイーシーコンピュータテクノ株式会社 分散メモリ型並列計算機及びそのデータ転送終了確認方法
US7251698B2 (en) * 2002-05-28 2007-07-31 Newisys, Inc. Address space management in systems having multiple multi-processor clusters
US7873879B2 (en) * 2008-02-01 2011-01-18 International Business Machines Corporation Mechanism to perform debugging of global shared memory (GSM) operations
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US7966454B2 (en) * 2008-02-01 2011-06-21 International Business Machines Corporation Issuing global shared memory operations via direct cache injection to a host fabric interface
US8180996B2 (en) * 2008-05-15 2012-05-15 Calxeda, Inc. Distributed computing system with universal address system and method
US8868594B2 (en) * 2011-12-23 2014-10-21 Sap Ag Split processing paths for a database calculation engine
CN104428826B (zh) * 2013-04-15 2017-05-17 自动连接控股有限责任公司 用于车辆交通的自动化控制的中央网络
US9841927B2 (en) * 2013-09-23 2017-12-12 Red Hat Israel, Ltd Remote direct memory access with copy-on-write support
DE102013224702A1 (de) * 2013-12-03 2015-06-03 Robert Bosch Gmbh Steuergerät für ein Kraftfahrzeug
US20160188529A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Guaranteed quality of service in system-on-a-chip uncore fabric
CN105389197B (zh) * 2015-10-13 2019-02-26 北京百度网讯科技有限公司 用于基于容器的虚拟化系统的操作捕获方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010165022A (ja) * 2009-01-13 2010-07-29 Ricoh Co Ltd プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体
JP2016062608A (ja) * 2014-09-15 2016-04-25 ジーイー・アビエイション・システムズ・エルエルシー 共有メモリにおけるデータにアクセスするためのメカニズム及び方法

Also Published As

Publication number Publication date
JP6559777B2 (ja) 2019-08-14
EP3488579B1 (en) 2023-04-05
WO2018014282A1 (en) 2018-01-25
CN107864694A (zh) 2018-03-30
CN107864694B (zh) 2020-11-03
JP2018531436A (ja) 2018-10-25
EP3488579A1 (en) 2019-05-29
KR20180039011A (ko) 2018-04-17
US10225348B2 (en) 2019-03-05
EP3488579A4 (en) 2020-01-22
US20190158599A1 (en) 2019-05-23
US20180183873A1 (en) 2018-06-28
US11044318B2 (en) 2021-06-22

Similar Documents

Publication Publication Date Title
KR102004060B1 (ko) 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신
JP6310531B2 (ja) 自律走行車において拡張仮想現実コンテンツを提供するシステム及び方法
JP6757406B2 (ja) 電極を用いた、人間運転者が自律走行車の制御を引き継ぐメカニズム
JP7072581B2 (ja) 自動運転車両の経路計画のための運転シナリオに基づく車線ガイドライン
CN107577227B (zh) 操作无人驾驶车辆的方法、装置和数据处理系统
JP6494589B2 (ja) リアルタイムで動的に決定された感知に基づいて自律走行車においてコンテンツを提供するシステムおよび方法
JP2018063703A (ja) 自律走行車用のグループ運転スタイル学習フレーム
JP7121699B2 (ja) 自動運転車両のためのマルチモーダル運動計画フレームワーク
JP2018108799A (ja) グラフベースの車線変更ガイドを用いて自律走行車を動作させる方法及びシステム
KR20180049029A (ko) 자율 주행 차량의 운행을 위한 제어 오류 보정 계획 방법
JP2019501435A (ja) 自律走行車の走行を決定するための周辺環境を構築する方法及びシステム
JP2018070145A (ja) 自律走行車用のバネシステムに基づく車線変更方法
US20130167159A1 (en) Vehicle comprising multi-operating system
JP2019503523A (ja) 自律走行車のための車両の位置点の配信方法
JP6972066B2 (ja) 自動運転車のユーザプライバシー保護のための設計
CN111279280B (zh) 用于在传感器之间传送数据的数据传送逻辑与自动驾驶车辆的规划和控制
JP6892516B2 (ja) 列挙に基づく自動運転車両の3ポイントターン計画
US20240134675A1 (en) Display apparatus for vehicle
US11449396B2 (en) Failover support within a SoC via standby domain
JP6779806B2 (ja) ナビゲーション装置および現在地の算出方法
KR20230087336A (ko) 가상화 시스템 및 그 구동 방법
US20230185598A1 (en) Virtualized system and method of operating the same
US20240086264A1 (en) Hardware adaptive vehicle os design on mcu
KR20240093724A (ko) 신호 처리 장치, 및 이를 구비하는 차량용 디스플레이 장치
JP2024054833A (ja) ソースホストからターゲットホストへのライブマイグレーションを実行するシステム及び方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right