KR20100126592A - 임베디드 또는 무선 통신 시스템에서 메모리 할당을 위한 시스템 및 방법 - Google Patents

임베디드 또는 무선 통신 시스템에서 메모리 할당을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20100126592A
KR20100126592A KR1020107024521A KR20107024521A KR20100126592A KR 20100126592 A KR20100126592 A KR 20100126592A KR 1020107024521 A KR1020107024521 A KR 1020107024521A KR 20107024521 A KR20107024521 A KR 20107024521A KR 20100126592 A KR20100126592 A KR 20100126592A
Authority
KR
South Korea
Prior art keywords
memory
item
header
payload
size
Prior art date
Application number
KR1020107024521A
Other languages
English (en)
Other versions
KR101134195B1 (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 KR20100126592A publication Critical patent/KR20100126592A/ko
Application granted granted Critical
Publication of KR101134195B1 publication Critical patent/KR101134195B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Transceivers (AREA)
  • Telephone Function (AREA)
  • Communication Control (AREA)

Abstract

임베디드 또는 무선 디바이스들에서 향상된 메모리 할당 서비스를 위한 시스템들 및 방법들이다. 메모리는 컨테이너 메모리 아이템들 및 참조 메모리 아이템들의 조합을 이용하여 할당된다.

Description

임베디드 또는 무선 통신 시스템에서 메모리 할당을 위한 시스템 및 방법{SYSTEM AND METHOD FOR MEMORY ALLOCATION IN EMBEDDED OR WIRELESS COMMUNICATION SYSTEMS}
본 출원은 2008년 4월 2일 출원된 발명의 명칭이 "MEMORY ALLOCATION SCHEME FOR EMBEDDED OR WIRELESS COMMUNICATION SYSTEMS"인 미국 임시특허출원 번호 제61/041,878호에 우선권을 주장한다. 전술한 출원의 전체 내용은 참조에 의해 본원에 통합된다.
본 분야는 일반적으로 메모리 할당에 관한 것이고, 보다 구체적으로는 임베디드 또는 무선 통신 시스템들에서의 메모리 할당에 관한 것이다.
메모리 할당 서비스들은 메모리 아이템들의 풀들을 이용한다. 몇몇 경우들에서, 메모리 아이템들은 메모리 아이템의 크기에 기초하여 상이한 풀들로 소트(sort)된다. 예를 들어, 하나의 풀은 많은 수의 작은 메모리 아이템들로 이루어질 수 있는 한편 또 다른 풀은 비교적 적은 수의 큰 메모리 아이템들로 이루어질 수 있다. 메모리 할당 요청들에 응답하여, 적절한 데이터 아이템이 특정 풀로부터 선택되고 요청하는 엔티티로 반환될 수 있다. 이러한 시스템은 메모리 및 프로세서 자원들이 상당히 낭비되는 결과를 낳는다. 예를 들어, 작은 메모리 아이템들로는, 헤더 대 페이로드의 비율이 높아서 메모리의 비효율적인 이용을 낳는다. 또한 전체 메모리 아이템들이 할당될 때, 임의의 특정 데이터 아이템의 상당한 데이터 부분들이 미사용될 수 있다. 또한 이러한 할당 서비스들에서, 어떠한 통계적 멀티플렉싱도 이용가능하지 않다. 프로세서 자원들 또한 다수의 작은 메모리 아이템들의 체이닝(chaining)으로 인해 소모된다.
무선 통신 시스템들에서, 패킷들은 때때로 신뢰할만한 무선 송신을 보장하기 위해 작은 고정 크기 "무선 링크" 패킷들, 예를 들어 40 바이트로 세그먼트화된다. 메모리를 효율적으로 사용하기 위한 하나의 접근은 각각 40 바이트 블록을 보유하는 비교적 작은 메모리 아이템들의 큰 풀을 생성하는 것이고, 이것은 결국 보다 큰 데이터 블록들(예를 들어, 1500 바이트 IP 패킷들)을 형성하도록 보다 높은 계층들에서 함께 체이닝될 수 있다. 이러한 서비스의 한 단점은, 메모리 아이템들이 캐시 로우 배열(cache row aligned)(32 또는 64 바이트)되어야 하고 이것은 작은 무선 링크 패킷 크기에 맞지 않을 수 있기 때문에, 일부 공간이 낭비될 수 있다는 점이다. 또한 상이한 기술들이 전체 메모리로 축소(reduce)되도록 동일한 메모리 아이템 풀을 공유할 수 있고, 이러한 경우 메모리 아이템 페이로드 크기는 추가적으로 낭비를 증가시킬 수 있는 최대 무선 링크 패킷 크기에 맞도록 선택되어야 한다.
하나의 실시예에서, 메모리 관리를 위한 시스템이 제공된다. 상기 시스템은 프로세서 및 프로세서 상에서 실행가능한 메모리 관리 서비스를 포함한다. 상기 메모리 할당 서비스는 제 1 메모리 아이템들을 생성하도록 구성가능하고 ― 상기 제 1 메모리 아이템들 각각은 헤더 및 페이로드를 포함하며, 상기 페이로드는 다수의 독립적으로 할당가능한 메모리 청크(chunk)들을 저장하도록 구성가능하고 상기 제 1 메모리 아이템들의 헤더는 상기 페이로드 내의 할당가능한 공간을 참조함 ― 제 2 메모리 아이템들을 생성하도록 구성가능하며 ― 상기 제 2 메모리 아이템들 각각은 상기 제 1 메모리 아이템들의 페이로드 내의 하나 이상의 메모리 청크들을 참조하는 헤더를 포함함 ― 메모리 할당 요청에 응답하여 제 1 또는 제 2 메모리 아이템의 헤더로부터 참조를 반환하도록 구성가능하다.
또 다른 실시예에서, 메모리 관리를 위한 방법이 제공된다. 상기 방법은 제 1 메모리 아이템들을 할당하는 단계 ― 상기 제 1 메모리 아이템들 각각은 제 1 헤더 및 페이로드를 포함하고, 상기 페이로드는 독립적으로 할당가능한 메모리의 청크들을 포함하며, 상기 제 1 헤더는 페이로드 내의 미할당된(unallocated) 메모리에 대한 참조를 포함함 ―, 제 2 메모리 아이템들을 할당하는 단계 ― 상기 제 2 메모리 아이템들 각각은 제 2 헤더를 포함하고 상기 제 2 헤더는 제 1 메모리 아이템의 페이로드 내의 메모리의 할당된 청크에 대한 참조를 포함함 ―, 메모리 할당에 대한 요청들을 수신하는 단계, 및 제 1 또는 제 2 메모리 아이템의 헤더로부터 참조를 반환함으로써 메모리 할당에 대한 요청들에 응답하는 단계를 포함한다.
또 다른 실시예에서, 메모리 관리 시스템이 제공된다. 상기 시스템은 제 1 메모리 아이템들을 할당하기 위한 수단 ― 상기 제 1 메모리 아이템들 각각은 제 1 헤더 및 페이로드를 포함하고, 상기 페이로드는 독립적으로 할당가능한 메모리의 청크들을 포함하며, 상기 제 1 헤더는 페이로드 내의 미할당된 메모리에 대한 참조를 포함함 ―, 제 2 메모리 아이템들을 할당하기 위한 수단 ― 상기 제 2 메모리 아이템들 각각은 제 2 헤더를 포함하고 상기 제 2 헤더는 제 1 메모리 아이템의 페이로드 내의 메모리의 할당된 청크에 대한 참조를 포함함 ―, 메모리 할당에 대한 요청들을 수신하기 위한 수단, 및 제 1 또는 제 2 메모리 아이템의 헤더로부터 참조를 반환함으로써 메모리 할당에 대한 요청들에 응답하기 위한 수단을 포함한다.
또 다른 실시예에서, 컴퓨터 명령들로 인코딩된 컴퓨터 판독가능 매체가 제공된다. 상기 명령은 실행될 때 프로세서로 하여금, 제 1 메모리 아이템들을 할당하도록 하고 ― 상기 제 1 메모리 아이템들 각각은 제 1 헤더 및 페이로드를 포함하고, 상기 페이로드는 독립적으로 할당가능한 메모리의 청크들을 포함하며, 상기 제 1 헤더는 페이로드 내의 미할당된 메모리에 대한 참조를 포함함 ―, 제 2 메모리 아이템들을 할당하도록 하며 ― 상기 제 2 메모리 아이템들 각각은 제 2 헤더를 포함하고 상기 제 2 헤더는 제 1 메모리 아이템의 페이로드 내의 메모리의 할당된 청크에 대한 참조를 포함함 ―, 메모리 할당에 대한 요청들을 수신하도록 하고, 제 1 또는 제 2 메모리 아이템의 헤더로부터 참조를 반환함으로써 메모리 할당에 대한 요청들에 응답하도록 한다.
도 1은 모바일 디바이스의 예를 도시하는 블록 다이어그램이다.
도 2는 메모리 아이템들의 예를 도시하는 블록 다이어그램이다.
도 3은 메모리 아이템들의 또 다른 예를 도시하는 블록 다이어그램이다.
도 4a 및 도 4b는 메모리를 할당하기 위한 방법에 대한 예를 도시하는 블록 다이어그램이다.
도 5는 메모리 할당 서비스의 실행에 대한 다양한 예들을 도시하는 블록 다이어그램이다.
도 6은 메모리를 할당하기 위한 방법에 대한 또 다른 예를 도시하는 블록 다이어그램이다.
다음의 상세한 설명은 본 발명의 몇몇 특정 실시예들로 지향된다. 그러나 본 발명은 다수의 상이한 방법들로 구현될 수 있다. 본원의 양상들이 다양한 형태들로 구현될 수 있고 본원에서 개시되는 임의의 특정 구조, 기능, 또는 양자 모두는 단지 대표적인 예에 불과함이 명백할 것이다. 본원의 교시들에 기초하여 당업자는, 본원에서 개시된 양상이 임의의 다른 양상들과 독립적으로 구현될 수 있고 이러한 양상들 중 둘 이상이 다양한 방법들로 조합될 수 있음을 인식해야 한다. 예를 들어, 본원에서 제시된 임의의 수의 양상들을 이용하여 장치가 구현되거나 방법이 실시될 수 있다. 부가적으로, 본원에서 제시된 양상들 중 하나 이상에 부가하여 또는 이들 이외의 다른 구조, 기능, 또는 구조 및 기능을 이용하여 이러한 장치가 구현되거나 이러한 방법이 실시될 수 있다.
모바일 디바이스들은 전형적으로 동작하기 위해 메모리 할당 서비스들을 이용한다. 모바일 디바이스 내의 다양한 서브시스템들에 의해 요구되는 메모리의 전체 양을 줄이고 모바일 디바이스에 의해 소비되는 처리 자원들을 줄이기 위한 방법들 및 디바이스들이 본원에서 기술된다. 상기 방법들 및 디바이스들과 관련하여 이용될 수 있는 몇몇 아키텍처들이 이하 제시된다.
도 1은 모바일 디바이스(102)의 예를 도시하는 블록 다이어그램이다. 디바이스(102)는 메모리(204)와 통신하는 프로세서(202) 및 무선 링크(106)를 통해 통신하기 위한 네트워크 인터페이스(206)를 포함한다. 선택적으로, 디바이스(102)는 또한 디스플레이(210), 키, 터치 스크린, 또는 다른 적합한 촉감적(tactile) 입력 디바이스와 같은 사용자 입력 디바이스(212), 무선 링크(106)를 통해 수신된 신호에 기초하여 청취가능한 출력을 제공하도록 적응된 트랜스듀서를 포함하는 라우드스피커(214) 및/또는 무선 링크(106)를 통해 송신될 수 있는 신호의 청취가능한 입력을 제공하도록 적응된 트랜스듀서를 포함하는 마이크로폰(216) 중 하나 이상을 포함할 수 있다. 예를 들어, 폰은 그래픽 사용자 인터페이스(GUI)의 시각적 출력을 제공하도록 적응된 디스플레이(210)를 포함할 수 있다.
네트워크 인터페이스(206)는, 예시적인 디바이스(102)가 무선 링크(106)를 통해 하나 이상의 디바이스들과 통신할 수 있도록, 임의의 적합한 안테나(미도시), 수신기(220), 및 송신기(222)를 포함할 수 있다. 선택적으로, 네트워크 인터페이스(206)는 또한 프로세서(202)의 처리 요구사항들을 감소시키기 위한 처리 능력들을 가질 수 있다.
선택적으로, 디바이스(102)는 링크(108)를 통해 네트워크(110) 상에서 통신하는 제 2 네트워크 인터페이스(208)를 포함할 수 있다. 예를 들어, 디바이스(102)는 유선 또는 무선 통신 링크를 통해 다른 네트워크(110)(예를 들어, 인터넷과 같은 광대역 네트워크)로의 접속가능성을 제공할 수 있다. 따라서 디바이스(102)는 다른 디바이스들(102)(예를 들어, Wi-Fi 국)로 하여금 다른 네트워크(110)에 액세스하도록 할 수 있다. 부가적으로 디바이스들(102) 중 하나 이상이 휴대가능하거나 몇몇 경우들에서 비교적 비-휴대가능할 수 있음이 인식되어야 한다. 제 2 네트워크 인터페이스(208)는 IEEE 802.11(a), (b), 또는 (g)를 포함하는 IEEE 802.11 표준, 블루투스 표준, 및/또는 CDMA, GSM, AMPS에 따른 RF 신호들 또는 무선 셀 폰 네트워크 내에서 통신하는데 이용되는 공지의 신호들을 송신 및 수신할 수 있다. 부가적으로 제 2 네트워크 인터페이스(208)는 이더넷(IEEE 802.3), USB, 또는 MDDI와 같은 임의의 적합한 유선 네트워크 인터페이스를 포함할 수 있다.
디바이스(102)는 디바이스(102)의 하나 이상의 컴포넌트들에 전력을 제공하는 배터리(231)를 포함할 수 있다. 디바이스(102)는 폰, 스마트폰, 개인 휴대 정보 단말기(PDA), 울트라-모바일 개인용 컴퓨터(UMPC), 모바일 인터넷 디바이스(MID), 또는 임의의 다른 모바일 디바이스 중 적어도 하나를 포함할 수 있다. 특히 본원의 교시들은 다양한 디바이스들(102)로 통합(예를 들어, 그 안에 구현되거나 그에 의해 수행)될 수 있다.
본원에서 기술되는 컴포넌트들은 다양한 방법들로 구현될 수 있다. 도 1을 참조하면, 디바이스 또는 장치(102)는 예를 들어 프로세서(202), 소프트웨어, 이들의 어떤 조합에 의해서, 또는 본원에서 교시된 것처럼 어떤 다른 방식으로 구현되는 기능들을 나타낼 수 있는, 일련의 상호관련된 기능 블록들로서 표현된다. 예를 들어, 프로세서(202)는 입력 디바이스들(212)을 통해 사용자 입력을 용이하게 할 수 있다. 또한 송신기(222)는 또 다른 디바이스(102)로 정보를 송신하는 것과 관련된 다양한 기능들을 제공하는 송신을 위한 프로세서를 포함할 수 있다. 수신기(220)는 본원에서 교시된 것처럼 또 다른 디바이스(102)로부터 정보를 수신하는 것과 관련된 다양한 기능을 제공하는 수신을 위한 프로세서를 포함할 수 있다.
프로세서(202)는 또한 메모리 할당 서비스(203)와 통신한다. 일 실시예에서, 메모리 할당 서비스(203)는 프로세서(202) 상에서 작동된다. 메모리 할당 서비스(203)는 디바이스(102)에서 동작하는 하나 이상의 서브시스템들로부터의 메모리에 대한 요청들에 응답한다. 메모리 할당 서비스(203)의 방법 및 동작은 본원에서 이하 보다 상세히 기술될 것이다.
위에서 논의된 것처럼, 도 1은 몇몇 양상들에서 이러한 컴포넌트들이 적절한 프로세서 컴포넌트들을 통해 구현될 수 있음을 도시한다. 이러한 프로세서 컴포넌트들은 몇몇 양상들에서 적어도 부분적으로 본원에서 교시된 것과 같은 구조를 이용하여 구현될 수 있다. 몇몇 양상들에서, 프로세서는 이러한 컴포넌트들 중 하나 이상의 기능 중 일부 또는 모두를 구현하도록 적응될 수 있다. 몇몇 양상들에서 점선 박스들에 의해 표현된 컴포넌트들 중 하나 이상은 선택적이다.
하나 이상의 예시적인 실시예들에서, 제시된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 통해 구현될 수 있다. 소프트웨어로 구현되는 경우, 상기 기능들은 컴퓨터 판독가능한 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나, 또는 이들을 통해 전송될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 일 장소에서 다른 장소로 컴퓨터 프로그램의 이전을 용이하게 하기 위한 임의의 매체를 포함하는 통신 매체를 포함한다. 저장 매체는 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 물리적 매체일 수 있다. 예를 들어, 이러한 컴퓨터 판독가능한 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 장치들, 또는 명령 또는 데이터 구조의 형태로 요구되는 프로그램 코드 수단을 전달(carry) 또는 저장하는데 사용될 수 있고, 범용 또는 전용 컴퓨터, 또는 범용 또는 전용 프로세서에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다. 또한, 임의의 연결 수단이 컴퓨터 판독가능한 매체로 간주될 수 있다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 연선, 디지털 가입자 라인(DSL), 또는 적외선, 라디오파, 및 마이크로파와 같은 무선 기술들을 통해 전송되는 경우, 이러한 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오파, 및 마이크로파와 같은 무선 기술들이 이러한 매체의 정의 내에 포함될 수 있다. 본원에서 사용되는 disk 및 disc은 컴팩트 disc(CD), 레이저 disc , 광 disc, DVD, 플로피 disk, 및 블루-레이 disc를 포함하며, 여기서 disk는 데이터를 자기적으로 재생하지만, disc은 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기 조합들 역시 컴퓨터 판독가능한 매체의 범위 내에 포함될 수 있다.
메모리 할당 서비스의 일 양상에 따라, 작은 메모리 블록들이 보다 큰 고정 크기 유닛들("DSM 아이템들"로 지칭)로 팩킹(pack)된다. 보다 작은 블록들 각각은 "DUP"(복제; duplicate) 아이템들을 이용하여 추적되고, 이러한 아이템들은 DSM 내의 페이로드를 포인팅(point)한다. DSM 아이템들이 제한된 크기를 가지고 DSM 내의 모든 블록들이 유사한 제한된 수명을 가진다고 가정될 수 있기 때문에, 각 DSM 내의 자유(free) 메모리의 단편화(fragmentation)를 다룰 필요가 없다. 이것의 이점은, 각 DSM 내의 단지 작은 부분만이 낭비되기 때문에 메모리 이용이 크기 감소될 수 있다는 점이지만, 이는 높은 팩킹 효율을 가진 다른 메모리 할당 기술들의 복잡성의 부분에서이다. 이것을 바라보는 또 다른 방법은 이것이 고정된 크기 할당 서비스 및 플렉서블 크기 할당 서비스의 하이브리드라는 점이고, 여기서 메모리는 전체적으로 고정된 크기 블록들로 할당되지만, 플렉서블 할당들이 짧은 수명을 가진다고 기대되므로 블록들 내에서 플렉서블 크기 할당들이 허용된다.
일 양상에서, 기초적인 메모리 블록은 DSM 아이템으로 지칭된다. 그것은 헤더 및 페이로드 섹션으로 이루어진다. 데이터의 블록이 메모리에 저장되어야 할 때, 새로운 DSM 아이템이 할당되고, 데이터는 DSM의 페이로드 섹션에 복사된다. 부가적으로 헤더들은 데이터의 시작 및 길이를 반영하도록 업데이트된다. 데이터의 길이가 페이로드 섹션의 크기를 초과하는 경우 다수의 DSM 아이템들은 링크된 목록으로 함께 체이닝(chain)될 수 있다.
또한 DUP("복제")이라 표시되는 DSM 아이템의 특정 유형이 규정된다. DUP는 정규의 DSM과 동일한 헤더 구조를 사용하지만, 그 자신의 페이로드 섹션을 가지지 않는다. 대신에 그것은 다른 곳의, 예를 들어 보통의 DSM 내의, 데이터 섹션을 포인팅할 수 있다. 얼마나 많은 DUP들이 동일한 DSM 아이템의 데이터를 포인팅하는지 추적하기 위해서, "ref_count"라 표시된 헤더 필드가 있고, 이것은 이러한 DSM 아이템에 대한 참조들의 수를 카운트하고 원래의 DSM이 처음 할당될 때 1로 설정된다. DSM 아이템 내에서 포인팅하는 새로운 DUP가 생성될 때마다, DSM 아이템의 ref_count는 증가된다. 유사하게도, DUP가 해제(free up)될 때, 원래의 DSM 아이템의 ref_count는 감소된다. 이런 식으로, 할당 알고리즘은 DSM 아이템이 실제로 해제될 수 있는 시기를 인식할 수 있고, 이것은 단지 어떤 다른 DUP들도 이러한 패킷의 페이로드 섹션을 포인팅하지 않는 때이고, 이것은 ref_count가 0으로 복귀한 때이다.
DUP들은 원래의 데이터를 손댈 필요 없이 패킷들을 분할하고 데이터를 재배열(reorder)하며 헤더들을 제거 등을 하는데 이용될 수 있다. 이것은 모두 단지 DSM 및 DUP 헤더들을 다룸(manipulate)으로써 성취될 수 있다.
또 다른 양상에 따라, 메모리 효율을 향상시키기 위해 동일한 DSM 아이템으로 데이터를 팩킹하는 것을 허용하는 기술들은 이전에 언급된 단점들 중 몇몇을 다룰 수 있다. 이러한 양상에 따라, 큰 DSM 아이템들의 풀이 규정된다. 큰 DSM 크기는 다수의 무선 링크 패킷들로부터의 데이터로 하여금 동일한 DSM 아이템으로 연접(concatenate)되도록 할 것이다.
도 2는 메모리 할당 서비스에 대한 메모리 아이템들을 도시하는 블록 다이어그램이다. 메모리 할당 서비스는 응용 프로그램 인터페이스(API)를 포함할 수 있다. 이러한 API는 디바이스(102)에 존재하는 서브시스템들과 같은 서브시스템들에 의한 액세스를 위해 이용가능할 수 있다. 이러한 메모리 할당 서비스는 프로세서(202) 또는 다른 유사한 처리 디바이스에 의해 전체적 또는 부분적으로 실행될 수 있다. 또한 API는 디바이스(102)와 같은 모바일 또는 무선 디바이스에 대한 운영 체제의 일부를 형성할 수 있다. 대안적으로 API는 소프트웨어 라이브러리의 일부를 형성할 수 있다. 도 2에서, 제 1 유형의 메모리 아이템(610)이 도시된다. 이러한 제 1 유형의 메모리 아이템(610)은 데이터 서비스 관리("DSM") 아이템으로 지칭될 수 있다. 대안적으로 그것은 컨테이너 아이템으로 지칭될 수 있다. 이러한 컨테이너 유형 메모리 아이템들(610)은 메모리 아이템들(605)의 풀로 조직된다. 단일한 풀(605)이 도시되는 한편, DSM 아이템들의 다수의 풀들 또한 이용될 수 있음이 인식될 것이다. 각각의 풀은 풀에 의해 서비스되는 서브시스템 또는 아이템 크기와 같은 하나 이상의 공통적 특성에 의해 특성화될 수 있다.
메모리 아이템들(610)의 확대도 또한 도 2에 제공된다. 확대도에 도시된 것처럼, 이러한 컨테이너 유형 아이템들(610)은 다수의 섹션들을 포함한다. 메모리 아이템의 제 1 섹션은 헤더(615)라 지칭될 수 있다. 헤더(615)는 메모리 아이템(610)의 나머지 부분들에 대한 정보 및 다른 정보를 저장할 수 있다. 메모리 아이템(610)의 제 2 섹션은 페이로드라 지칭될 수 있다. 페이로드는 그 자체로 메모리(620)의 몇몇 할당된 부분들 또는 블록들을 가질 수 있다. 부가적으로 페이로드는 미할당된 또는 미사용된 공간(625)을 가질 수 있다. 일 실시예에서 페이로드는 대략 1500 바이트, 대략 IP 패킷을 저장하는데 필요한 크기를 포함할 수 있다.
메모리 아이템(610)의 헤더(615)는 메모리 아이템(610) 내의 미할당된 공간(625)에 대한 참조와 같은 정보를 포함할 수 있다. 일 예에서, 이러한 참조는 메모리 아이템(610) 내의 미할당된 공간(625)의 시작 주소를 나타내는 포인터의 형태를 취한다. 데이터 아이템(610) 내의 미할당된 메모리(625)에 대한 이러한 참조는 또한 "data_ptr"라 지칭될 수 있다. 헤더는 또한 할당된 메모리(620)의 크기를 나타내는 필드를 포함할 수 있다. 할당된 공간의 이러한 양은 페이로드 내의 "사용된" 공간이라 지칭될 수 있다. 헤더는 또한 메모리 아이템(610)과 연관된 메모리 풀(605)을 식별하는 식별자를 나타내는 필드를 포함할 수 있다. 이러한 식별자는 "pool_id"라 지칭될 수 있다. 헤더는 또한 메모리 아이템(610)에 대한 참조들의 수를 나타내는 필드를 포함할 수 있다. 예를 들어 이하 기술되는 것처럼, 메모리 아이템(610)은 다른 메모리 아이템들에 의해 참조될 수 있다. 예를 들어, 페이로드의 할당된 청크들(620) 각각은 상이한 메모리 아이템에 의해 참조된다. 또한 메모리 아이템(610)의 헤더(615)는 페이로드의 미할당된 부분(625)을 참조한다. 이러한 참조들의 카운트는 특히, 이후 재할당되기 위해 언제 메모리 아이템(610)이 해제되어 풀(605)로 반환될 수 있을지를 결정하기 위한 목적으로 이용될 수 있다. 이러한 참조 카운트는 "참조들"이라 지칭될 수 있다. 헤더(615)는 또한 다른 메모리 아이템들에 대한 하나 이상의 참조들을 포함할 수 있다. 예를 들어 메모리의 요청된 청크가 너무 커서 단일한 메모리 아이템(610)에 맞지 않는 경우, 헤더 내의 참조들은 요청을 충족시키기 위해 함께 체이닝될 수 있는 하나 이상의 추가적인 메모리 아이템들을 나타내는데 이용될 수 있다. 참조되는 메모리 아이템들의 유형에 의존하여, 이러한 참조들은 "pkt_ptr" 또는 "dup_ptr"라 지칭될 수 있다. 예를 들어, pkt_ptr는 0개 이상의 DSM 또는 컨테이너 아이템들을 참조할 수 있는 한편 dup_ptr는 0개 이상의 DUP 아이템들을 참조할 수 있다. 식별된 필드들에 부가하여, 헤더(615)는 테스트 목적들로 이용되는 사용자 정의 필드 또는 필드들과 같은 추가적인 필드들을 포함할 수 있다. 부가적으로 헤더(615)는 식별된 필드들 중 하나 이상을 생략할 수 있다.
도 2는 또한 제 2 유형의 메모리 아이템(630)을 도시한다. 이러한 제 2 유형의 메모리 아이템은 복제 또는 "DUP" 메모리 아이템으로 지칭될 수 있다. 이러한 DUP 아이템들(630)은 컨테이너 메모리 아이템들(610)의 헤더(615)와 유사한 헤더를 포함한다. 예를 들어, DUP 아이템들은 DSM 아이템 헤더(615)와 동일한 필드들을 가질 수 있다. 대안적으로, DUP 아이템들은 보다 많거나 보다 적은 필드들을 가질 수 있다. 그러나 이러한 DUP 아이템들은 그들 자신의 페이로드를 가지지 않는다. 오히려 DUP 아이템 헤더들(630)은 컨테이너 메모리 아이템들에 대한 참조들을 포함한다. 하나의 특정 예에서, DUP 아이템(630)은 메모리 아이템(610)의 할당된 부분(620)에서 제 1 할당 메모리 블록을 나타내는 포인터를 포함한다. 이러한 DUP 아이템들(630)은 또한 하나 이상의 풀들(640)로 배열(arrange)될 수 있다. 컨테이너 아이템들의 풀들(605)과 유사하게, 다수의 DUP 아이템 풀들이 이용될 수 있다. 예를 들어, 도 2는 2개의 DUP 아이템 풀들(640 및 650)을 도시한다. 일 예에서, 임베디드 디바이스 또는 무선 통신 디바이스 내의 각 서브시스템은 DUP 아이템들의 그 자신의 풀을 가진다. 이러한 실시예에서, 풀(640)은 하나의 특정 서브시스템에 대응할 수 있는 한편 풀(650)은 또 다른 서브시스템에 대응할 수 있다. 도 2에 도시된 것처럼, 하나의 실시예는 별개의 풀들로부터의 DUP 아이템들이 단일한 DSM 아이템(610) 내의 메모리(620)의 블록들을 참조할 수 있음을 제시한다.
도 3은 도 2에 도시된 메모리 아이템들의 대안적인 실시예를 도시한다. 이전과 마찬가지로, DSM 아이템들(715)의 단일한 풀이 이용될 수 있다. 그러나 이번에는 DUP 아이템들(730 및 735)의 각 풀이 상이한 DSM 아이템들(725 및 720)의 할당된 부분들을 각각 참조한다. 위에서 기술된 것처럼, DSM 아이템들은 페이로드에 대한 모든 참조들이 일단 해제되면 재할당을 위해 DSM 풀(715)로 반환될 수 있다. 그러나 다수의 서브시스템들이 동일한 DSM 아이템으로의 DUP 참조들을 가지도록 허용될 때, 단편화가 발생할 수 있다. 예를 들어, 특정 DSM에서 제 1 서브시스템에 할당된 메모리 모두가 이미 해제되었을 수 있다. 그러나 작은 블록이 또 다른 서브시스템으로부터 DUP에 의해 여전히 참조되는 경우, 제 2 서브시스템이 그것의 작은 메모리 블록을 해제할 때까지 페이로드 내의 잔존 메모리는 해제되도록 기다려야 할 수 있다. 이러한 문제를 최소화하기 위해, 각 서브시스템은 그 자신의 DSM들로의 그 자신의 DUP 참조들을 가질 수 있다. 이런 식으로, 특정 DSM에서 할당된 메모리 부분들의 수명들은 동일할 가능성이 보다 높다. 수명들의 유사함에 의해 결과적으로 단편화가 감소된다.
도 4a 및 도 4b 는 메모리를 할당하기 위한 방법(780)의 실시예를 도시한다. 이러한 방법(780)은 프로세서(202)와 같은 프로세서 상에서 작동되는 서비스로서 실행될 수 있다. 상기 방법(780)은 메모리 할당 요청들의 수신 및 할당된 메모리에 대한 참조들의 반환을 용이하게 한다. 이하 기술되는 것처럼, 할당된 특정 참조는 요청하는 서브시스템에 대한 현재 메모리 할당 상황 및 요청된 메모리 블록의 크기의 함수일 수 있다. 몇몇 단계들이 특정 애플리케이션의 요구사항들 또는 스펙(specification)에 적합하도록 생략될 수 있음에 주목해야 한다. 본원에서 기술되는 몇몇 단계들은 최적화된 것들이고 따라서 시스템 설계자의 판단에 따라 선택적으로 이용 또는 생략될 수 있음에 또한 주목해야 한다.
방법(780)은 메모리 할당 서비스가 단계(785)에서 메모리 요청을 수신할 때 시작된다. 메모리 요청의 일부로서, 요청하는 서브시스템은 메모리의 요청되는 크기를 특정할 수 있다. 요청하는 서브시스템은 또한, 메모리 할당 서비스가 이러한 서브시스템에 대해 적절한 DSM 아이템을 선택할 수 있도록 서브시스템 ID를 공급할 수 있다. 메모리 요청을 수신한 후, 메모리 할당 서비스는 결정 단계(790)에 도시된 것처럼 요청된 크기가 현재 DSM 컨테이너 아이템 내의 미할당된 메모리의 크기보다 작은지 여부를 결정한다. 도 2 및 도 3과 관련하여 기술된 것처럼, DSM 아이템들은 페이로드 섹션 내의 미할당된 공간을 가질 수 있다. 결정 단계(790)는 요청된 크기와 미할당된 부분의 크기를 비교함으로써 수행될 수 있다. 대안적으로 페이로드의 전체 크기가 알려져 있으므로, 요청된 양은 페이로드의 할당된 부분의 크기와 비교될 수 있다. 또 다른 실시예에서, 비교를 위해 메모리의 요청된 크기를 이용하는 것보다는, 증대된(augmented) 요청이 캐시 경계들과 정렬되도록 메모리 할당 시스템은 요청의 크기를 증가시킬 수 있다. 예를 들어, 결과적인 요청이 16, 32, 64 또는 128 바이트와 같은 특정 캐시 로우 크기의 배수가 되도록 실제 요청은 증가될 수 있다. 그러나 요청된 메모리 크기, 또는 그것의 증대되고 정렬된 버전이 미할당된 부분에 맞는 경우, 방법은 단계(800)로 진행한다.
결정 단계(800)로 계속되어, 메모리 할당 시스템은 요청된 크기 플러스 현재 DSM 아이템의 이전에 할당된 부분의 크기가 제 1 임계값보다 큰지 여부를 결정한다. 예를 들어, DSM 페이로드가 대략 1500 바이트 길이인 경우 임계값은 1200 바이트일 수 있다. 따라서 메모리 할당 시스템은 이미 할당된 메모리의 크기 플러스 요청된 메모리의 크기가 1200 바이트 제한을 초과하지 않는지 여부를 결정할 것이다. 일 실시예에서, 임계값은 DSM 아이템의 페이로드의 크기 중 어떤 비율로서 선택될 수 있다. 예를 들어, 임계값은 페이로드의 크기의 대략 70~80%일 수 있다. 또 다른 실시예에서, 임계 크기는 메모리가 IP 패킷들을 저장하기 위한 요청들과 같은 공통의 요청의 크기 특성을 반영하도록 선택될 수 있다. 또 다른 실시예에서, 할당된 메모리의 크기를 임계값과 비교하기보다는 잔존하는 미할당된 메모리의 크기가 임계값과 비교될 수 있다. 이러한 실시예에서, 상기 서비스는 요청되거나 조정된 메모리 크기가 할당된다면 미할당된 채 남아있게 될 페이로드의 부분을 계산할 것이다. 이러한 임계값과 잔존하는 미할당된 메모리의 비교는 그 후 임계값과 할당된 메모리에 대한 위에서 논의된 비교와 유사한 방식으로 이용될 수 있다.
결정 단계(800)를 수행하면, 식별된 합이 임계값보다 큰 경우, 방법은 단계(805)로 진행한다. 단계(805)로 진행하면, 메모리 할당 시스템은 요청하는 서브시스템으로 참조를 반환한다. 일 실시예에서, 반환된 참조는 현재 DSM 아이템의 헤더로부터의 data_ptr이다. 유리하게도, DSM 아이템의 헤더로부터 참조를 반환함으로써 메모리 할당 시스템은 DUP 아이템을 생성하고 DUP 헤더로부터 참조를 반환하는 것에 관여된 오버헤드 및 자원들을 절감한다. 또한 단지 요청된 크기보다는 DSM 페이로드의 나머지를 할당하는 것은, 메모리 할당 서비스로 하여금 그렇지 않으면 사용되는 경우 체이닝을 유발하게 될 페이로드들의 끝에서 데이터의 작은 블록들을 피할 수 있도록 한다.
결정 단계(800)로 복귀하면, 요청된 메모리 크기 플러스 이미 할당된 메모리 크기가 임계값보다 크지 않은 경우, 상기 방법은 단계(810)로 진행한다. 단계(810)에서 메모리 할당 서비스는 DUP 아이템을 생성하고 요청된 메모리를 할당하며, 요청하는 서브시스템으로 DUP 내의 참조를 반환한다. 유리하게도 다수의 반복들을 통해, 이러한 방법은 메모리 할당 서비스로 하여금 단일한 DSM 아이템으로 다수의 할당들을 팩킹하도록 허용한다. 이러한 팩킹은 메모리 자원들의 효율적인 이용을 허용하고 메모리 사용 및 프로세싱 사용 양자 모두에 있어서 이득을 제공한다.
단계(790)로 복귀하면, 요청된 메모리 크기가 현재 DSM 아이템 내의 미할당된 공간보다 큰 경우, 상기 방법은 도 4b의 결정 단계(845)로 계속된다. 결정 단계(845)에서, 메모리 할당 서비스는 요청된 크기가 제 2 임계값보다 큰지 여부를 결정한다. 이러한 제 2 임계값은 제 1 임계값과 마찬가지로 고정된 바이트 수로서 설정될 수 있다. 예를 들어, DSM 아이템 페이로드의 크기가 1600 바이트인 경우, 제 2 임계값은 1200 바이트일 수 있다. 대안적으로 제 2 임계값은 또한 페이로드의 크기 중 비율로서 결정될 수 있다. 예를 들어, 제 2 임계값은 페이로드 크기의 65~75%일 수 있다. 또 다른 실시예에서, 임계값은 동적으로 결정될 수 있다. 예를 들어, 임계값은 DSM 아이템 내의 할당된 메모리의 전체 양과 동일하게 설정될 수 있다. 이러한 실시예에서 요청된 크기가 DSM 내의 할당된 공간을 초과할 때 요청된 크기는 임계값을 초과할 것이다. 임계값이 어떻게 결정되는지와 무관하게, 요청된 크기가 이러한 임계값보다 큰 경우, 메모리 할당 서비스는 새로운 DSM 아이템을 할당하고 단계(850)에 도시된 것처럼 새로운 DSM 아이템 헤더로부터 요청하는 서브시스템으로 data_ptr를 반환한다. 단계(805)와 유사하게, 새로운 DSM 아이템의 헤더로부터 참조를 반환하는 것은 새로운 DUP 아이템을 생성하는 오버헤드를 절감한다. 요청하는 서브시스템은 그것이 전체 DSM 아이템에 대해 요청한 것보다 많이 부여받고 이러한 할당은 이후 할당 요청들로 하여금 현재 DSM 아이템에 잔존하는 미할당된 메모리에 만족하도록 한다.
단계(845)로 복귀하면, 요청된 크기가 이러한 제 2 임계값보다 작은 경우, 상기 방법은 단계(855)로 진행한다. 단계(855)에서 DSM 페이로드의 미할당된 부분에 대한 DSM 아이템 헤더 참조가 삭제된다. 요컨대, 이것은 DSM 아이템의 나머지를 해제한다. 부가적으로 새로운 DSM 아이템이 생성된다. 새로운 DSM 아이템 내의 메모리의 블록이 할당되고 대응하는 DUP가 생성된다. 새로운 DSM 아이템에 대한 새로운 DUP 내의 참조는 그 후 요청하는 서브시스템으로 반환된다.
설명의 목적을 위하여, 상기 방법의 예들은 도 5에 도시된다. 경우 1에서, 현재 DSM 아이템(910)이 도시된다. 현재 DSM은 할당된 부분(915) 및 미할당된 부분(920) 양자 모두를 가진다. 요청된 패킷 크기(925)는 제 1 임계값(930)과 마찬가지로 도시된다. 도면에 도시된 것처럼, 할당된 부분(915)의 크기 플러스 요청된 부분(925)의 크기는 제 1 임계값(930)보다 작다. 따라서 도시된 것처럼, DSM 아이템(935)의 청크가 할당되고 새로운 DUP 아이템이 생성되며 그것의 참조가 호출하는 서브시스템으로 반환된다. 새로운 DUP 아이템은 새로이 할당된 데이터의 시작을 포인팅하는 DSM(935)으로의 참조를 포함한다.
경우 2에서, 현재 DSM(955)이 또 다른 요청된 패킷(960)과 관련하여 도시된다. 도면에 도시된 것처럼, DSM(955)의 할당된 부분의 크기 플러스 요청된 패킷의 크기는 제 1 임계값을 초과하지만, 그 합은 전체 페이로드 길이를 초과하지 않는다. 따라서 DSM 아이템(965)의 미할당된 부분에 대한 참조는 요청하는 서브시스템으로 반환된다. 결과적으로, 요청된 메모리 크기 또는 약간 더 큰 로우 조정 할당을 획득하는 것에 부가하여 요청하는 서브시스템은 DSM(965) 내의 모든 잔존하는 미할당된 공간(980)을 획득할 것이다. 또한 DSM 아이템 헤더로부터 참조를 반환하는 것은 DUP를 생성하는 오버헤드를 절감하고 그렇지 않으면 남겨져 있는 스터브(930)에 의해 생성된 체이닝 가능성(potential)을 제거한다.
경우 3에서, 현재 DSM(985)은 또 다른 요청된 메모리 블록(990)과 함께 도시된다. 도시된 것처럼, 요청된 패킷은 너무 커서 현재 DSM의 미할당된 부분에 맞지 않는다. 부가적으로 요청된 크기는 제 2 임계값(995)보다 작다. 따라서 페이로드의 미할당된 부분들에 대한 현재 DSM(1000)의 헤더 내의 참조는 삭제된다. 새로운 DSM(1005)이 생성된다. 이러한 DSM으로부터 메모리의 블록이 할당되고 새로운 DSM 내의 할당된 블록을 참조하는 새로운 DUP 아이템이 생성된다. 이러한 DUP 아이템으로부터 참조는 그 후 요청하는 서브시스템으로 반환된다. 또한 제 2 임계값(995)이 정적인 것으로 도시되었지만 원래의 것 내의 할당된 메모리의 크기와 동일하게 그것을 설정함으로써와 같이 임계값은 동적으로 결정될 수 있다.
경우 4에서, 현재 DSM(1010)은 요청하는 메모리 블록(1015)과 함께 도시된다. 도 3과 마찬가지로, 요청된 크기는 너무 커서 DSM 아이템(1010)의 미할당된 부분에 맞지 않는다. 부가적으로 요청된 블록 크기(1015)는 제 2 임계값(995)보다 크다. 결과적으로 현재 DSM(1020)은 그것의 현재 상태로 보존된다. 한편 새로운 DSM(1025)이 생성되고 새로운 DSM 헤더 내에서 페이로드의 미할당된 부분에 대한 참조가 반환된다.
도 6은 도 4a 및 도 4b에 도시된 방법과 유사하다. 그러나 도 6은 메모리를 할당하기 위한 서비스의 일 실시예에서 이용되는 몇몇 파라미터들에 관하여 변형들을 제공한다. 도 6에 도시된 방법(1080)은 메모리 할당 요청들을 위한 API를 제공한다. 일 특정 실시예에서, 방법(1080)은 메모리 할당을 요청하는데 이용될 수 있는 서브시스템들에 대한 함수 호출을 제공한다. 도시된 것처럼, 함수는 메모리 할당의 요청된 크기를 파라미터로 취할 수 있다. 부가적으로, 함수는 요청하는 서브시스템을 식별하는 서브시스템 ID와 같은 다른 파라미터들을 취할 수 있다. 도 6에 의해 표현된 서비스는 디바이스(102)의 프로세서(202)와 같은 프로세서 상에서 작동되도록 구성될 수 있다. 할당 요청들에 응답하여, 이하 기술되는 것처럼 상기 서비스는 요청된 크기보다 크거나 같은 할당된 메모리 블록에 대한 포인터를 준비한다. 따라서 서비스의 API를 이용하는 서브시스템들로, 할당된 메모리에 대한 포인터가 반환된다. 일 특정 실시예에서, 도 6에 도시된 방법은 그것의 동작 동안 다음 값들 중 몇몇 또는 모두를 이용한다:
current_dsm_item_ptr[]: 이것은 각 서브시스템에 대한 현재 DSM 아이템으로의 포인터들의 세트이다.
aligned_pkt_size: 이것은 16, 32, 64 또는 128과 같은 크기들의 캐시 로우들과 정렬되도록 조정된, 메모리의 요청된 블록의 크기이다.
pkt_ptr: 반환될 예정인 할당된 메모리로의 포인터
DSMI_MEM_THRESHOLD_TO_FREE_DSM: DUP 또는 DSM 참조가 반환되어야 하는지 여부를 결정하기 위한 제 1 임계값. 메모리 블록을 할당한 후, 잔존하는 미할당된 메모리는 이러한 임계값보다 작을 것이고, DSM 참조는 반환되어 DSM 아이템 내의 모든 잔존하는 미할당된 메모리를 효율적으로 할당한다.
DSMI_THRESHOLD_FOR_COMPLETE_ITEM_ALLOCATION: DUP 또는 DSM 참조가 반환되어야 하는지 여부를 결정하기 위한 제 2 임계값. 요청된 패킷 크기가 이러한 임계값보다 큰 경우, 새로운 DSM 아이템이 생성되고 새로운 DSM의 헤더로부터 참조가 반환된다. 현재의 DSM이 보유(retain)된다.
도 6에 도시된 방법이 1085에 도시된 함수 호출로 시작된다. 요청에 대한 파라미터로서, 할당 서비스는 요청된 패킷 크기 "pkt_size"를 수신한다. 부가적으로 몇몇 실시예들에서, 또 다른 파라미터, 서브시스템 ID 또한 함수 호출로 전달될 것이다. 단계(1100)로 진행하면, 상기 방법은 동시발생의 액세스 이슈들을 피하기 위해 DSM 아이템들의 특정 풀을 락킹(lock)한다. 풀을 락킹한 후, 상기 방법은 결정 단계(1105)로 진행한다. 결정 단계(1105)에서, 서비스는 pkt_ptr가 널 값(null)인지 여부를 결정한다. 어떠한 메모리도 상기 요청에 대해 할당되지 않은 경우, 포인터는 널 값일 것이다. 그러나 포인터가 널이 아닌 값을 가지는 경우, 상기 서비스는 진행되어 풀을 언락킹(unlock)하고(1140) 포인터를 반환한다(1145). 그러나 포인터가 널 값인 경우, 상기 서비스는 결정 단계(1110)로 진행한다.
계속하여 결정 단계(1110)에서, 상기 서비스는 current_dsm_item_ptr이 널 값인지 여부를 결정한다. 이전의 반복들에 의해 결과적으로 어떠한 현재 DSM 아이템도 존재하지 않게 된 경우, 상기 서비스는 진행하여 하나를 생성하고(1115) 이러한 생성이 성공적이지 않은 경우 종료(exit)한다(1120, 1140, 1145). 일단 유효한 현재 DSM이 존재한다고 확인되거나 생성되면, 상기 방법은 결정 단계(1125)로 진행한다. 결정 단계(1125)에서 상기 서비스는 정렬되고 요청된 크기가 현재 DSM 내의 미할당된 공간의 크기보다 작은지 여부를 결정한다. 작은 경우, 그 후 상기 서비스는 단계(1130)에서 DSM에서 요청된 메모리를 할당한 후 남아 있을 미할당된 공간이 제 1 임계값보다 작은지 여부를 결정한다. 작은 경우, 상기 서비스는 DUP를 생성하고 현재 DSM에서 정렬되고 요청된 메모리를 할당하며(1135), 풀을 언락킹하고(1140), DUP 포인터를 반환한다(1145). 만약 그렇지 않은 경우, 상기 서비스는 전적으로 새로운 DSM을 생성하고(1150), 풀을 언락킹하며(1140), 새로운 DSM의 헤더로부터 포인터를 반환한다(1145).
단계(1125)로 복귀하면, 요청된 크기가 잔존하는 미할당된 공간보다 큰 경우, 상기 방법은 결정 단계(1155)로 진행한다. 단계(1155)에서, 상기 서비스는 요청된 크기가 제 2 임계값보다 크거나 같은지를 결정한다. 크거나 같은 경우, 상기 서비스는 전적으로 새로운 DSM을 생성하고(1165), 풀을 언락킹하며(1140), 새로운 DSM의 헤더로부터 포인터를 반환한다(1145). 만약 그렇지 않은 경우, 상기 서비스는 현재 DSM 내의 잔존하는 메모리를 해제하고 단계(1105)에서 상기 방법을 다시 시작하도록 진행한다. 결과적으로 새로운 DSM이 생성되고, 새로운 DSM의 바디(body)를 참조하는 DUP가 생성되며 DUP 포인터가 요청하는 서브시스템으로 반환된다.
본 메모리 할당 서비스의 추가적인 특징들 및 실시예들 또한 본원에서 제시된다:
상이한 사용자들에 대한 다수의 DSM 포인터들
데이터 블록들의 수명이 상이한 사용자들에 대해 상당히 다를 것이라 예상되는 경우들을 다루기 위해, 상기 알고리즘은 다수의 DSM 포인터들을 유지할 수 있고, 단지 동일한 DSM으로 유사한 수명을 가지는 데이터 블록들을 팩킹할 수 있다. 예를 들어, 사용자 특정 ID는 할당 요청과 함께 전달될 수 있어, 이러한 사용자로부터의 데이터만이 동일한 DSM 아이템으로 팩킹될 것이다. 다른 사용자들로부터의 요청들은 다른 DSM들로 팩킹될 것이다. 여기서 "사용자"는 사용자들 프로파일의 한 세트를 다른 것과 구별하기 위한, 태스크들의 세트 또는 서브-태스크들 또는 계층들 또는 기능들, 또는 이러한 것들의 임의의 다른 조합일 수 있다.
DSM 앞부분(또는 뒷부분)에 데이터를 추가하기 위한 지원
새로운 DSM 아이템을 할당하고 체이닝을 수행할 필요 없이 기존 DSM 또는 DUP 아이템의 앞부분에 데이터 추가를 효율적으로 다루기 위해(예를 들어, 프로토콜 헤더들의 추가), 앞부분에 자유 공간을 가진 DSM을 할당하는 것을 허용할 것이 제안된다. 자유 공간은 "오프셋" 헤더에 의해 추적된다. 이런 식으로, DUP 또는 DSM이 주어진 오프셋을 가지고 할당될 수 있고 이후 보다 많은 데이터가 DSM의 앞부분에 삽입될 필요가 있는 경우 체이닝이 뒤따르는 새로운 DSM 할당 없이 이것이 수행될 수 있다. DSM의 뒷부분에 데이터를 추가하기 위한 유사한 서비스가 허용될 수 있다.
다수의 풀들
상기 서비스는 어떤 사용자에게 주어진 수의 아이템들의 예약을 허용하는 다수의 DSM 풀을 허용한다. 이런 식으로 이러한 사용자는, 또 다른 사용자가 자유 DSM 아이템들을 모두 할당했기 때문에 갑자기 더 이상의 자유 DSM 아이템들이 존재하지 않음을 걱정할 필요가 없을 것이다. 또한 이것은 메모리 오버런 이슈들(여기서는 한 사용자가 할당의 경계들을 오버라이드함)에 대한 보다 양호한 디버그 능력을 제공하고, 이는 이러한 이슈가 이러한 사용자 만의 코드베이스로 제한되기 때문이다.
다수의 풀들에 대한 대안으로서 쿼터( Quota ) 서비스
동일한 것을 성취하는 또 다른 방법은 하나의 풀을 가지지만 각 사용자가 할당할 수 있는 DSM 아이템들의 최대 쿼터(바이트)를 가지도록 하는 것이다. 일단 그가 그의 쿼터에 도달하면, 다른 사용자들의 메모리 고갈을 막기 위해서 그는 새로운 아이템들을 할당하기 위해 몇몇 아이템들을 해제해야만 한다. 다수의 풀들의 접근법에 대해 이것이 갖는 한가지 장점은 공유(sharing)가 성취될 수 있다는 점이다. 예를 들어 그들 자신의 X 아이템들의 풀을 가지는 4명의 사용자들이 있는 경우 그것은 메모리의 4X 아이템들을 필요로 할 것이다. 그러나 모든 4명의 사용자들이 동시에 모든 아이템들을 할당할 가능성은 매우 작으므로 쿼터 서비스는, 한 사용자가 모든 그의 메모리 = X 를 취한다면 나머지 3명의 사용자들이 나머지 메모리 = 2X 를 공유할 수 있을 것이라고 가정하면서, 전체 메모리를 말하자면 3X로 감소시키도록 허용할 수 있다.
상이한 크기들에 대한 다수의 DSM 포인터들
이러한 양상에서, DSM 할당은 요청된 메모리 공간에 기초하여 파티셔닝될 수 있다(상기의 서브시스템 ID을 이용하는 것과 반대되는 것처럼). 모든 태스크들/프로파일들의 필요들을 충족시키기 위해 다수의 계층들/서브시스템들을 통해 공유되는 다수의 크기 풀들에 대한 전통적인 방법을 가지는 대신에, 이러한 제안으로 그로부터 DSM 포인터 당 단지 특정 크기 블록들만이 할당될 수 있는 다수의 DSM 포인터들을 지원하기 위한 제공이 있을 수 있다. 예를 들어, 우리는 128, 256, 512, 768, 1024, 1536 바이트 블록 크기들 등에 대한 DSM 포인터를 가질 수 있다.
임의의 계층/모듈들이 특정 크기 메모리를 요청할 때마다 알고리즘은 가장 적합한 DSM 포인터를 결정할 수 있고 요청된 크기가 이용가능한 경우 dup를 제공할 수 있다. 요청된 크기가 이용가능하지 않은 경우, 이러한 크기에 대해 DSM 포인터(널 값이 아니라면)를 릴리스하고 큰 아이템들(예를 들어, 미리 결정된 바이트 수보다 큰 아이템들, 일례로 768 바이트보다 크거나 같은 아이템들)의 글로벌 풀로부터 큰 아이템을 할당하고 그 후 가장 적합한 블록 크기를 DUP하고 호출자(caller)로 DUP를 반환한다.
본 할당은 또한 종래 기술에 비해 여러 구별되는 장점들을 가진다. 본 서비스의 실시예들은 메모리 풋프린트를 감소시킨다. 더 적은 풀들의 이용은 보다 양호한 통계적 멀티플렉싱을 허용한다. 상기 서비스는 보다 양호한 패킹 효율성을 용이하게 한다. DUP들에 대해 추가된 오버헤드가 있더라도 DSM 아이템들에 대해 더 작은 오버헤드가 있다. CPU 처리 오버헤드(MIPS)는 더 작은 체이닝에 기인하여 감소된다. 상기 서비스는 (특히 보다 큰 패킷 사이즈들에서) 긴 패킷 체인들을 회피하는 보다 큰 DSM 아이템들을 이용하는 것을 허용하고 이에 의해 DSM 할당/해제 동작들의 수를 감소시킨다. 실시예들은 다수의 메모리 풀들을 포함하는 보다 전통적인 접근과 연관된 유지를 단순화한다. 상기 서비스는 서브시스템마다 이러한 기능을 구현해야 할 필요 없이 이것을 다루기 위한 중앙 API를 가지는 것으로 구현될 수 있고, 이에 의해 코드를 복제한다. 타겟마다 별개의 풀 크기들 및 아이템 크기들에 대한 필요성을 피한다. 본원에서 약술된 기술들이 없다면, 많은 장소들에서 별개로 코드를 구현해야 할 필요가 있을 것이고(예를 들어, 패킷 서비스 모듈(PS), 고속 USB(HS-USB) 모듈 등과 같은 스택 내의 다양하거나 다수의 계층들), 이것은 오류 등에 취약하다. 예를 들어, 낮은 지연(latency) 메모리(예를 들어, 내부 RAM(IRAM))에서 DUP 풀을 규정함으로써, 추가적인 성능 개선들(예를 들어, 캐시 이점들)을 위해 고속 메모리에서 DUP 풀을 규정하는 것이 가능하다. 단지 하나의 풀만이 이러한 응용 프로그램 인터페이스(API)와 함께 이용되는 경우 DSM 내의 감소된 체크들이 획득될 수 있다. 현재 DSM은 파라미터로서 전달되는 풀 ID(식별)에 기초하여 몇몇 체크들을 수행한다.

Claims (26)

  1. 메모리 관리 시스템으로서,
    프로세서; 및
    상기 프로세서 상에서 실행가능한 메모리 관리 서비스
    를 포함하고, 상기 메모리 관리 서비스는:
    제 1 메모리 아이템들을 생성하고 ― 상기 제 1 메모리 아이템들 각각은 헤더 및 페이로드를 포함하고, 상기 페이로드는 다수의 독립적으로 할당가능한 메모리 청크(chunk)들을 저장하도록 구성가능하고, 상기 제 1 메모리 아이템들의 상기 헤더는 상기 페이로드 내의 할당가능한 공간을 참조함 ―;
    제 2 메모리 아이템들을 생성하고 ― 상기 제 2 메모리 아이템들 각각은 상기 제 1 메모리 아이템들의 상기 페이로드 내의 하나 이상의 메모리 청크들을 참조하는 헤더를 포함함 ―; 그리고
    메모리 할당 요청에 응답하여 제 1 또는 제 2 메모리 아이템의 상기 헤더로부터 참조를 반환(return)하도록 구성가능한,
    메모리 관리 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 아이템들의 상기 헤더는 상기 제 1 메모리 아이템들에 대한 참조들의 카운트를 유지하는,
    메모리 관리 시스템.
  3. 제 1 항에 있어서,
    상기 메모리 관리 서비스는 다수의 서브시스템들 각각에 대해 별개의 제 1 메모리 아이템들을 생성하도록 더 구성가능한,
    메모리 관리 시스템.
  4. 제 1 항에 있어서,
    상기 메모리 할당 요청은 요청된 메모리 크기를 포함하는,
    메모리 관리 시스템.
  5. 제 4 항에 있어서,
    상기 메모리 관리 서비스는 특정 제 1 메모리 아이템의 페이로드 내의 할당된 메모리의 크기 및 상기 요청된 메모리 크기의 합을 결정하고, 상기 합을 임계값과 비교하도록 더 구성가능한,
    메모리 관리 시스템.
  6. 제 5 항에 있어서,
    상기 메모리 관리 서비스는 상기 합이 상기 임계값보다 작을 때 특정 제 2 메모리 아이템의 상기 헤더로부터 참조를 생성 및 반환하도록 더 구성가능한,
    메모리 관리 시스템.
  7. 제 6 항에 있어서,
    상기 메모리 관리 서비스는 상기 합이 상기 임계값보다 클 때 상기 특정 제 1 메모리 아이템의 상기 헤더로부터 참조를 반환하도록 더 구성가능한,
    메모리 관리 시스템.
  8. 제 4 항에 있어서,
    상기 메모리 관리 서비스는 특정 제 1 메모리 아이템의 페이로드 내의 할당된 메모리의 크기 및 상기 요청된 메모리 크기의 합을 결정하고, 상기 특정 제 1 메모리 아이템의 상기 페이로드의 크기와 상기 합을 비교하며, 상기 요청된 메모리 크기와 임계값을 비교하도록 더 구성가능한,
    메모리 관리 시스템.
  9. 제 8 항에 있어서,
    상기 메모리 관리 서비스는 또 다른 특정 제 1 메모리 아이템을 생성하고, 상기 또 다른 특정 제 1 메모리 아이템의 페이로드를 참조하는 특정 제 2 메모리 아이템을 생성하며, 상기 합이 상기 특정 제 1 메모리 아이템의 상기 페이로드의 크기보다 크고 상기 요청된 메모리 크기가 상기 임계값보다 작을 때 상기 특정 제 2 메모리 아이템의 상기 헤더로부터 참조를 반환하도록 더 구성가능한,
    메모리 관리 시스템.
  10. 제 8 항에 있어서,
    상기 메모리 관리 서비스는 또 다른 특정 제 1 메모리 아이템을 생성하고, 상기 합이 상기 특정 제 1 메모리 아이템의 상기 페이로드의 크기보다 크고 상기 요청된 메모리 크기가 상기 임계값보다 클 때 상기 또 다른 특정 제 1 메모리 아이템의 상기 헤더로부터 참조를 반환하도록 더 구성가능한,
    메모리 관리 시스템.
  11. 제 8 항에 있어서,
    상기 임계값은 상기 특정 제 1 메모리 아이템 내의 할당된 메모리의 크기인,
    메모리 관리 시스템.
  12. 제 4 항에 있어서,
    상기 메모리 관리 서비스는 상기 요청된 메모리 크기를 캐시 라인 경계(boundary)와 정렬시키기 위해 상기 요청된 메모리 크기를 증가시키도록 더 구성가능한,
    메모리 관리 시스템.
  13. 메모리 관리 방법으로서,
    제 1 메모리 아이템들을 할당하는 단계 ― 상기 제 1 메모리 아이템들은 각각 제 1 헤더 및 페이로드를 포함하고, 상기 페이로드는 독립적으로 할당가능한 메모리의 청크들을 포함하며, 상기 제 1 헤더는 상기 페이로드 내의 미할당된(unallocated) 메모리에 대한 참조를 포함함 ―;
    제 2 메모리 아이템들을 할당하는 단계 ― 상기 제 2 메모리 아이템들은 각각 제 2 헤더를 포함하고, 상기 제 2 헤더는 제 1 메모리 아이템의 상기 페이로드 내의 메모리의 할당된 청크에 대한 참조를 포함함 ―;
    메모리 할당에 대한 요청들을 수신하는 단계; 및
    제 1 또는 제 2 메모리 아이템의 상기 헤더로부터 참조를 반환함으로써 메모리 할당에 대한 요청들에 응답하는 단계
    를 포함하는, 메모리 관리 방법.
  14. 제 13 항에 있어서,
    상기 제 1 헤더는 상기 제 1 메모리 아이템들에 대한 참조들의 카운트를 더 포함하는,
    메모리 관리 방법.
  15. 제 13 항에 있어서,
    상기 제 1 메모리 아이템들을 할당하는 단계는 다수의 서브시스템들 각각에 대해 별개의 제 1 메모리 아이템들을 할당하는 단계를 더 포함하는,
    메모리 관리 방법.
  16. 제 13 항에 있어서,
    상기 메모리 할당 요청은 요청된 메모리 크기를 포함하는,
    메모리 관리 방법.
  17. 제 16 항에 있어서,
    특정 제 1 메모리 아이템의 페이로드 내의 할당된 메모리의 크기 및 상기 요청된 메모리 크기의 합을 결정하는 단계 및 상기 합을 임계값과 비교하는 단계를 더 포함하는,
    메모리 관리 방법.
  18. 제 17 항에 있어서,
    상기 합이 상기 임계값보다 작을 때 특정 제 2 메모리 아이템의 상기 헤더로부터 참조를 할당 및 반환하는 단계를 더 포함하는,
    메모리 관리 방법.
  19. 제 18 항에 있어서,
    상기 합이 상기 임계값보다 클 때 상기 특정 제 1 메모리 아이템의 상기 헤더로부터 참조를 반환하는 단계를 더 포함하는,
    메모리 관리 방법.
  20. 제 16 항에 있어서,
    특정 제 1 메모리 아이템의 페이로드 내의 할당된 메모리의 크기 및 상기 요청된 메모리 크기의 합을 결정하는 단계;
    상기 특정 제 1 메모리 아이템의 상기 페이로드의 크기와 상기 합을 비교하는 단계; 및
    상기 요청된 메모리 크기와 임계값을 비교하는 단계
    를 더 포함하는, 메모리 관리 방법.
  21. 제 20 항에 있어서,
    또 다른 특정 제 1 메모리 아이템을 생성하는 단계;
    상기 또 다른 특정 제 1 메모리 아이템의 페이로드를 참조하는 특정 제 2 메모리 아이템을 생성하는 단계; 및
    상기 합이 상기 특정 제 1 메모리 아이템의 상기 페이로드의 크기보다 크고 상기 요청된 메모리 크기가 상기 임계값보다 작을 때 상기 특정 제 2 메모리 아이템의 상기 헤더로부터 참조를 반환하는 단계
    를 더 포함하는, 메모리 관리 방법.
  22. 제 20 항에 있어서,
    또 다른 특정 제 1 메모리 아이템을 생성하는 단계; 및
    상기 합이 상기 특정 제 1 메모리 아이템의 상기 페이로드의 크기보다 크고 상기 요청된 메모리 크기가 상기 임계값보다 클 때 상기 또 다른 특정 제 1 메모리 아이템의 상기 헤더로부터 참조를 반환하는 단계
    를 더 포함하는, 메모리 관리 방법.
  23. 제 20 항에 있어서,
    상기 임계값은 상기 특정 제 1 메모리 아이템 내의 할당된 메모리의 크기인,
    메모리 관리 방법.
  24. 제 16 항에 있어서,
    상기 요청된 메모리 크기를 캐시 라인 경계와 정렬시키기 위해 상기 요청된 메모리 크기를 증가시키는 단계를 더 포함하는,
    메모리 관리 방법.
  25. 메모리 관리 시스템으로서,
    제 1 메모리 아이템들을 할당하기 위한 수단 ― 상기 제 1 메모리 아이템들은 각각 제 1 헤더 및 페이로드를 포함하고, 상기 페이로드는 독립적으로 할당가능한 메모리의 청크들을 포함하며, 상기 제 1 헤더는 상기 페이로드 내의 미할당된 메모리에 대한 참조를 포함함 ―;
    제 2 메모리 아이템들을 할당하기 위한 수단 ― 상기 제 2 메모리 아이템들은 각각 제 2 헤더를 포함하고, 상기 제 2 헤더는 제 1 메모리 아이템의 상기 페이로드 내의 메모리의 할당된 청크에 대한 참조를 포함함 ―;
    메모리 할당에 대한 요청들을 수신하기 위한 수단; 및
    제 1 또는 제 2 메모리 아이템의 상기 헤더로부터 참조를 반환함으로써 메모리 할당에 대한 요청들에 응답하기 위한 수단
    을 포함하는, 메모리 관리 시스템.
  26. 컴퓨터 명령들로 인코딩된 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 명령들은 실행될 때 프로세서로 하여금:
    제 1 메모리 아이템들을 할당하도록 하고 ― 상기 제 1 메모리 아이템들은 각각 제 1 헤더 및 페이로드를 포함하고, 상기 페이로드는 독립적으로 할당가능한 메모리의 청크들을 포함하며, 상기 제 1 헤더는 상기 페이로드 내의 미할당된 메모리에 대한 참조를 포함함 ―;
    제 2 메모리 아이템들을 할당하도록 하고 ― 상기 제 2 메모리 아이템들은 각각 제 2 헤더를 포함하고, 상기 제 2 헤더는 제 1 메모리 아이템의 상기 페이로드 내의 메모리의 할당된 청크에 대한 참조를 포함함 ―;
    메모리 할당에 대한 요청들을 수신하도록 하고; 그리고
    제 1 또는 제 2 메모리 아이템의 상기 헤더로부터 참조를 반환함으로써 메모리 할당에 대한 요청들에 응답하도록 하는,
    컴퓨터 판독가능 매체.
KR1020107024521A 2008-04-02 2009-04-02 임베디드 또는 무선 통신 시스템에서 메모리 할당을 위한 시스템 및 방법 KR101134195B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US4187808P 2008-04-02 2008-04-02
US61/041,878 2008-04-02
US12/416,759 2009-04-01
US12/416,759 US8321651B2 (en) 2008-04-02 2009-04-01 System and method for memory allocation in embedded or wireless communication systems
PCT/US2009/039243 WO2009124164A1 (en) 2008-04-02 2009-04-02 System and method for memory allocation in embedded or wireless communication systems

Publications (2)

Publication Number Publication Date
KR20100126592A true KR20100126592A (ko) 2010-12-01
KR101134195B1 KR101134195B1 (ko) 2012-04-09

Family

ID=41134319

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107024521A KR101134195B1 (ko) 2008-04-02 2009-04-02 임베디드 또는 무선 통신 시스템에서 메모리 할당을 위한 시스템 및 방법

Country Status (11)

Country Link
US (1) US8321651B2 (ko)
EP (1) EP2266265B1 (ko)
JP (1) JP5265758B2 (ko)
KR (1) KR101134195B1 (ko)
CN (1) CN101971581B (ko)
AT (1) ATE516647T1 (ko)
CA (1) CA2718291A1 (ko)
ES (1) ES2367605T3 (ko)
RU (1) RU2460222C2 (ko)
TW (1) TW201018142A (ko)
WO (1) WO2009124164A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150034050A (ko) * 2013-09-25 2015-04-02 현대모비스 주식회사 차량 정보 시스템의 메모리 관리 방법

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100182970A1 (en) * 2009-01-21 2010-07-22 Qualcomm Incorporated Multiple Subscriptions Using a Single Air-Interface Resource
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
US8433880B2 (en) 2009-03-17 2013-04-30 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US8788782B2 (en) * 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US8762532B2 (en) * 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US20110041128A1 (en) * 2009-08-13 2011-02-17 Mathias Kohlenz Apparatus and Method for Distributed Data Processing
US9038073B2 (en) * 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US8341368B2 (en) 2010-06-07 2012-12-25 International Business Machines Corporation Automatic reallocation of structured external storage structures
US8838910B2 (en) 2010-06-07 2014-09-16 International Business Machines Corporation Multi-part aggregated variable in structured external storage
US9351196B2 (en) 2012-08-31 2016-05-24 International Business Machines Corporation Byte caching in wireless communication networks
CN105573711B (zh) * 2014-10-14 2019-07-19 深圳市中兴微电子技术有限公司 一种数据缓存方法及装置
CN104572498B (zh) * 2014-12-26 2018-04-27 曙光信息产业(北京)有限公司 报文的缓存管理方法和装置
CN110245091B (zh) * 2018-10-29 2022-08-26 浙江大华技术股份有限公司 一种内存管理的方法、装置及计算机存储介质
US11206222B2 (en) 2020-02-07 2021-12-21 Wipro Limited System and method of memory management in communication networks

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0574140A1 (en) * 1992-05-29 1993-12-15 Hewlett-Packard Company Network adapter which places a network header and data in separate memory buffers
JP3177047B2 (ja) * 1993-01-27 2001-06-18 大日本印刷株式会社 メモリ領域の管理方法
RU2037874C1 (ru) 1993-05-10 1995-06-19 Валерий Алексеевич Харитонов Устройство управления памятью
JP2778913B2 (ja) * 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
US7269171B2 (en) 2002-09-24 2007-09-11 Sun Microsystems, Inc. Multi-data receive processing according to a data communication protocol
US7334123B2 (en) 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
JP2005100262A (ja) * 2003-09-26 2005-04-14 Seiko Epson Corp メモリ管理装置およびメモリ管理プログラム、並びにメモリ管理方法
US20050125550A1 (en) 2003-12-09 2005-06-09 Bajikar Sundeep M. Location information via DHCP
US7930422B2 (en) 2004-07-14 2011-04-19 International Business Machines Corporation Apparatus and method for supporting memory management in an offload of network protocol processing
WO2006015513A1 (en) * 2004-08-12 2006-02-16 Intel Corporation Method and system for processing multicast packets
JP4144609B2 (ja) 2004-09-29 2008-09-03 ソニー株式会社 情報処理装置、メモリ領域管理方法、並びにコンピュータ・プログラム
FR2879874B1 (fr) 2004-12-16 2008-11-07 Eads Telecom Soc Par Actions S Procede de demarrage d'une station ip, systeme, serveur et station le mettant en oeuvre et procede d'etablissement d'appel telephonique
US7433673B1 (en) 2004-12-17 2008-10-07 Sprint Spectrum L.P. Method and system for providing location information for a wireless local area network (WLAN)
JP2009532954A (ja) * 2006-03-31 2009-09-10 クゥアルコム・インコーポレイテッド 高速メディアアクセス制御に関するメモリ管理
US7685396B2 (en) * 2007-03-05 2010-03-23 Research In Motion Limited System and method for dynamic memory allocation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150034050A (ko) * 2013-09-25 2015-04-02 현대모비스 주식회사 차량 정보 시스템의 메모리 관리 방법

Also Published As

Publication number Publication date
JP2011521313A (ja) 2011-07-21
WO2009124164A1 (en) 2009-10-08
US20090254731A1 (en) 2009-10-08
ES2367605T3 (es) 2011-11-04
KR101134195B1 (ko) 2012-04-09
TW201018142A (en) 2010-05-01
JP5265758B2 (ja) 2013-08-14
RU2010144764A (ru) 2012-05-10
US8321651B2 (en) 2012-11-27
EP2266265B1 (en) 2011-07-13
RU2460222C2 (ru) 2012-08-27
ATE516647T1 (de) 2011-07-15
CN101971581B (zh) 2013-11-06
EP2266265A1 (en) 2010-12-29
CN101971581A (zh) 2011-02-09
CA2718291A1 (en) 2009-10-08

Similar Documents

Publication Publication Date Title
KR101134195B1 (ko) 임베디드 또는 무선 통신 시스템에서 메모리 할당을 위한 시스템 및 방법
EP3334123B1 (en) Content distribution method and system
US10455063B2 (en) Packet flow classification
US9639501B1 (en) Apparatus and methods to compress data in a network device and perform ternary content addressable memory (TCAM) processing
CN110191428B (zh) 一种基于智能云平台的数据分配方法
KR101318985B1 (ko) 클라우드 컴퓨팅에서의 콘텐츠 보안 장치 및 방법
Ramakrishnan et al. An efficient delivery scheme for coded caching
US7653798B2 (en) Apparatus and method for controlling memory allocation for variable size packets
US20200274943A1 (en) Data Processing Method and Apparatus, Server, and Controller
WO2023115978A1 (zh) 一种报文处理方法、装置及电子设备
CN104731799A (zh) 内存数据库管理装置
WO2020199760A1 (zh) 数据存储方法、存储器和服务器
CN112486860A (zh) 管理存储系统的地址映射的方法、设备和计算机程序产品
CN114710467B (zh) Ip地址存储方法、装置和硬件网关
US11341055B2 (en) Method, electronic device, and computer program product for storage management
CN109614345B (zh) 一种协议层之间通信的内存管理方法及装置
CN113032414B (zh) 数据管理方法、装置、系统、计算设备及存储介质
CN112181278B (zh) 在云计算系统中创建系统盘的方法、装置、设备及存储介质
CN114140115A (zh) 区块链交易池的分片方法、系统、存储介质和计算机系统
CN109347991B (zh) 文件分发方法、装置、设备及介质
US10649821B2 (en) Method, system and apparatus for dynamically allocating event data
US20180089106A1 (en) Method and apparatus for replacing data block in cache
CN103544292A (zh) 基于HASH表的Diameter消息处理方法和装置
WO2024113090A1 (zh) 访存方法、装置及系统
CN117473011A (zh) 数据同步方法、装置以及混合缓存系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee