KR101549422B1 - 통신 네트워크 애플리케이션들을 위한 락-리스 및 제로 카피 메시징 스킴 - Google Patents

통신 네트워크 애플리케이션들을 위한 락-리스 및 제로 카피 메시징 스킴 Download PDF

Info

Publication number
KR101549422B1
KR101549422B1 KR1020137014804A KR20137014804A KR101549422B1 KR 101549422 B1 KR101549422 B1 KR 101549422B1 KR 1020137014804 A KR1020137014804 A KR 1020137014804A KR 20137014804 A KR20137014804 A KR 20137014804A KR 101549422 B1 KR101549422 B1 KR 101549422B1
Authority
KR
South Korea
Prior art keywords
buffer
descriptor
data
mapped
kernel
Prior art date
Application number
KR1020137014804A
Other languages
English (en)
Other versions
KR20130087553A (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 KR20130087553A publication Critical patent/KR20130087553A/ko
Application granted granted Critical
Publication of KR101549422B1 publication Critical patent/KR101549422B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9031Wraparound memory, e.g. overrun or underrun detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

통신 네트워크의 모뎀에서 사용하기 위한 멀티-코어 프로세서의 락-리스, 제로 데이터 카피 메시징 메커니즘을 위한 컴퓨터-구현 시스템 및 방법이 본원에 설명된다. 상기 방법은, 각각의 복수의 프로세싱 코어들에 대해, 커널-사용자 스페이스(K-U) 맵핑된 버퍼 및 대응하는 버퍼 서술자를 획득하는 단계; 데이터 패킷을 상기 버퍼에 삽입하는 단계; 및 상기 버퍼 서술자를 순환 버퍼에 삽입하는 단계를 포함한다. 상기 방법은 상기 K-U 맵핑된 버퍼 포인터를 포함하는 프레임 서술자를 생성하는 단계, IP 어드레스들을 프레임 큐들에 맵핑하는 다이내믹 PCD 규칙에 의해 명시된 프레임 큐에 상기 프레임 서술자를 삽입하는 단계; 및 상기 프레임 서술자로부터 버퍼 서술자를 생성하는 단계를 더 포함한다.

Description

통신 네트워크 애플리케이션들을 위한 락-리스 및 제로 카피 메시징 스킴{LOCK-LESS AND ZERO COPY MESSAGING SCHEME FOR TELECOMMUNICATION NETWORK APPLICATIONS}
본 발명의 예시적인 실시예들은 멀티-코어 프로세서(multi-core processor)를 사용하여 단일 모뎀 보드 상의 멀티-셀 지원을 위한 제로-카피(zero-copy), 락-리스(lock-less), 및 비-차단 메시징 스킴(non-blocking messaging scheme)에 관한 것이다. 본 발명은 특히 무선 통신 분야에 관한 것이고, 따라서 무선 통신 분야를 구체적으로 참조하여 설명될 것이지만, 본 발명이 다른 분야들 및 애플리케이션들에 유용성을 갖는다는 것이 이해될 것이다.
배경으로서, LTE(Long Term Evolution)는 미래의 통신 네트워크 요구들에 대처하기 위해 UMTS(Universal Mobile Telecommunications System) 이동 전화 표준을 개선하는 것을 목표로 하는 빠르게 발전하는 3GPP 프로젝트이다. LTE는 무선 네트워크 효율 및 대역폭을 개선하고, 비용을 저감하고 서비스 경험들을 향상시킨다. 구체적으로, LTE는 새로운 스펙트럼 기회들을 사용하게 하고 다른 공개 표준들과의 양호한 통합을 제안한다. LTE는 일반적으로 EPS(Evolved Packet System, 또한 Evolved Packet Core라고도 함)와 함께 LTE RAN(Radio Access Network)(또한 E-UTRAN으로 알려짐)을 포함한다.
통신 시스템들은 일반적으로 2개의 주요 기능들: 데이터 차원 기능들 및 제어 차원 기능들로 분할된다. 이전의 LTE 제품들에서, 적어도 2개의 프로세서들이 상기 모뎀 보드 상에서: 하나는 상기 제어 차원 기능들(비-실시간, 즉, OA&M(Operations, Administration, and Management) 및 호출 프로세싱 관리-관련 기능성들)을 지원하고, 다른 하나는 상기 데이터 차원 기능들(실시간, 즉, LTE 계층 2 프로세싱)을 종료 및 지원하기 위해 사용되었다. 상기 제어 및 데이터 차원들은 모두 상기 제어 차원을 위한 리눅스(Linux) 및 데이터 차원 코어를 위한 vXWorks(캘리포니아, 아라미다(Alameda)의 Wind River Systems에 의해 생산 및 판매됨)와 같은 실시간 OS와 같은 상이한 운영체제(OS) 인스턴스들을 사용한다. 전형적으로, 하나의 모뎀 보드는 하나의 섹터 또는 셀을 지원한다. 멀티-셀(예를 들어, 3-셀 또는 6-셀) 구성들을 지원하기 위해, 셀들의 수만큼 많은 모뎀 보드들을 제공할 필요가 있다.
멀티-코어 프로세서는 모뎀 보드 상의 LTE 무선 기지국에 사용될 수 있다. PREEMPT_RT 패치를 갖는 SMP 리눅스와 같은 운영체제는 모두 8개의 코어들을 포함하는 하나의 SMP 파티션 상에서 실행할 수 있다. 이러한 구성에서 상기 제어 차원(비-실시간 쓰레드들(threads)/프로세스들) 및 상기 데이터 차원(실시간 쓰레드들/프로세스들)은 상이한 코어들 상에서 실행하도록 제한되더라도 동일한 운영체제 인스턴스들을 공유한다. 상기 데이터 차원 코어 상에서 실행하는 상기 LTE L2 스케줄러와 같은, 실시간 프로세스들/쓰레드들로부터 TCP/UDP 패킷들을 전송/수신하기 위해 상기 리눅스 프로토콜 스택을 사용하는 것은 상기 LTE L2 스케줄러의 프로세싱을 파괴할 수 있는 무제한 레이턴시 스파이크들을 도출할 것이다. 이는 상기 리눅스 프로토콜 스택이 락-리스로 설계되지 않았다는 사실에 기인하고, 또한 상기 제어 차원 코어 상에서 실행하는 OAM, 및 CALLP와 같은 비실시간 프로세스들/쓰레드들에 의해 사용되기 때문이다.
SMP 환경에서, 하나의 코어 상의 비-실시간 프로세스 또는 쓰레드에 의해 취해진 락(lock)(상기 제어 차원 상에서 발견되는 것 같은)은 상이한 코어 상에서 해제될 락(상기 데이터 차원 상에서 발견되는 것 같은)을 기다리는 실시간 쓰레드 또는 프로세스에 대한 레이턴시 스파이크를 유발할 것이다. 따라서, 하나의 파티션을 사용하는 멀티-코어 프로세서-기반 모뎀 보드의 성능 요건들을 만족하기 위해 상기 데이터 차원 코어 상의 고속 데이터 경로에 대해 리눅스 프로토콜 스택을 사용하지 않는, 락-리스, 제로 카피, 비-차단 메시징 스킴이 필요하다. 이러한 스킴 없이 상기 시스템은, 특히 상기 LTE L2 스케줄러의 프로세싱에 대한, 전체 시스템을 파괴할 수 있는 무제한 레이턴시 스파이크들을 겪을 것이다.
예시적인 실시예의 일 양태에서, 멀티-코어 프로세서에서 락-리스, 제로 데이터 카피 메시징을 위해 컴퓨터-구현 방법이 제공된다. 상기 방법은 각각의 복수의 프로세싱 코어들에 대해, 커널-사용자 스페이스(K-U) 맵핑된 버퍼 및 대응하는 버퍼 서술자를 획득하는 단계, 데이터 패킷을 상기 버퍼에 삽입하는 단계; 및 상기 버퍼 서술자를 순환 버퍼(circular buffer)에 삽입하는 단계를 포함한다.
다른 양태에서, 사용자-스페이스 프로세스들과 커널 스페이스 프로세스들 간의 버퍼들에 락-리스, 제로 카피 액세스를 제공하기 위한 장치가 제공된다. 상기 장치는 모뎀 보드, 및 상기 모뎀 보드에 부착된 복수의 프로세서 코어들을 갖는 멀티-코어 프로세서를 포함한다. 상기 모뎀 보드는 커널 스페이스, 사용자 스페이스, 및 커널 스페이스-사용자 스페이스(K-U) 맵핑된 버퍼 서술자들을 저장하도록 구성된 각각의 프로세서 코어에 대한 순환 버퍼를 포함한다.
또 다른 양태에서, 컴퓨터로 하여금 각각의 복수의 프로세싱 코어들에 대해, 버퍼 서술자들을 저장하기 위한 순환 버퍼를 획득하도록 하는 명령들을 저장하는 비-임시 컴퓨터-사용가능 데이터 캐리어가 제공된다. 상기 순환 버퍼에 저장된 버퍼 서술자들은 커널 스페이스-사용자 스페이스(K-U) 맵핑된 버퍼들에 관한 정보를 포함한다. 상기 명령들은 또한 상기 컴퓨터로 하여금 하나 이상의 하드웨어 구성요소들과 함께 하나 이상의 커널 스페이스 쓰레드들을 사용하여, 이더넷 인터페이스에서 데이터 패킷 수신, K-U 맵핑된 버퍼 및 대응하는 포인터 획득, 상기 수신된 데이터 패킷을 상기 K-U 맵핑된 버퍼에 삽입, 상기 데이터 패킷을 포함하는 K-U 맵핑된 버퍼 포인터를 포함하는 프레임 서술자를 프레임 큐에 인큐잉(en-queue)하고, 상기 프레임 큐의 앞에 상기 데이터 패킷이 도착한 후 상기 프레임 서술자로부터 버퍼 서술자를 생성하는 프로세스를 불러오는(invoke) 방해 신호를 생성하는 단계를 수행하도록 한다. 그 후 상기 데이터 패킷과 연관된 버퍼 서술자가 순환 버퍼 맵핑을 위해 프레임 큐에 따라 상기 명시된 순환 버퍼로 삽입된다.
본 예시적인 실시예의 적용의 추가 범위가 이하에 제공된 상세한 설명으로부터 명백해질 것이다. 그러나, 본 발명의 정신 및 범위 내의 다양한 변경들 및 수정들이 당업자에게 명백해 질 것이기 때문에, 본 발명의 바람직한 실시예들을 나타내는 상기 상세한 설명 및 구체적인 예들이 단지 예시로서 주어진다는 것이 이해될 것이다.
도 1은 본 발명의 양태들에 따른 플랫폼 아키텍처의 일 실시예를 도시한 도면.
도 2는 도 1에 도시된 코어 추상화 계층을 구현하기 위한 예시적인 아키텍처를 도시한 도면.
도 3은 데이터 패킷들의 진입(ingress) 데이터 흐름을 제공하는 예시적인 BED DPAA-기반 시스템을 도시하는 도면.
도 4는 인입 데이터 패킷에 대한 프로세스 흐름의 고-레벨 설명을 나타내는 도면.
도 5는 데이터 패킷들의 진출(egress) 데이터 흐름을 제공하는 예시적인 BED DPAA-기반 시스템을 도시하는 도면.
도 6은 인출(진출) 데이터 패킷에 대한 프로세스 흐름의 고-레벨 설명을 나타내는 도면.
본 발명은 이하에 더 완전히 언급되고, 청구항들에서 구체적으로 지적되고, 첨부된 도면들에 예시된 바와 같이 고려된 목적들이 달성되는, 디바이스의 다양한 부분들 및 방법의 단계들의 구성, 배치, 및 조합으로 존재한다.
도면들이 예시적인 실시예들만을 예시할 목적 및 청구된 주제를 제한하지 않을 목적으로 나타낸, 도면들을 이제 참조하면, 도 1은 현재 설명된 실시예들이 통합될 수 있는 시스템의 도면을 제공한다.
이제 도 1을 참조하면, 예시적인 플랫폼 아키텍처(100)가 도시된다. 이 아키텍처는 일반적으로 모뎀 보드 상에서 사용되지만, 다른 애플리케이션들에서 사용될 수 있다는 것이 이해된다. 본 실시예에서, 모두 8개의 코어를 갖는 하나의 파티션이 규정된다. 그러나, 상기 멀티-코어 프로세서(100)는 임의의 수의 코어들을 가질 수 있다는 것이 이해된다. 따라서, 본 실시예로 모든 코어들(예를 들어, 8개의 코어들) 상에서 실행하는 SMP(single symmetric multiprocessing) 운영체제(OS) 인스턴스(102)를 사용할 수 있다. 상기 제어 및 데이터 차원들이 하나의 OS 인스턴스 하에 있기 때문에, 상기 데이터 플레인이 상기 제어 차원도 파괴하지 않을 것이라는 문제를 보장하기 위해 일반적으로 주의가 필요하다.
본 예에서, 상기 멀티-코어 프로세서(100)는 3개의 셀들(도면에서, 104, 106, 및 108로 도시됨)을 서빙한다. 각각의 셀은 업링크(UL) 스케줄러(도면에서 110, 112, 및 114로 도시됨) 및 다운링크(DL) 스케줄러(도 1에서 116, 118, 및 120으로 도시됨)를 필요로 한다.
LTE 무선 인터페이스에 걸쳐 전송되고 수신된 패킷 프레임들에 대한 세그먼트(segment), 연쇄 및 에러 정정을 위해 RLC(Radio Link Control) 계층이 사용된다고 공지된다. RLC/MAC(Radio Link Control and Medium Access Control) 소프트웨어가 GPRS(2.5G) 무선 스택에서 사용된다. 이는 이동국(mobile station)과 BSC(base station controller) 간의 수신확인(acknowledged) 및 비확인(unacknowledged) 데이터 이동을 제공한다. 따라서, 상기 모바일과 상기 네트워크 사이에 사용된 무선 인터페이스 상의 기본적인 수송 유닛(transport unit)인 RLC/MAC 블록(122)에 또한 포함된다. 상기 RLC/MAC 블록(122)은 데이터 및 RLC/MAC 시그널링을 반송하도록 사용된다.
상기 멀티-코어 프로세서(100)는 또한 OA&M(Operations, Administration, and Management; 124) 및 비-실시간 호출 관리 관련 서비스들을 제공하는 CALLLP 모듈(126)을 제공한다.
게다가, 상기 멀티-코어 프로세서(100)는 계층 2(L2) 애플리케이션 소프트웨어로부터 코어 특정 상세들을 숨기는 코어 추상화 계층(core abstraction layer(CAL); 128)을 포함한다. 계층 2는 컴퓨터 네트워킹의 7-계층 OSI 모델의 데이터 링크 계층이다. 상기 데이터 링크 계층은 광역 네트워크의 인접한 네트워크 노드들 간 또는 동일한 근거리 네트워크 세그먼트 상의 노드들 간의 데이터를 이동시키는 프로토콜 계층이다. 상기 데이터 링크 계층은 네트워크 엔티티들 간의 데이터 이동을 위한 기능적이고 절차 상의 수단을 제공하고 물리 계층에서 발생할 수 있는 에러들을 검출하고 가능한 정정할 수 있는 수단을 제공할 수 있다. 데이터 링크 프로토콜들의 예들은 근거리 네트워크들(멀티-노드)을 위한 이더넷, PPP(Point-to-Point Protocol), 포인트-투-포인트(듀얼-노드) 접속을 위한 HDLC 및 ADCCP이다. 이 경우, L2는 일반적으로 매우 엄격한 실시간 요건들을 갖는 LTE 무선 인터페이스에 필요한 상기 L2 스케줄러 프로세싱을 의미한다.
트래픽을 처리하고 모바일 통신 디바이스와 네트워크 스위칭 서브시스템 사이의 시그널링에 책임이 있는 상기 기지국의 실시간 성능 요구들을 충족하기 위해, PREEMPT_RT 패치를 갖는 SMP 리눅스와 같은 OS가 사용될 수 있다. 물론, 다른 운영체제들이 사용될 수 있다는 것이 이해된다. vxWorks가 사용을 위해 매우 높은 라이센스 수수료를 갖기 때문에, vxWorks와 같은 하드코어 실시간 OS보다 PREEMPT_RT를 갖는 SMP 리눅스와 같이 공개 소스 OS가 선택된다. 이러한 SMP 구성에서 결정론적인 움직임을 달성하기 위해, 상기 시스템은 AMP-형 시스템 움직임을 달성하도록 구성하는 코어 예비 및 코어 친밀성을 채용하는 방식으로 구현되는 것이 바람직하다. 이는 또한 예를 들어, PREEMPT_RT를 갖는 SMP 리눅스 OS로부터 최상의 성능을 얻는 것이 바람직하다. 버퍼 관리와 같은 락리스 제로 카피 서비스들 및 메시징 서비스들의 사용은 또한 PREEMPT_RT를 갖는 SMP 리눅스 OS의 사용에 의해 제기될 수 있는 임의의 레이턴시 문제들의 처리를 도울 수 있다.
도 1에 도시된 코어 추상화 계층(128)의 주요 기능들 중 하나는 상기 멀티-코어 플랫폼의 모든 능력들을 활용하는 다양한 서비스들과 함께, L2 프로세싱과 같은 고-레벨 애플리케이션들을 제공하는 것이다. 따라서 상기 코어 추상화 계층은 몇가지 목표들을 달성하도록 설계된다. 첫째, 고-레벨 애플리케이션 소프트웨어(즉, L2 소프트웨어)로부터 DPAA 및 멀티-코어 특정 구현을 숨기면서, BED(Backplane Ethernet Driver) DPAA-기반 인터페이스를 지원할 수 있다. 둘째, 상기 진입 및 진출 방향들 모두에서 사용자-차원 데이터를 위한 가속화된 데이터 경로를 제공하기 위해 P4080의 DPAA 하드웨어 구성요소들을 활용할 수 있다. 셋째, 구성 변경들을 위해 용이하게 조정되도록(즉, 코드 변경들을 필요로 하지 않고) 가능한 많은 유연성을 제공할 수 있다. CAL 구성의 예는 버퍼 풀들(buffer pools), 진입 프레임 큐들, 및 진출 프레임 큐들을 위한 DPAA 리소스 구성이다.
요약하면, 본 발명의 구현은 하나의 파티션의 모든 프로세서 코어들을 사용한다. 이는 단 하나의 OS 인스턴스의 사용을 필요로 하고, 하이퍼바이저(hypervisor)의 사용을 필요로 하지 않는다. 단순한 리눅스는 모든 하드 실시간 프로세싱 필요들을 충족하기 어려울 수 있기 때문에, PREEMPT_RT 패치를 갖는 SMP 리눅스와 같은 OS가 바람직하다. 공개 소스 OS는 또한 비용을 절감하기 위해 사용된다. 상기 시스템은 또한 6-셀 또는 9-셀 구성들까지 허용하는, SMP 구성 내의 AMP형 시스템 움직임을 규정하기 위해 SMP 리눅스의 CPU 예비 능력들 및 코어 친밀성을 통합한다. 상기 OS 인스턴스가 비-실시간 코어들(상기 제어 차원과 같은)과 실시간 코어들(상기 데이터 차원들과 같은) 사이에 공유되기 때문에, 상기 실시간 쓰레드/프로세스가 상기 데이터 차원 코어(들)에 대한 락의 해제를 기다려야 하기 때문에 실시간 쓰레드/프로세스에 지연을 유발하는 락이 비-실시간 쓰레드/프로세스에 의해 취해질 때 문제들이 발생한다. 상기 표준 리눅스 프로토콜 스택은 락-리스 구현을 보장하지 않기 때문에, 본 발명은 상기 프로토콜 스택의 사용을 회피하면서 TCP/UDP IP 패킷들을 전송/수신하기 위해, 데이터 차원 코어들 상에서 실행하는 실시간 프로세스(LTE L2 스케줄러)를 위한 락-리스 메시징 스킴을 규정한다. 상기 제어 차원 코어 상에서 실행하는 OA&M와 같은 비-실시간 프로세스는 정상 동작을 위해 상기 리눅스 프로토콜 스택의 사용을 계속할 것이다. 리눅스 GPL 문제로 인해, 우리의 특허 LTE L2 스케줄러가 사용자 스페이스에서 동작한다. 따라서 상기 LTE L2 스케줄러로부터 TCP/UDP IP 데이터를 전송 및 수신하기 위해, 데이터는 전형적으로 데이터 카피을 요구하는 사용자-커널 스페이스 경계를 가로질러야 한다. 따라서, 하나의 메모리 위치에서 다른 위치로 데이터를 카피하기 위해 프로세서 전력을 소비하는 것은 귀중한 리소스들을 낭비한다. 따라서, 상기 제어 차원으로 하여금 정상적인 방식으로 동작하게 하면서(전통적인 리눅스 프로토콜 스택을 사용하는 것과 같이) 상기 데이터 차원 코어 상에서 실행하는 실시간 쓰레드들/프로세스들을 위한 효율적인 락-리스, 제로 카피 및 비-차단 메시징 서비스를 허용하는 방법 및 시스템을 제공하는 것이 바람직하다.
이제 도 2를 참조하면, 이들 및 다른 목표들을 달성하는 예시적인 아키텍처(200)가 도시된다. 종래의 컴퓨터 운영체제는 보통 가상 메모리를 커널 스페이스 및 사용자 스페이스로 분리한다는 것이 공지된다. 커널 스페이스는 상기 커널, 커널 확장들, 및 대부분의 디바이스 드라이버들을 실행하기 위해 엄격하게 예비된다. 반대로, 사용자 스페이스는 모든 사용자 모드 애플리케이션들이 동작하는 메모리 영역이고 이 메모리는 필요할 때 교환될 수 있다. 이와 관련하여, 코어 추상화 계층(CAL; 201)은 사용자 스페이스에 프레임 관리자들(FMAN; 230 및 232)에 상기 LTE 네트워크 구성 및 임의의 정적 PCD 규칙들을 로딩하고 구성 파일들의 세트에 기초하여 상기 CAL 프레임워크를 셋업하는(sets up) 코어 추상화 계층 초기화(CALInit) 모듈(202), 코어 추상화 계층 버퍼(CALBuf) 모듈(204), 리눅스 프로토콜 스택을 사용하지 않고 다른 보드(즉, eCCM)로/로부터 사용자-차원 데이터를 전송 및 수신하기 위해 L2 소프트웨어로 메시징 서비스들을 제공하는 코어 추상화 계층 메시징(CALMsg) 모듈(206), 적절한 코어들로 진입 프레임들을 라우팅하기 위해 각각의 FMAN(230, 232)에 의해 사용되는 구성들 및 파싱, 분류 및 분배(PCD; Parsing, Classification and Distribution) 규칙들을 제공하는 코어 추상화 계층 파싱(parsing), 분류 및 분배(CALPcdFmc) 모듈(208), 및 커널 스페이스 모듈인, 상기 코어 추상화 계층 DPAA 드라이버(CALDPAADriver; 212)에서의 추적을 인에이블 및 디스에이블하기 위한 추적 능력을 제공하는 코어 추상화 계층 DPAA 추적(CALDpaaTrace) 모듈(210)을 포함하는 다양한 모듈들을 포함하지만 이로 제한되는 것은 아니다.
상기 아키텍처(200)는 또한 Preempt RT 패치를 갖는 SMP 리눅스와 같은 적절한 운영체제(214)를 포함한다. 상기 운영체제(214)는 차례차례 전술한 CALDPAADriver(212), 적어도 하나의 프레임 관리자(FMAN) 드라이버(216), 적어도 하나의 버퍼 관리자(BMAN) 드라이버(218), 및 적어도 하나의 큐 관리자(QMAN) 드라이버(220)와 같은 다양한 드라이버들을 지원한다.
도 2에 도시된 바와 같이, 상기 아키텍처(200)는 다수의 전력 아키텍처 프로세싱 코어들을 캐시들, 독립 캐시들 및 메모리 서브시스템들과 접속하기 위해 스케일가능한 온-칩 네트워크(scalable on-chip network)에 적절한 상호접속 아키텍처인 P4080 CoreNet 패브릭(fabric)(222)을 적절히 포함할 수 있다.
상기 P4080 프로세서는 새로운 DPAA(Data Path Acceleration Architecture)의 구현을 포함한다. 따라서, 상기 아키텍처(200)는 P4080 DPAA(224)를 더 포함할 수 있다. 상기 DPAA(224)는 네트워크 인터페이스들 및 하드웨어 가속기들을 포함하는, 부하 스프레딩 및 리소스들의 공유와 같은 멀티코어 네트워크 프로세싱을 최적화하도록 설계된다. 도시된 바와 같이, 상기 DPAA(224)는 일반적으로 BMAN(226), QMAN(228), 및 제 1 및 제 2 FMAN(230 및 232)과 같은 다양한 관리자들을 각각 포함한다.
상기 CALInit 모듈(202)은 전형적으로 상기 LTE 네트워크 구성 및 상기 프레임 관리자들(230 및 232)에 대한 임의의 정적 PCD 규칙들을 로딩하고 구성 파일들의 세트에 기초하여 CAL 프레임워크를 셋업한다. 상기 CALInit 모듈(202)은 FMan PCD를 구성하기 위해 FMC(FMan Configuration Tool)(도시되지 않음) 또는 임의의 수의 FMan API(들)(도시되지 않음), 및 상기 CAL 구성(예를 들어, 사용자 차원 DPA 리소스들)을 로딩 및 셋업하기 위해 CALDPAADriver(212)와 인터페이스한다.
상기 CALPcdFmc 모듈(208)은 진입 프레임들을 적절한 코어들로 라우팅하기 위해 각각의 FMan(230, 232)에 의해 사용되는 파싱, 분류 및 분배(PCD) 규칙들 및 구성들을 제공한다.
상기 CALInit 모듈(202)은 다양한 기능성들을 제공할 책임이 있다. 시작시 마스터 코어에 대해, 상기 CALInit 모듈(202)은 "고속 경로(fast path)" 프로세싱을 지원하기 위해 CAL 프레임워크를 셋업한다. 이 단계는 차례로 (a) 사용자-차원 데이터(즉, 버퍼 풀들, FQ들(또는 프레임 큐들))를 프로세싱하기 위해 필요한 다양한 DPAA 리소스들을 생성하고 및 (b) DPAA를 통해 버퍼 관리 및 메시징 서비스들을 지원하기 위해 필요한 CAL 인프라스트럭처(예를 들어, 버퍼 풀 구성, FQ들, 및 진입 FQ들과 DL 스케줄러 IP 어드레스들 사이의 연관, 등을 유지하는 내부 표들)를 생성할 수 있는 상기 CALDPAADriver(212)를 초기화하는 단계를 포함할 수 있다. 상기 CALInit 모듈(202)은 또한 LTE FMC의 (정적) PCD 규칙들 및 네트워크 구성들을 로딩한다.
무선 다중-액세스 통신 시스템에서, 송신기들 및 수신기들이 다중 계층 통신 스택을 사용하여 통신할 수 있다는 것이 공지된다. 상기 계층들은 예를 들어, 물리 계층, 매체 액세스 제어(MAC; medium access control) 계층, 무선 링크 제어(RLC; Radio Link Control) 계층, 프로토콜 계층(예를 들어, 패킷 데이터 수렴 프로토콜(PDCP; packet data convergence protocol) 계층), 애플리케이션 계층 등을 포함할 수 있다. 상기 RLC 계층은 상기 PDCP 계층으로부터 서비스 데이터 유닛들(SDU; service data units)을 수신하고, 상기 MAC 계층으로 송신하기 위해 상기 SDU들을 RLC 프로토콜 데이터 유닛들(PDU)로 연쇄 또는 세그먼트한다.
따라서, 상기 CALBuf 모듈(204)은 상기 RLC SDU 프로세싱에서 사용하기 위해 L2 애플리케이션들에 대한 락-리스 버퍼 관리 서비스들을 용이하게 한다. 당업계에 공지된 바와 같이, 공유된 리소스를 경쟁하는 쓰레드들이 상호 배제에 의해 무기한 연기된 실행을 갖지 않는다는 것을 비-차단 알고리즘이 보장한다. 시스템-전체의 진행이 보장된다면 비-차단 알고리즘은 락-리스(또는 락-프리(lock-free))이다. 상기 CALBuf 모듈(204)은 또한 버퍼 풀 통계 데이터(예를 들어, 풀 고갈 상태(pool depletion state), 고갈 수치(depletion count), 풀 가용 상태, 풀 할당 에러 수치, 등)에 대한 쿼리(query)를 지원한다. 상기 CALBuf 모듈(204)은 상기 서비스들을 구현하기 위해 상기 CALDPAADriver(212)와 인터페이스한다. 상기 CALBuf 모듈(204)은 비-실시간 프로세스에 의해 취해진 락이 락 해제를 기다리는 실시간 프로세스에 대한 레이턴시 문제들을 유발하는, 멀티-코어 환경에서 적절한 시스템 동작을 위해 매우 중요한 락-리스 버퍼 관리 스킴을 제공한다.
상기 CALDPAADriver(212)는 상기 CAL(201)의 커널 스페이스 구성요소이고 BMAN 및 QMAN API들을 사용하여 버퍼 관리 서비스들 및 메시징 서비스들의 제공 및 구현을 돕는다. 본원에 사용된 바와 같이, 상기 용어 API(또는 애플리케이션 프로그래밍 인터페이스)는 다른 소프트웨어와 상호작용하도록 인에이블하는, 소프트웨어 프로그램에 의해 구현된 인터페이스를 의미한다. 이는 사용자 인터페이스가 사용자들과 컴퓨터들 사이의 상호작용을 용이하게 하는 방식과 유사하게 상이한 소프트웨어 프로그램들 간의 상호작용을 용이하게 한다. API는 그들의 어휘들 및 호출 관습들을 결정하기 위해 애플리케이션들, 라이브러리들, 및 운영체제들에 의해 구현되고, 그들의 서비스들에 액세스하기 위해 사용된다. 이는 상기 API의 소비자와 구현자 사이의 통신에 사용된 루틴들, 데이터 구조들, 객체 클래스들, 및 프로토콜들에 대한 명세를 포함할 수 있다.
상기 CALDPAADriver(212)는 사용자-차원 데이터 분배를 위해 사용되는 DPAA 리소스들(버퍼 풀들 및 프레임 큐들)을 관리; 초기화, 버퍼 관리, 및 메시징 서비스들을 위해 공개, 해제, ioctl(i-o-control)와 같은 다양한 파일 동작들을 통해 다른 CAL 모듈들로 사용자 스페이스 인터페이스를 제공; 커널-사용자 스페이스(K-U) 버퍼 맵핑을 수행; DPAA 버퍼 풀 및 수신기 및 송신기 통계 데이터를 제공; 및 링 버퍼들을 관리하기 위한 서비스들을 구현할 책임이 있다. 링 버퍼들이 상기 CAL의 L2 소프트웨어 큐를 나타내고, 일반적으로 특정한 L2 DLT를 향하는 FD들을 저장하도록 사용된다는 것을 주의해야 한다. 상기 CALMsg 모듈(206)은 링으로부터 버퍼 서술자들을 검색하기 위해 L2를 위한 API들을 제공한다.
상기에 설명된 모든 CAL 구성요소들은 일반적으로 상기 CALDPAADriver(212)를 제외하고, 플랫폼 미들웨어(사용자 스페이스에서 실행하는)이다. 상기 CALDPAADriver(212)는 커널 스페이스에서 실행하는 커스텀 드라이버(custom driver)이고, 상기 CAL 사용자 스페이스 미들웨어에 의해 필요한 서비스들-특히 P4080 DPAA 하드웨어 구성요소들에 의존하는 서비스들-을 구현하고 제공하도록 설계된다.
상기 CALBuf 모듈(204)은 "고속 경로" 데이터 프로세싱을 위해 독점적으로 사용되는 버퍼 관리 서비스들을 제공한다. 상기 CALBuf 모듈(204)은 L2 애플리케이션으로 사용자 스페이스 API들을 제공한다. 상기 CALBuf 모듈(204)은 상기 CALDPAADriver(212)가 생성하지만 상기 BMAN(226)에 의해 관리되는 버퍼들에 대한 제로 카피 및 락-리스 버퍼 관리 서비스를 제공하기 위해 상기 CALDPAADriver(212)와 협력한다.
상기 CALMsg 모듈(206)은 DPAA를 통해 (진입) RLC SDU들을 수신하고 (진출) RLC SDU들을 전송하기 위한 서비스들을 제공한다. 상기 CALMsg 모듈(206)은 또한 Tx/Rx 이더넷 인터페이스 통계 데이터(예를 들어, 수신 또는 송신된 FD들의 수, 드롭된(dropped) FD들의 수, 다양한 유형들의 나쁜 FD들, 등)에 대한 쿼리를 지원한다. 상기 CALMsg 모듈(206)은 상기 서비스들을 구현하기 위해 상기 CALDPAADriver(212)와 인터페이스한다. 상기 CALMsg 모듈(206)은 상기 프로토콜 스택을 사용하지 않고 TCP/UDP IP 패킷들을 전송 또는 수신하기 위해 상기 LTE L2 애플리케이션에 제로-카피 락 리스 메시징 서비스를 제공한다. 이는 상기 애플리케이션 소프트웨어가 매우 엄격한 실시간 프로세싱 요건들을 갖는, 상기 LTE 시스템의 적절한 시스템 움직임을 파괴할 수 있는 무제한 레이턴시 스파이크들을 접하지 않는다는 것을 보장한다.
상기 CALMsg 모듈(206)은 사용자-차원 데이터를 다른 보드(즉, eCCM)로/로부터 전송 및 수신하기 위해 L2 소프트웨어로 메시징 서비스들을 제공한다. 상기 CALMsg 모듈(206)은 일반적으로 DPAA를 통해 락-리스 제로 카피 메시징 서비스들을 제공하기 위해 상기 CALDPAADriver(212)와 인터페이스한다. 이러한 특징은 상기 L2 애플리케이션 소프트웨어로 하여금 무제한 레이턴시 지연들을 회피하기 위해 프로토콜 스택을 사용하지 않고 TCP/UDP IP 패킷들을 전송 및 수신하게 한다.
상기 CALMsg 모듈(206)은 이하의 문단들에 설명된 것과 같은, 다양한 서비스들을 지원하는 API들을 구현 및 제공한다.
하나의 가능한 서비스는 "고속 경로"를 통해 인입 패킷들을 수신할 수 있는 (L2) 애플리케이션 엔티티들을 상기 CALMsg 서비스에 등록하는 것이다. 이 등록 프로세스 동안, CAL의 L2 소프트웨어 큐(즉, 버퍼 서술자들의 링, 또는 다시 말해, 버퍼 서술자들을 위한 순환 버퍼)가 상기 엔티티로 향하는 수신된 버퍼 서술자들을 유지하기 위해 생성된다. 또한 이 등록 동안, 상기 CALMsg 모듈(206)이 다른 프로세싱(예를 들어, 프레임이 FQ에 도착할 때 버퍼 서술자를 푸시(push)하기 위한 버퍼 서술자들의 링을 결정)에서의 나중 참조를 위해 IP 어드레스로 진입 FQ와 버퍼 서술자 ID들의 링 사이의 연관을 생성한다. 상기 CALMsg 모듈(206)은 또한 버퍼 서술자들의 관련 링들의 커널-사용자 스페이스 맵핑을 수행하고, 상기 애플리케이션 엔티티를 위한 PCD 규칙을 구성한다(통계적 규칙들을 통해 행해지지 않았다면). 또한, 등록 프로세스의 시작 시, 상기 CAL(201)은 애플리케이션에 의해 획득된 모든 버퍼들이 쓰레드가 고장날 때 적절히 해제된다는 것을 보장하기 위한 방어 전략을 구현한다.
상기 CALMsg 모듈(206)에 의해 제공된 제 2 서비스는 상기 애플리케이션 엔티티를 향하는 프레임을 검색하는 것이다. 리턴된 버퍼 어드레스는 이더넷 헤더로 시작하는 페이로드의 시작을 가리킨다.
상기 CALMsg 모듈(206)에 의해 제공된 제 3 서비스는 사용자 차원 데이터(예를 들어, ethO)를 프로세싱하도록 구성된 이더넷 인터페이스 상의 DPAA를 통해 외부 엔티티로 메시지를 전송하는 것이다. L2가 필요한 모든 헤더들(Ethernet, IP, UDP)을 실장하고(populate); 상기 하드웨어는 IP 체크섬 및 UDP 체크섬을 생성하고 실장하도록 적절히 구성된다는 것이 예상된다.
제 4 서비스는 수신기 및 송신기 포트 통계 데이터를 쿼리하는 것이다.
제 5 서비스는 상기 CALMsg 모듈(206)로부터 애플리케이션 엔티티를 재등록하는 것이다. 일단 애플리케이션 엔티티가 재등록되면, 더 이상 상기 "고속 경로"를 통해 패킷들을 수신할 수 없다. 재등록 프로세스의 일부로서, CAL은 상기 애플리케이션 소프트웨어에 의해 획득된 모든 버퍼들을 해제할 것이다. 상기 CALMsg 모듈(206)이 고속 경로를 통해 프레임들을 수신하기 위해 사용되는 경우, 상기 버퍼 서술자들의 연관된 링 및 PCD 규칙이 또한 제거될 것이다.
도 3을 참조하여, 데이터 패킷들의 진입 데이터 흐름을 제공하도록 구성된 예시적인 백플레인 이더넷 드라이버(BED; Backplane Ethernet Driver) DPA-기반 시스템(300)의 고-레벨 개요가 도시된다. 도 3의 왼쪽은 전통적인 프로토콜 스택을 사용하여 상기 제어 차원 코어(X)로 향하는 패킷들에 의해 취해진 경로를 도시한다. 상기 도면의 오른쪽은 상기 LTE L2 스케줄러가 실행되는 상기 데이터 차원 코어(Y)를 가로지르는 패킷을 도시하는 도면이다.
예시를 목적으로, 상기 LTE L2 스케줄러는 2개의 실시간 쓰레드들로 구성된다. 상기 2개의 쓰레드들은 진입 패킷 흐름을 위해 동작하는 도 3에서 DL SCHEDULER(324)로 도시된 DL 스케줄러 및 진출 패킷 흐름을 위해 동작하는 UL SCHEDULER로 도시된 업링크 스케줄러를 포함한다.
하드웨어 측면에서 각각의 코어는 소프트웨어 포털(software portal; 316)을 갖는다. 각각의 포털은 명시된 수의 채널들을 갖는다. 각각의 채널은 복수의 프레임 큐들(FQ)을 포함하는 8개의 우선 순위 기반 워크-큐들(WQ; work-queues)을 갖는다.
고 레벨에서, 상기 FMAN(302)이 데이터 패킷(304)을 수신할 때, BMAN(226)으로부터 적절한 크기의 커널-사용자 스페이스 맵핑된 버퍼를 획득하고, 상기 수신된 패킷을 상기 버퍼로 카피하고, 상기 FMAN(302)은 (상기 PCD 규칙들에 따라) 상기 패킷을 인큐잉하는 진입 FQ(306)를 결정하고, 상기 데이터 패킷(304)을 상기 적절한 FQ(306)에 인큐잉하기 위해 상기 QMAN API(308)를 사용한다. 상기 데이터 패킷(304)이 하드웨어 레지스터(DQRR; 328)까지 가면, 상기 명시된 코어(코어 Y(312)와 같이)에 대해 포털 방해가 발생된다. 즉, 상기 QMAN은 다양한 채널들에 대해 모든 FQ들을 처리한다. 상기 WQ들은 서비스 품질(QoS)을 구현하기 위해 존재한다. 따라서 일단 FQ에 인큐잉된 각각의 도착 패킷이 상기 QMAN 내의 내부 하드웨어 큐잉(queuing)을 통과한다. 상기 FQ들은 이를 큐의 앞에 있고 프로세싱을 위해 준비되어, 상기 QMAN에 의해 상기 DQRR 레지스터에 넣어지게 한다. 상기 DQRR 레지스터는 15 엔트리들의 깊이를 갖는다. 각각의 엔트리(상기 패킷 버퍼로의 포인터, 연관된 콜백 함수(callback function), 등과 같은 상기 FQ에 관한 정보를 포함하는 프레임 큐 서술자인)가 ISR(Interrupt service routine)의 상기 등록된 콜백 함수(330)에 의해 서비스됨에 따라, 상기 QMAN(308)은 다음 FQ 서술자를 상기 DQRR에 자동으로 인큐잉한다.
그 후 상기 FQ(306)를 위한 CAL DPA Driver(314)의 일부인 상기 등록된 콜백 함수 "UplaneDispatcher"(330)가 커널 스페이스에서 실행되고 적절한 패킷 프로세싱을 수행한다. DL 스케줄러의 각각의 인스턴스를 위한 버퍼 서술자들의 링(320)은 링 ID를 갖는다. 상기 버퍼 서술자의 링(320)은 또한 CAL(128)의 상기 사용자 스페이스(CALMSG(326)와 같은), 및 커널 스페이스(CAL DPA Driver(314)와 같은) 구성요소들로 하여금 어떠한 문제도 해결하지 않고, 데이터 카피를 필요로 하지 않고 액세스하도록 커널-사용자 스페이스(K-U) 맵핑된다. 셀 초기화 동안 상기 CALMSG(326)는 사용자 애플리케이션 DL Scheduler(324)가 자신을 CALMSG(326)에 등록하도록 하는 서비스를 제공한다. 그 때 상기 진입 FQ(306)와 상기 링 ID(320) 간의 맵핑 연관이 또한 생성된다. 상기 콜백 함수(330)는 이 특정한 프레임 큐 서술자가 속한 링 ID(320)를 결정하고, 상기 커널-사용자 스페이스 맵핑된 버퍼 포인터(임의의 부기(book-keeping) 정보와 함께)를 카피함으로써 버퍼 서술자를 생성하고 상기 버퍼 서술자를 특정한 데이터 차원 코어 Y(312) 상의 상기 연관된 사용자 스페이스 DL 스케줄러 쓰레드(324)에 의한 나중의 프로세싱을 위해 적절한 커널-사용자 스페이스 맵핑된 버퍼 서술자들의 링(320)에 인큐잉한다.
상기 DL 스케줄러 프로세스(324)는 사용자 스페이스의 끝없는 "완료까지 실행(Run to Completion)" 모드에서 실행한다. 상기 실시간 쓰레드는 △T 시간마다 웨이크 업(wakes up)하고, 상기 버퍼 서술자들의 링(320) 상에서의 소비를 위해 인큐잉된 패킷들이 있다면, 조사를 위해 상기 CALMSG(326) API를 불러낸다. 있다면, 상기 DL 스케줄러(326)는 상기 링(320) 상의 패킷들을 프로세스(또는 소비)한다. 상기 수신된 패킷이 상기 표준 프로토콜 스택을 통과하지 않기 때문에, 상기 전체 패킷 헤더(TCP/UDP/IP/Ethernet)를 포함한다. 상기 DL 스케줄러(324)는 상기 패킷 헤더를 무시하고, 상기 패킷 페이로드 상에서 동작한다. 완료될 때, 상기 CALBUF(204) API들을 사용하여 상기 버퍼를 해제한다. 상기 DL 스케줄러(324)에 대해 프로세스할 패킷들이 더 이상 없다면, 상기 DL 스케줄러 쓰레드(324)는 다시 슬립(sleep)한다. 단 하나의 프로듀서(CAL DPADriver(314)) 및 각각의 버퍼 서술자들의 링(320)에 대한 하나의 소비자(특정한 DL 스케줄러 쓰레드(324)) 만이 있기 때문에, 이 스킴은 어떠한 소프트웨어 락도 필요로 하지 않는 원자 조작(atomic operations)으로 구현될 수 있다. 또 다른 장점은 상기 버퍼 서술자들의 링(320)과 같은 버퍼 서술자들의 링과 함께 커널-사용자 스페이스 맵핑된 버퍼들을 사용함으로써 달성된다. 상기 커널-사용자 스페이스 맵핑된 버퍼들의 사용은 상기 패킷이 상기 커널-스페이스 디바이스 드라이버들로부터 사용자 스페이스의 최종 목적지로 가로지를 것이기 때문에 데이터 카피에 대한 어떠한 필요성도 제거한다.
예시적인 실시예에서, 상기 제어 차원 트래픽 및 데이터 차원 트래픽은 서로 분리되고 별개의 이더넷 인터페이스들로 지향된다. FMAN(302)은 다중 이더넷 인터페이스들을 지원할 수 있다. 상기 리눅스 프로토콜 스택은 상기 제어 차원 코어 X(332)에 묶이고 실행한다. 상기 CAL PCD 모듈은 상기 FMAN(302)으로 하여금 상기 제어 차원 이더넷 인터페이스에 도착하는 모든 패킷들(304)을 커널 스페이스에서 실행하는 상기 FSL DPA Driver(336)에 의해 처리될 프레임 큐(FQ; 334)에 인큐잉하도록 하는 정적 PCD 규칙들을 셋업한다. 상기 Driver(336)는 상기 패킷들을 상기 리눅스 프로토콜 스택(338)으로 핸드오버한다. 사용자 스페이스 경계로 상기 커널 스페이스를 가로지르는 패킷으로서 데이터 카피가 또한 수반된다. 이는 도 3의 왼쪽에 도시된다.
데이터 차원 코어에 대한 인입 데이터 패킷에 대한 프로세스 흐름의 고-레벨 도면이 도 4에 도시된다. 도 4의 방법은 도 3에 도시된 장치에 의해 구현될 수 있다.
단계 410에서, DL 스케줄러(320)는 자신을 상기 CALMSG(326)에 등록한다. 상기 시스템은 또한 상기 커널 스페이스 엔티티(CALDPAADriver(314)와 같은) 및 상기 사용자 스페이스 엔티티(CALMSG(326)와 같은) 모두로 하여금 상기 링에 액세스하도록 하는 커널-사용자 스페이스(K-U) 맵핑된 버퍼 서술자들의 링(320)을 생성한다. 이 단계는 상기 모뎀 보드 상의 각각의 구성된 셀에 대해 상기 CALDPAADriver 모듈(314)과 함께 상기 CALMSG(326)에 의해 수행될 수 있다. 따라서, 모뎀 보드 상에 지원된 3개의 셀들이 있다면, 3개의 별개의 버퍼 서술자들의 링(320)(각 셀에 대해 하나)이 있고, 상기 CALDPAADriver(314)는 상기 진입 FQ(306)를 특정한 버퍼 서술자들의 링(320)으로 맵핑할 것이다. 예시적인 실시예에서, 각각의 DL SCHEDULER 인스턴스(324)에 대해 하나의 버퍼 서술자들의 링(320)이 있다. 상기 버퍼 서술자들의 링은 판독 포인터 및 기록 포인터를 갖는다. 단 하나의 프로듀서(예를 들어, 커널 스페이스의 CALDPAADriver(314)의 uplaneDispatcher(330)와 같은) 및 하나의 소비자(사용자 스페이스의 특정한 DL Scheduler(324)와 같은) 만이 있기 때문에, 상기 버퍼 서술자들의 링(320)은 원자 조작을 사용하여 락-리스 방식으로 구현된다.
단계 420에서, 전용 데이터 차원 이더넷 인터페이스가 데이터 패킷(304)을 수신한다.
단계 430에서, 상기 FMAN(302)은 상기 BMAN(도 2, 226)으로부터 커널-사용자 스페이스 맵핑된 버퍼/토큰을 획득한다.
단계 440에서, 상기 FMAN(302)은 상기 수신된 데이터 패킷(304)을 상기 획득된 버퍼에 삽입한다.
단계 450에서, 셀 초기화 동안(IP 어드레스와 진입 FQ(306) 사이에 맵핑을 제공하는) 상기 CAL 모듈(CALMSG(206))에 의해 셋업된 다이내믹 PCD 규칙들에 따라 QMAN(308)의 도움으로 상기 FMAN(302)은 상기 패킷을 적절한 FQ(306)에 인큐잉한다.
단계 460에서, 상기 패킷이 상기 하드웨어 DQRR 레지스터(328)로 향할 때, 상기 시스템은 P4080 멀티-코어 프로세서를 통해, 코어 Y(312)(데이터 차원 코어)를 위한 소프트웨어 포털(316)에 대한 방해를 생성한다. 명시된 FQ(이 경우 uplaneDispatcher(330))에 등록된 콜백 함수가 상기 패킷을 프로세싱하기 위해 커널 스페이스의 ISR 루틴으로서 실행할 것이다. 본질적으로, 상기 콜백 함수는 프로세스될 상기 DQRR 엔트리의 프레임 큐 서술자(FD)에 포함된 정보로부터 버퍼 서술자를 생성한다. 상기 FD로부터의 버퍼 포인터는 어떤 부가적인 부기 정보와 함께 상기 버퍼 서술자로 카피된다.
단계 470에서, 상기 CALDPAADriver(314)는 단계 460으로부터 생성된 버퍼 서술자를 코어 Y(312)와 연관된 버퍼 서술자들의 링(320)에 인큐잉한다.
단계들 410 내지 470은 CALDPAADriver(314)(예를 들어, 상기 uplaneDispatcher(330))의 커널 쓰레드와 함께 하드웨어(FMAN, 및 QMAN)에 의해 수행된다. 예시적인 실시예에서, 단계들 480 내지 495는 프로세스 또는 상기 프로세스(들)에 독립적인 쓰레드 또는 단계들 410 내지 470을 수행한 쓰레드(들)에서 수행된다. 이러한 방식으로, 단계들 480 내지 495는 상기 데이터 차원 코어 Y(312) 상의 DL 스케줄러(324)와 같은 사용자 스페이스 쓰레드들에 의해 수행된다.
단계들 410 내지 470과 동시에, 상기 DL 스케줄러(324)는 끝없는 완료까지 실행 모드에서 실행하고 TTI(Time-To-Interrupt) 간격으로 웨이크 업한다. 단계 480에서, 한 번 깨면(awake), 상기 DL 스케줄러(324)는 소비를 위해 상기 버퍼 서술자들의 링(320)에 임의의 프로세싱되지 않은 패킷들이 있는지 여부를 쿼리하기 위해 CALMSG API(326)를 부른다. 상기 버퍼 서술자들의 링(320)에 프로세싱되지 않은 데이터 패킷들이 없다면, 상기 DL SCHEDULER(324)는 프로세싱되지 않은 패킷들이 없다는 것을 나타내는 비-차단 응답을 CALMSG 모듈(326)로부터 수신할 것이다. 그 후 상기 DL Scheduler 쓰레드(324)는 다음 TTI까지 슬립한다.
단계 485에서, 상기 DL Scheduler(324)가 프로세싱되지 않은 데이터 패킷들이 있다고 결정하면, 상기 방법은 단계 490으로 진행하고, 그렇지 않으면 방법은 495로 진행한다.
단계 490에서, 상기 DL Scheduler(324)는 상기 버퍼 서술자들의 링(320)의 다음 데이터 패킷을 프로세스한다. 상기 다음 패킷은 상기 링의 판독 포인터에 의해 표시된다. 상기 데이터 패킷이 프로세스된 후, 상기 DL Scheduler(324)는 상기 CALBUF(204) API들을 사용하여 상기 K-U 맵핑된 버퍼를 해제한다. 예시적인 실시예에서, 상기 프로세스될 데이터 패킷은 하나 이상의 헤더들 및 페이로드 모두를 포함한다. 상기 DL Scheduler(324)는 상기 헤더를 무시하고 상기 페이로드 상에서 동작한다. 상기 헤더는 상기 패킷을 자신의 목적지로 라우팅하기 위해 사용되고, 상기 라우팅은 예시적인 실시예에서 프로토콜 스택을 사용하지 않고 달성된다. DL SCHEDULER(324)가 모든 패킷들을 프로세싱하면, 상기 방법은 DL SCHEDULER가 슬립하는 단계 495로 진행한다.
예시적인 실시예는 3개의 셀들(6개의 셀들까지 확장가능)을 지원한다. 각각의 셀은 자신의 전용 데이터 차원 코어에 묶이고 실행하는 자신의 DL 스케줄러(DL SCHEDULER 쓰레드(324))를 가질 것이다. 따라서, 예시적인 실시예에서, 3개의 상이한 데이터 차원 코어들에서 실행하는 최소 3개의 DL SCHEDULER(도 1, 116, 118, 및 120) 쓰레드들이 있다. 유사하게, 각각의 셀은 UL L2 스케줄러(UL SCHEDULER)를 필요로 한다. 따라서, 3개의 상이한 데이터 차원 코어들에서 실행하는 3개의 UL SCHEDULER 쓰레드들(도 1, 110, 112, 및 114)이 있다.
셀 셋업 동안, 상기 다이내믹 PCD 규칙들(즉, 진입 FQ들로 IP 어드레스들의 맵핑)이 상기 CALMSG 모듈(326)에 의해 셋업된다. 상기 CALMSG 모듈(326)은 또한 진입 FQ들의 버퍼 서술자들의 링 ID들로의 맵핑과 같은, 부기 함수들을 수행할 수 있다. 상기 PCD 규칙들은 각각의 패킷의 IP 어드레스를 시험하도록 상기 FMAN을 인에이블하고, 상기 패킷을 인큐잉할 FQ를 결정한다. 부가적인 부기 정보(진입 FQ(306)의 버퍼 서술자들의 링(320) ID로의 맵핑과 같은)는 상기 uplaneDispatcher 커널 쓰레드(330)로 하여금 인입 데이터 패킷과 연관된 주어진 버퍼 서술자를 넣을 버퍼 서술자들의 링(320)을 결정하게 한다. 따라서, 종래의 프로토콜 스택을 사용하지 않고 상기 진입 패킷들로 하여금 상기 데이터 차원 코어 Y(312)에서 실행하는 DL 스케줄러 쓰레드(324)에 이르도록 하는 락-리스 및 제로 카피 메시징 스킴이 달성된다.
도 5를 참조하면, 데이터 패킷들의 진출 데이터 흐름을 제공하도록 구성된 예시적인 BED(Backplane Ethernet Driver) DPA-기반 시스템(500)의 고-레벨 개요가 도시된다. 예시적인 실시예 500은 상기 진출 데이터 차원 트래픽을 송신하기 위해 상기 리눅스 프로토콜 스택을 사용하지 않는 솔루션을 제공한다. 도 5의 왼쪽은 전통적인 프로토콜 스택(538)을 사용하는 상기 제어 차원 코어 X(532)로부터 전송된 패킷들에 의해 취해진 경로를 도시한다. 제어 차원 코어 X(532) 상에서 실행하는 OAM&M(124)와 같은 상기 비-실시간 사용자 스페이스 애플리케이션이 프로토콜 스택(538)을 사용하여 TCP/UDP IP 패킷들을 전송한다. 상기 프로토콜 스택(538)은 커널 스페이스의 상기 FSL DPA 드라이버(536)로 상기 패킷을 포워딩한다. 사용자 스페이스의 상기 코어 X(532)로부터 커널 스페이스의 FSL DPA 드라이버(536)로 패킷을 포워딩하는 상기 프로세스는 데이터 카피를 필요로 한다. 상기 FSL DPA 드라이버(536)는 상기 패킷을 결국 QMAN(508)의 도움으로 FMAN(506)에 의해 서비스될 FQ(534)에 인큐잉하고, 상기 패킷은 상기 이더넷 인터페이스 상에서 송신된다. 상기 도면의 오른쪽은 상기 LTE L2 UL 스케줄러(502)가 상기 프로토콜 스택(538)을 사용하지 않고 실행하는 상기 데이터 차원 코어 Y(512)에서 발신된 패킷들에 대한 패킷 횡단을 도시하는 도면이다. 따라서 상기 진출 데이터 흐름은 무제한 레이턴시 스파이크들을 발생시키지 않는 락-리스 제로 카피 메시징 스킴을 또한 사용한다.
인출 데이터 패킷에 대한 프로세스 흐름(즉, 상기 데이터 차원 코어에 대한 진출 데이터 흐름)의 고-레벨 도면이 도 6에 도시된다. 도 6의 방법은 도 5에 도시된 장치에 의해 구현될 수 있다.
단계 610에서, 상기 UL scheduler(502)는 상기 CALBUF(522)로부터 커널-사용자 스페이스 맵핑된 버퍼들을 획득한다.
단계 620에서, 상기 UL scheduler(502)가 TCP/UDP IP 패킷을 송신할 준비가 될 때, 상기 UL scheduler(502)는 전체 패킷(헤더 및 페이로드와 함께)을 준비하고, 상기 CALMSG API(522)를 부른다.
단계 630에서, 상기 CALDPAADriver(524)의 도움으로 상기 CALMSG(522)는 상기 데이터 차원 이더넷 인터페이스와 연관된 상기 채널(CHB)의 적절한 진출 FQ(504)에 준비된 패킷을 인큐잉한다. 이러한 인큐잉은 상기 프로토콜 스택을 사용하지 않고 대신 무제한 레이턴시 스파이크들을 회피하기 위해 락-리스, 제로 메시징 스킴에 따라 수행된다.
선택적인 단계 640에서, 상기 QMAN(508)은 상기 인큐잉 동작이 성공적인지 아닌지 여부의 상태를 결정하고, 상기 상태를 수신하기를 그렇게 바란다면 이 응답은 상기 사용자 애플리케이션 UL Scheduler(502)로 돌아오는 모든 방식으로 전송된다.
단계 650에서, 상기 FMAN(506)은 QMAN(508)으로부터의 도움으로, 상기 다양한 FQ(504)로부터 모든 패킷들을 프로세싱한다. 상기 패킷이 커널 스페이스 경계로의 사용자-스페이스를 가로지를 때마다 콘텍스트 스위치가 수반되더라도, 데이터 카피는 수반되지 않는다. 따라서, 상기 FMAN(506)에 의한 상기 패킷들의 프로세싱은 하드웨어 효율적인 방식으로 수행되어 각각의 개별 코어는 성능 불이익이 없거나 무시할 정도이다. 각각의 UL Scheduler(302)는 상기 패킷들을 상기 이더넷 인터페이스 상으로 송신하기 위해 상기 타겟 채널(CH B 526) 상에 전용 FQ(504)를 갖는다. 또한 하나의 프로듀서(사용자 스페이스의 특정한 UL SCHEDULER 쓰레드(502) 인스턴스) 및 하드웨어의 상기 FMAN(506)에 의해 소비된 하나의 전용 진출 FQ(504)가 있다.
단계 660에서, 일단 패킷이 송신되면, 상기 FMAN(506)은 상기 버퍼를 BMAN(도 2, 226)으로 다시 해제한다.
당업자는 다양한 상기-설명된 방법들의 단계들이 프로그램된 컴퓨터들에 의해 수행될 수 있다는 것을 쉽게 인식할 것이다. 여기서, 일부 실시예들은 또한 프로그램 저장 디바이스들, 예를 들어, 명령들이 상기-설명된 방법들의 일부 또는 모든 단계들을 수행하는, 머신 또는 컴퓨터 판독가능하고 머신-실행가능하거나 컴퓨터-실행가능한 명령들의 프로그램을 인코딩하는 디지털 데이터 저장 매체를 포함하는 경향이 있다. 상기 프로그램 저장 디바이스들은 예를 들어, 디지털 메모리들, 자기 디스크들 및 자기 테이프들과 같은 자기 저장 매체, 하드 드라이브들, 또는 광학 판독가능 디지털 데이터 저장 매체일 수 있다. 상기 실시예들은 또한 상기-설명된 방법들의 단계들을 수행하도록 프로그램된 컴퓨터들을 포함하도록 의도된다.
상기 설명은 단순히 본 발명의 특정한 실시예들의 내용을 제공하고 이것들로 제한할 목적을 갖지 않는다. 이와 같이, 본 발명은 상기-설명된 실시예들만으로 제한되지 않는다. 오히려, 당업자는 본 발명의 범위 내에 있는 대안적인 실시예들을 상상할 수 있다고 인식된다.

Claims (10)

  1. 컴퓨터-구현 방법에 있어서,
    커널 스페이스 및 사용자 스페이스를 포함하는 멀티-코어 프로세서의 적어도 하나의 프로세싱 코어에 대해:
    커널-사용자 스페이스(K-U) 맵핑된 버퍼 및 대응하는 K-U 맵핑된 버퍼 포인터를 획득하는 단계;
    상기 버퍼에 데이터 패킷을 삽입하는 단계;
    상기 K-U 맵핑된 버퍼 포인터를 포함하는 프레임 서술자를 생성하는 단계;
    IP 어드레스들을 프레임 큐들에 맵핑하는 다이내믹 파싱, 분류, 및 분배(PCD) 규칙에 의해 명시된 프레임 큐에 상기 프레임 서술자를 삽입하는 단계;
    상기 프레임 서술자로부터 K-U 맵핑된 버퍼 서술자를 생성하는 단계; 및
    상기 K-U 맵핑된 버퍼 서술자를 순환 버퍼(circular buffer)에 삽입하는 단계를 포함하는, 컴퓨터-구현 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 데이터 패킷은 TCP(transmission control protocol) 또는 UDP(user datagram protocol) 패킷인, 컴퓨터-구현 방법.
  4. 제 3 항에 있어서,
    상기 순환 버퍼는 사용자-스페이스에서 실행하는 프로세스로 하여금 상기 커널에서 실행하는 프로세스에 의해 생성되거나 프로세스된 버퍼들로의 락-리스(lock-less), 제로 카피 액세스(zero copy access)를 갖도록 하는 K-U 맵핑된 버퍼 서술자들의 링(ring)이고,
    상기 순환 버퍼는 사용자-스페이스에서 실행하는 상기 프로세스로 하여금 프로토콜 스택을 사용하지 않고 상기 데이터 패킷을 프로세싱하도록 하는, 컴퓨터-구현 방법.
  5. 제 1 항에 있어서,
    상기 K-U 맵핑된 버퍼의 획득, 상기 버퍼에 상기 데이터 패킷의 삽입, 및 상기 순환 버퍼에 상기 버퍼 서술자의 삽입은 하드웨어 구성요소들과 함께 하나 이상의 커널 쓰레드들(threads)에 의해 수행되고,
    주기적인 간격들로 웨이크 업(wake up)하는 사용자 스페이스 쓰레드를 실행하는 단계로서, 상기 사용자 스페이스 쓰레드는, 웨이크 업할 때, 임의의 프로세싱되지 않은 버퍼 서술자들이 상기 순환 버퍼에 존재하는지 여부를 결정하도록 상기 순환 버퍼에 쿼리(query)하는, 상기 사용자 스페이스 쓰레드 실행 단계; 및
    프로세싱되지 않은 버퍼 서술자가 상기 순환 버퍼에 존재한다고 결정할 때, 동일하거나 상이한 사용자 스페이스 쓰레드를 이용하여 상기 버퍼 내의 데이터 패킷을 프로세싱하는 단계를 더 포함하는, 컴퓨터-구현 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
KR1020137014804A 2010-11-12 2011-10-19 통신 네트워크 애플리케이션들을 위한 락-리스 및 제로 카피 메시징 스킴 KR101549422B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/945,146 US8737417B2 (en) 2010-11-12 2010-11-12 Lock-less and zero copy messaging scheme for telecommunication network applications
US12/945,146 2010-11-12
PCT/US2011/056829 WO2012064471A1 (en) 2010-11-12 2011-10-19 Lock-less and zero copy messaging scheme for telecommunication network applications

Publications (2)

Publication Number Publication Date
KR20130087553A KR20130087553A (ko) 2013-08-06
KR101549422B1 true KR101549422B1 (ko) 2015-09-02

Family

ID=44999873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137014804A KR101549422B1 (ko) 2010-11-12 2011-10-19 통신 네트워크 애플리케이션들을 위한 락-리스 및 제로 카피 메시징 스킴

Country Status (8)

Country Link
US (1) US8737417B2 (ko)
EP (1) EP2638467B1 (ko)
JP (1) JP5726316B2 (ko)
KR (1) KR101549422B1 (ko)
CN (1) CN103210619B (ko)
ES (1) ES2848846T3 (ko)
TW (1) TWI451339B (ko)
WO (1) WO2012064471A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634302B2 (en) 2010-07-30 2014-01-21 Alcatel Lucent Apparatus for multi-cell support in a network
US8504744B2 (en) 2010-10-28 2013-08-06 Alcatel Lucent Lock-less buffer management scheme for telecommunication network applications
US8730790B2 (en) 2010-11-19 2014-05-20 Alcatel Lucent Method and system for cell recovery in telecommunication networks
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US9071499B2 (en) * 2011-03-28 2015-06-30 Citrix Systems, Inc. Systems and methods for emulating a NIC for packet transmission on hardware RSS unaware NICs in a multi-core system
US9357482B2 (en) 2011-07-13 2016-05-31 Alcatel Lucent Method and system for dynamic power control for base stations
CN102761489B (zh) * 2012-07-17 2015-07-22 中国科学技术大学苏州研究院 基于流水线模式的数据包零拷贝的核间通信方法
CN103475899B (zh) * 2013-07-30 2016-09-07 融创天下(上海)科技发展有限公司 数据分发方法和装置
CN103488717B (zh) * 2013-09-11 2017-02-22 北京华胜天成科技股份有限公司 一种无锁数据汇聚方法及装置
US9519514B2 (en) * 2014-01-29 2016-12-13 Marvell Israel (M.I.S.L) Ltd. Interfacing with a buffer manager via queues
US10015164B2 (en) 2014-05-07 2018-07-03 Cryptography Research, Inc. Modules to securely provision an asset to a target device
CN103945456B (zh) * 2014-05-12 2017-06-27 武汉邮电科学研究院 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法
CN104052676B (zh) * 2014-06-13 2017-12-05 华为技术有限公司 一种发送通路装置及发送通路的数据处理方法
CN104102494B (zh) * 2014-07-31 2017-07-25 武汉邮电科学研究院 无线通信基站空口数据cipher加速方法
US10257089B2 (en) 2014-10-30 2019-04-09 At&T Intellectual Property I, L.P. Distributed customer premises equipment
US10348621B2 (en) 2014-10-30 2019-07-09 AT&T Intellectual Property I. L. P. Universal customer premise equipment
US9817776B2 (en) 2015-01-19 2017-11-14 Microsoft Technology Licensing, Llc Memory descriptor list caching and pipeline processing
US10079779B2 (en) 2015-01-30 2018-09-18 Nicira, Inc. Implementing logical router uplinks
US10437523B2 (en) * 2016-02-25 2019-10-08 Red Hat Israel, Ltd. Secure receive packet processing for network function virtualization applications
DE102017124105A1 (de) * 2016-10-24 2018-04-26 Denso Corporation Verfahren zur Portierung einer Single-Core Steuerungssoftware auf ein Multi-Core Steuergerät oder zur Optimierung einer Multi-Core Steuerungssoftware
FR3063095B1 (fr) 2017-02-20 2019-03-15 Utilis Piece thermoplastique renforcee pour une structure porteuse
US10819820B1 (en) * 2017-03-24 2020-10-27 Amazon Technologies, Inc. On-path data caching in a mesh network
US10733096B2 (en) * 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
CN111209123A (zh) * 2019-12-26 2020-05-29 天津中科曙光存储科技有限公司 一种本地存储io协议栈数据交互方法和装置
CN114509993B (zh) * 2020-11-16 2023-06-20 沈阳中科数控技术股份有限公司 一种基于国产cpu的自主可控数控系统构建方法
CN112702275A (zh) * 2020-12-29 2021-04-23 迈普通信技术股份有限公司 基于每包转发的方法、装置、网络设备及计算机存储介质
TWI792728B (zh) * 2021-11-29 2023-02-11 瑞昱半導體股份有限公司 封包處理加速裝置
CN115334586B (zh) * 2022-10-17 2023-01-03 深圳市领创星通科技有限公司 数据转发方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005098623A2 (en) 2004-04-02 2005-10-20 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
US20080276056A1 (en) 2007-04-20 2008-11-06 The Regents Of The University Of Colorado Efficient Point-To-Point Enqueue And Dequeue Communications

Family Cites Families (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295133A (en) 1992-02-12 1994-03-15 Sprint International Communications Corp. System administration in a flat distributed packet switch architecture
US6141346A (en) 1995-07-19 2000-10-31 Fujitsu Network Communications, Inc. Point-to-multipoint transmission using subqueues
US5913230A (en) 1997-01-07 1999-06-15 Richardson; John J. Object and method for providing efficient multi-user access to shared operating system kernal code using instancing
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US7299052B2 (en) 1998-11-09 2007-11-20 Samsung Electronics Co., Ltd. System and method for reallocating a traffic channel in soft handoff state
US6606298B1 (en) 1999-06-30 2003-08-12 Cisco Technology, Inc. Module firmware recovery
US6842811B2 (en) 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US6999432B2 (en) 2000-07-13 2006-02-14 Microsoft Corporation Channel and quality of service adaptation for multimedia over wireless networks
US6799200B1 (en) 2000-07-18 2004-09-28 International Business Machines Corporaiton Mechanisms for efficient message passing with copy avoidance in a distributed system
US7089289B1 (en) 2000-07-18 2006-08-08 International Business Machines Corporation Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
US6735620B1 (en) 2000-07-18 2004-05-11 International Business Machines Corporation Efficient protocol for retransmit logic in reliable zero copy message transport
US6584330B1 (en) 2000-07-18 2003-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive power management for a node of a cellular telecommunications network
JP2002050996A (ja) 2000-07-31 2002-02-15 Sony Corp 整数倍相互関係を有するブロック長を用いて符号化された信号を通信伝送路を介して送信する通信システム
US7089335B2 (en) 2000-10-30 2006-08-08 Microsoft Corporation Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device
US7096034B2 (en) 2001-10-01 2006-08-22 Microsoft Corporation System and method for reducing power consumption for wireless communications by mobile devices
US7768522B2 (en) 2002-01-08 2010-08-03 Apple Inc. Virtualization of graphics resources and thread blocking
US7007042B2 (en) 2002-03-28 2006-02-28 Hewlett-Packard Development Company, L.P. System and method for automatic site failover in a storage area network
US7254812B1 (en) 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
US7093013B1 (en) 2002-06-19 2006-08-15 Alcatel High availability system for network elements
WO2004001615A1 (en) * 2002-06-19 2003-12-31 Telefonaktiebolaget Lm Ericsson A network device driver architecture
US7180866B1 (en) 2002-07-11 2007-02-20 Nortel Networks Limited Rerouting in connection-oriented communication networks and communication systems
US7020484B2 (en) 2002-10-29 2006-03-28 Qualcomm Incorporated Controlling multiple modems in a wireless terminal using energy-per-bit determinations
US7539853B2 (en) 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
US7810124B2 (en) 2003-01-28 2010-10-05 Thomson Licensing Robust mode staggercasting fast channel change
US7003597B2 (en) 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
ES2325957T3 (es) 2003-08-25 2009-09-25 Interdigital Technology Corporation Funcionamiento de enlace ascendente mejorado en una transferencia suave.
EP1678920B1 (en) 2003-10-15 2007-04-18 NTT DoCoMo, Inc. Apparatus and method for controlling an operation of a plurality of communication layers in a layered communication scenario
WO2005041533A1 (en) 2003-10-15 2005-05-06 Ntt Docomo, Inc. Apparatus and method for controlling an operation of a plurality of communication layers
US7206966B2 (en) 2003-10-22 2007-04-17 Hewlett-Packard Development Company, L.P. Fault-tolerant multi-core microprocessing
WO2005104576A1 (fr) 2004-04-22 2005-11-03 Utstarcom Telecom Co., Ltd. Systeme sans fil distribue destine a la commande centrale d'une ressource
JP4414305B2 (ja) 2004-08-19 2010-02-10 富士通株式会社 中継装置および中継装置の再起動方法並びに中継装置用ソフトウェアプログラム
US8888600B2 (en) 2004-08-25 2014-11-18 Igt Emulation methods and devices for a gaming machine
US7352693B2 (en) 2005-01-31 2008-04-01 Nextel Communications Inc. Fault tolerant wireless communication systems and methods
US7933197B2 (en) 2005-02-22 2011-04-26 Cisco Technology, Inc. Method and apparatus for constructing a repair path around a non-available component in a data communications network
US7620753B1 (en) 2005-03-17 2009-11-17 Apple Inc. Lockless access to a ring buffer
US8644246B2 (en) 2005-07-05 2014-02-04 Nokia Corporation Scheduling information at serving cell change
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7472261B2 (en) 2005-11-08 2008-12-30 International Business Machines Corporation Method for performing externally assisted calls in a heterogeneous processing complex
US20070113229A1 (en) 2005-11-16 2007-05-17 Alcatel Thread aware distributed software system for a multi-processor
DE602005007620D1 (de) 2005-12-14 2008-07-31 Ntt Docomo Inc Vorrichtung und Verfahren zur Bestimmung der Übertragungspolitik für mehrere und verschiedenartige Anwendungen
US8072879B2 (en) 2006-02-03 2011-12-06 Cisco Technology, Inc. Technique for determining whether to reestablish fast rerouted primary tunnels based on backup tunnel path quality feedback
US8689025B2 (en) 2006-02-21 2014-04-01 Qualcomm Incorporated Reduced terminal power consumption via use of active hold state
US7295952B1 (en) 2006-05-24 2007-11-13 International Business Machines Corporation Enabling high availability and load balancing for JMX Mbeans
US20080002681A1 (en) 2006-06-30 2008-01-03 Symbol Technologies, Inc. Network wireless/RFID switch architecture for multi-core hardware platforms using a multi-core abstraction layer (MCAL)
US20080002702A1 (en) 2006-06-30 2008-01-03 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (MCAL)
WO2008005793A2 (en) 2006-06-30 2008-01-10 Symbol Technologies, Inc. Systems and methods for processing data packets using a multi-core abstraction layer (mcal)
CN101106490B (zh) 2006-07-11 2012-01-04 华为技术有限公司 预置流分类器的建立方法及其系统和用户终端
JP2008020977A (ja) * 2006-07-11 2008-01-31 Sony Computer Entertainment Inc ネットワークプロセッサシステムおよびネットワークプロトコル処理方法
CN101491059B (zh) 2006-07-20 2013-02-13 高通股份有限公司 用于在包括gps的实用引擎与应用程序之间共享网络连接的方法和设备
US7873964B2 (en) 2006-10-30 2011-01-18 Liquid Computing Corporation Kernel functions for inter-processor communications in high performance multi-processor systems
US8059532B2 (en) 2007-06-21 2011-11-15 Packeteer, Inc. Data and control plane architecture including server-side triggered flow policy mechanism
US7936772B2 (en) * 2007-07-13 2011-05-03 International Business Machines Corporation Enhancement of end-to-end network QoS
US8055822B2 (en) 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US8194699B2 (en) 2007-09-21 2012-06-05 Intel Corporation Radio scheduler and data plane interface
US20100296428A1 (en) 2007-09-28 2010-11-25 Pin-Han Ho A robust system and method for wireless data multicasting using superposition modulation
US8527622B2 (en) 2007-10-12 2013-09-03 Sap Ag Fault tolerance framework for networks of nodes
EP2220884B1 (en) 2007-12-17 2019-08-14 Telefonaktiebolaget LM Ericsson (publ) Method and apparatus for mitigating cell outage
US7944815B2 (en) 2008-02-14 2011-05-17 Allied Telesis Holdings K.K. System and method for network recovery from multiple link failures
US7831710B2 (en) 2008-02-25 2010-11-09 International Business Machines Corporation Communication of offline status between computer systems
FI20085217A0 (fi) 2008-03-07 2008-03-07 Nokia Corp Tietojenkäsittelyjärjestely
CN101546276B (zh) 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US8024417B2 (en) 2008-06-04 2011-09-20 Microsoft Corporation Simple flow control protocol over RDMA
US8638790B2 (en) 2008-06-23 2014-01-28 Qualcomm Incorporated Method and apparatus for managing data services in a multi-processor computing environment
US20100029266A1 (en) 2008-07-02 2010-02-04 Nokia Corporation System and methods for quality of experience reporting
US7957297B2 (en) 2008-07-14 2011-06-07 Cisco Technology, Inc. Termination message for wireless wide area network routers
EP2313830B1 (en) 2008-08-13 2013-10-02 Hewlett-Packard Development Company, L.P. Dynamic utilization of power-down modes in multi-core memory modules
US20100080116A1 (en) 2008-09-29 2010-04-01 Qualcomm Incorporated Re-establishing a radio resource control connection with a non-prepared base station
US8271996B1 (en) 2008-09-29 2012-09-18 Emc Corporation Event queues
US8812714B2 (en) 2008-11-12 2014-08-19 Citrix Systems, Inc. Systems and methods for application fluency policies
KR101546780B1 (ko) 2008-12-18 2015-08-25 삼성전자주식회사 광대역 무선통신 망에서 서비스 플로우 변경 시 오류 처리를 위한 장치 및 방법
WO2010084688A1 (ja) 2009-01-20 2010-07-29 シャープ株式会社 移動局装置、基地局装置、無線リンク同期判定方法
JP5042248B2 (ja) 2009-01-22 2012-10-03 株式会社日立製作所 移動体通信システム、呼制御サーバ及びアクセスゲートウェイ装置
CN101801015B (zh) 2009-02-06 2014-03-12 中兴通讯股份有限公司 一种小区退服故障的处理方法及装置
KR101617048B1 (ko) 2009-06-01 2016-05-02 엘지전자 주식회사 다중 반송파 시스템에서 요소 반송파의 실패를 처리하는 방법 및 장치
US8099546B2 (en) 2009-06-09 2012-01-17 Red Hat, Inc. Mechanism for a lockless ring buffer in overwrite mode
US8413153B2 (en) 2009-06-12 2013-04-02 Freescale Semiconductor Inc. Methods and systems for sharing common job information
US20100322067A1 (en) 2009-06-19 2010-12-23 Qualcomm Incorporated Method and apparatus to faciliate reestablishing communications in a wireless network
US8737407B2 (en) 2009-06-22 2014-05-27 Citrix Systems, Inc. Systems and methods for distributed hash table in multi-core system
US9775046B2 (en) 2009-06-26 2017-09-26 Qualcomm, Incorporated Power management
US8400955B2 (en) 2009-09-21 2013-03-19 Samsung Electronics Co., Ltd. System and method for power saving by coordinated wake-up in a wireless multi-band network
US8892931B2 (en) 2009-10-20 2014-11-18 Empire Technology Development Llc Power channel monitor for a multicore processor
US8737262B2 (en) 2009-11-24 2014-05-27 Red Hat Israel, Ltd. Zero copy transmission with raw packets
US20130061231A1 (en) 2010-05-11 2013-03-07 Dong-Qing Zhang Configurable computing architecture
US9298768B2 (en) 2010-07-21 2016-03-29 Sqream Technologies Ltd System and method for the parallel execution of database queries over CPUs and multi core processors
US8634302B2 (en) 2010-07-30 2014-01-21 Alcatel Lucent Apparatus for multi-cell support in a network
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US20120093047A1 (en) 2010-10-14 2012-04-19 Alcatel-Lucent USA Inc. via the Electronic Patent Assignment System (EPAS) Core abstraction layer for telecommunication network applications
US8504744B2 (en) 2010-10-28 2013-08-06 Alcatel Lucent Lock-less buffer management scheme for telecommunication network applications
US8730790B2 (en) 2010-11-19 2014-05-20 Alcatel Lucent Method and system for cell recovery in telecommunication networks
US8861434B2 (en) 2010-11-29 2014-10-14 Alcatel Lucent Method and system for improved multi-cell support on a single modem board
US8675577B2 (en) 2010-12-20 2014-03-18 Intel Corporation Signaling techniques for a multimedia-aware radio and network adaptation
US20120207011A1 (en) 2011-02-11 2012-08-16 Renesas Mobile Corporation Method and apparatus for responding to an unrecoverable error
US9357482B2 (en) 2011-07-13 2016-05-31 Alcatel Lucent Method and system for dynamic power control for base stations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005098623A2 (en) 2004-04-02 2005-10-20 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
US20080276056A1 (en) 2007-04-20 2008-11-06 The Regents Of The University Of Colorado Efficient Point-To-Point Enqueue And Dequeue Communications

Also Published As

Publication number Publication date
JP2014501003A (ja) 2014-01-16
KR20130087553A (ko) 2013-08-06
TWI451339B (zh) 2014-09-01
JP5726316B2 (ja) 2015-05-27
ES2848846T3 (es) 2021-08-12
US8737417B2 (en) 2014-05-27
US20120120965A1 (en) 2012-05-17
WO2012064471A1 (en) 2012-05-18
TW201237762A (en) 2012-09-16
CN103210619B (zh) 2015-10-21
CN103210619A (zh) 2013-07-17
EP2638467A1 (en) 2013-09-18
EP2638467B1 (en) 2020-12-02

Similar Documents

Publication Publication Date Title
KR101549422B1 (ko) 통신 네트워크 애플리케이션들을 위한 락-리스 및 제로 카피 메시징 스킴
JP5726320B2 (ja) 単一のモデム・ボードにおける改善されたマルチセル・サポートのための方法およびシステム
US8504744B2 (en) Lock-less buffer management scheme for telecommunication network applications
JP5759006B2 (ja) 電気通信ネットワーク・アプリケーションのためのコア抽象化レイヤ
TW201316803A (zh) 用於基地台之動態功率控制的方法及系統
CN110214436A (zh) 一种多核无锁速率限制装置和方法
Budhdev et al. FSA: Fronthaul slicing architecture for 5G using dataplane programmable switches
Kundu et al. Hardware acceleration for open radio access networks: A contemporary overview
Chetlur et al. A software wimax medium access control layer using massively multithreaded processors

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 5