KR20080111000A - 데이터 패킷 조립을 위한 방법 및 디바이스 - Google Patents

데이터 패킷 조립을 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR20080111000A
KR20080111000A KR1020087021608A KR20087021608A KR20080111000A KR 20080111000 A KR20080111000 A KR 20080111000A KR 1020087021608 A KR1020087021608 A KR 1020087021608A KR 20087021608 A KR20087021608 A KR 20087021608A KR 20080111000 A KR20080111000 A KR 20080111000A
Authority
KR
South Korea
Prior art keywords
block
register
packet
blocks
state
Prior art date
Application number
KR1020087021608A
Other languages
English (en)
Other versions
KR101353992B1 (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 KR20080111000A publication Critical patent/KR20080111000A/ko
Application granted granted Critical
Publication of KR101353992B1 publication Critical patent/KR101353992B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 적어도 하나의 데이터 패킷을 형성하기 위해 데이터 블록들을 조립하는 것에 관한 것으로, 이러한 조립하는 것은 - 제 1 레지스터에 적어도 하나의 제 1 데이터 블록 서술자(3702)를 쓰는 단계로서, 각 제 1 서술자는 한 세트의 블록에 속하는 각 블록의 상태를 나타내는 정보를 포함하여 이로 인해 각 블록의 상태가 그 블록이 저장되었는지 여부를 표시하는 쓰는 단계, - 제 2 레지스터에서 블록들의 상태를 결정 및 기록하는 단계로서, 상기 상태는 그 블록들의 저장 및 비저장 상태를 나타내고, 이로 인해 이 동작이 제 2 레지스터의 사용에 기초하여, 그 블록들을 기초해서 조립될 수 있는 패킷의 상태의 간단하고 빠른 취득을 가능하게 하는, 결정 및 기록하는 단계, 및 제 2 레지스터에 기록된 상태에 따른 블록들을 담고 있는 패킷을 조립하는 단계를 포함한다.

Description

데이터 패킷 조립을 위한 방법 및 디바이스{METHOD AND DEVICE FOR DATA PACKET ASSEMBLY}
본 발명은 원격 통신 분야에 관한 것으로, 특히 고속 패킷 수신 분야에 관한 것이다.
종래 기술에 따르면, 데이터 패킷 송신 방법은 패킷들을 송신단에서 데이터 블록들로 나누고, 수신 단에서 블록들을 패킷들로 재조립하기 위한 메커니즘을 구현한다.
MAC(Medium Access Control) 층에서, 송신될 데이터나 MSDU(MAC Service Data Unit)는 MAC 헤더를 구비한 PDU(Protocol Data Unit)에 캡슐화된다. MSDU가 송신될 때, 그것들은 단편화될 수 있고 이로 인해 MSDU의 하나 이상의 부분들(또는 단편들)이 동일한 PDU에서 송신되는데 반해, 나머지 부분들은 하나 이상의 다른 PDU에서 송신된다. 하나의 PDU는 또한 상이한 MSDU의 단편들을 포함할 수 있다.
IEEE 802.16 표준을 따른 수신국의 마이크로프로세서에 의해 구현된 이러한 타입의 방법이 도 1에 도시되어 있고, 초기화 단계(10)를 통해 시작한다. 이후, 단계(11) 동안, 한 세트의 블록에 연관된 MSDU에 대응하는 하나 이상의 데이터 패킷이 수신된다. 이후, 단계(12) 동안, 수신국은 올바르게 수신된 블록들을 식별한다. 이후, 단계(13) 동안, 마이크로프로세서는 MSDU로서 수신된 블록들을 조립하려고 시도한다. 단계(13)는 처음에 수신된 블록에서 가리키는 현재 블록의 초기화를 수반하는 단계(130)를 통해 시작한다. 이후, 테스트(131) 동안, 마이크로프로세서는 현재 블록이 유효한지를 체크한다(예컨대, 에러 검출 코드를 사용하여). 만약 유효하지 않다면 단계(13)는 MSDU 조립 실패 상태로 끝난다. 만약 그렇다면 단계(132)에서 마이크로프로세서는 현재 블록을 삽입함으로써 MSDU를 조립한다. 이후 테스트(133) 동안에는, 마이크로프로세서가 현재 블록이 그 MSDU의 최종 블록인지를 체크한다. 만약 그렇다면 단계(13)는 MSDU가 조립된 채로 성공적으로 끝난다. 만약 그렇지 않다면 단계(134)에서 현재 블록은 다음 수신된 블록을 가리키고 테스트(131)가 되풀이된다. 그러므로, MSDU 조립 공정은 비교적 길게 되는데, 이는 기본 동작의 개수가 많기 때문이다{MSDU에 존재하는 블록들의 개수의 적어도 3배(단계(131 내지 133)에 대응하는)이며, 이들 블록 각각은 마이크로프로세서에 의해 테스트된다}. 따라서 이 기술은 상당한 반응성을 요구하는 애플리케이션(예컨대 시청각 흐름 송신 애플리케이션)에 불량하게 적응된다는 단점을 가진다.
본 발명의 목적은 종래 기술의 이러한 단점들을 극복하는 것이다.
더 구체적으로, 본 발명의 목적은 통신 시스템(예컨대, MSDU 조립의 속도 및/또는 단순함)의 성능을 개선하는 것이다.
이러한 목적을 위해, 본 발명은 적어도 하나의 데이터 패킷을 형성하기 위해 데이터 블록들을 조립하는 방법을 제안하고, 이 방법은
- 각각의 제 1 서술자가 한 세트의 블록에 속하는 각 블록의 상태를 나타내는 정보를 포함하여, 각 블록의 상태가 그 블록이 저장되었는지 여부를 표시하는, 적어도 하나의 제 1 데이터 블록 서술자의 제 1 레지스터에 쓰는 단계,
- 적어도 상기 세트 부분의 상태를 결정하고 이를 제 2 레지스터에 기록하는 단계로서, 이로 인해 상기 상태가 상기 세트 부분에서 블록들의 저장 또는 비저장의 상태를 나타내는, 결정 및 기록 단계,
- 제 2 레지스터에 기록된 상태에 따라 상기 세트의 블록들을 담고 있는 패킷의 조립 단계를
포함한다.
유리하게, 상태를 결정하는 단계는 다수의 2진 데이터로 표현된, 제 1 레지스터의 크기보다는 엄격하게 작은, 많아야 다수의 클록 사이클에서, 그리고 더 유리하게는 많아야 한 클록 사이클에서 실행되는 기본 단계이다.
바람직한 특징에 따르면, 제 1 레지스터의 쓰기는 제 2 레지스터의 순수하게 전자적 업데이트(electronic update)를 수반한다.
유리하게, 이 방법은 또한 제 1 패킷 블록의 위치를 결정하기 위한 단계를 포함하고, 상기 단계는
- 적어도 하나의 제 2 첫 번째 블록 서술자를 제 3 레지스터에 쓰는 단계로서, 각 제 2 서술자는 각 블록에 대해 제 1 패킷 블록이 수반되는지를 표시하는 정보를 포함하는, 쓰는 단계와,
- 제 3 레지스터의 콘텐츠에 기초하여 패킷에서 제 1 블록을 결정하고 제 4 레지스터에서의 제 1 블록의 식별자를 기록하는 단계를
포함하고, 세트의 블록들을 담고 있는 패킷의 조립은 제 4 레지스터에 기록된 식별자에 따라 실행된다.
유리하게, 한 패킷에서 제 1 블록을 결정하는 단계는, 다수의 2진 데이터로 표현되는 제 3 레지스터의 크기보다 엄격히 작은 많아야 다수의 클록 사이클에서 수행된 기본 단계이다.
유리한 특징에 따르면, 이 방법은 최종 패킷 블록의 위치를 결정하기 위한 단계를 포함하고, 상기 단계는
- 적어도 하나의 제 3 최종 블록 서술자를 제 5 레지스터에 쓰는 단계로서, 각각의 제 3 서술자는 최종 패킷 블록이 수반되는지 여부를 각 블록에 대해 표시하는 정보를 포함하는, 쓰는 단계와,
- 제 5 레지스터의 콘텐츠에 기초하여 패킷에서 최종 블록을 결정하고, 제 6 레지스터에서 송신될 패킷에서의 최종 블록의 식별자를 기록하는 단계를
포함하며, 상기 세트의 블록들을 담고 있는 패킷의 조립은 제 6 레지스터에서 기록된 식별자에 따라 실행된다.
유리하게, 한 패킷에서 최종 블록을 결정하는 단계는 다수의 2진 데이터로 표현된 제 5 레지스터의 크기보다 엄격히 작은, 많아야 다수의 클록 사이클에서 실행된 기본 단계이다.
특정 특징에 따르면, 최종 패킷을 결정하는 단계와 상태를 결정하는 단계는 동시에 이루어진다.
바람직하게, 조립될 패킷에서의 블록의 개수를 결정하는 것은, 제 4 레지스터와 제 6 레지스터의 콘텐츠에 따라 행해진다.
유리한 특징에 따르면, 상태를 결정하는 단계와 최종 블록을 결정하는 단계는, 제 2 레지스터에서 저장된 상태가 패킷들이 저장된 것 및/또는 최종 패킷 블록이 식별되지 않은 것을 표시하는 한, 되풀이된다.
특정 특징에 따르면, 제 2 레지스터에 기록된 상태는
- 가능한 패킷 조립 상태,
- 그 패킷의 끝이 검출되지 않았기 때문에 가능하지 않은 패킷 조립 상태, 및
- 적어도 그 패킷의 부분이 저장 및/또는 수신되지 않기 때문에 가능하지 않은 패킷 조립 상태를
포함하는 세트에 속한다.
유리하게, 본 발명의 방법은 데이터 블록 수신 단계를 포함하고, 이로 인해 각 블록과 연관된 상태는 그 블록이 올바르게 수신되었는지 여부를 표시한다.
특정 특징에 따르면, 그 블록들은 예컨대 IEEE 802.16 통신 프로토콜에 따라 무선 채널에서 송신된 데이터 프레임에서 수신된다.
본 발명은 또한 적어도 하나의 데이터 패킷을 형성하기 위해 데이터 블록 조립 디바이스에 관한 것으로, 상기 디바이스는
- 적어도 하나의 제 1 데이터 블록 서술자를 제 1 레지스터에서 쓰기 위한 수단으로서, 각각의 제 1 서술자는 한 세트의 블록에 속하는 각 블록의 상태를 나타내는 정보를 포함하여, 각 블록의 상태가 그 블록이 저장되었는지 여부를 표시하는, 쓰기 위한 수단,
- 상기 세트의 적어도 한 부분의 상태를 결정하고 제 2 레지스터에서 이를 기록하여, 그 상태가 상기 세트의 부분에서 그 블록들의 저장 또는 비저장 상태를 나타내는, 결정 및 기록하기 위한 수단,
- 제 2 레지스터에 기록된 상태에 따라 상기 세트의 블록들을 담고 있는 패킷을 조립하기 위한 수단을
포함한다.
본 발명은 첨부된 도면을 또한 참조하는, 다음에 나오는 상세한 설명을 읽음으로써 더 쉽게 이해되고 다른 특성 및 장점이 분명해진다.
도 1은 그 자체로서 알려진 패킷 송신의 일 실시예를 도시하는 도면.
도 2는 본 발명의 특정 실시예에 따른 통신 네트워크를 도시하는 도면.
도 3은 본 발명의 특정 실시예에 따른, 도 2에 도시된 통신 네트워크의 디바이스를 개략적으로 도시하는 도면.
도 4는 내지 도 6 및 도 9는 도 3에 도시된 디바이스에서 구현된 수신 방법을 도시한다.
도 7은 도 3에 도시된 디바이스에 의해 처리된 패킷의 단편화(fragmentation)를 도시하는 도면.
도 8은 도 3에 도시된 디바이스에서 구현된 레지스터의 콘텐츠에서의 변화의 일 예를 도시하는 도면.
도 2는 본 발명의 특정 일 실시예에 따른 통신 네트워크(2)를 도시한다.
네트워크(2)는, 예컨대
- 액세스 포인트(20),
- 터미널(21,22)을
포함하는 IEEE 802.16에 따른 무선 네트워크이다.
액세스 포인트(20)는 무선 링크 상에서 MSDU를 터미널(21,22)과 송수신할 수 있다.
도 7은 2개의 MSDU(70,71)의 구조를 개략적으로 도시한다. 그러므로, 실례로서 MSDU(70)는 n개의 블록(700 내지 70n)을 포함하고, MSDU(71)는 m개의 블록(710 내지 71m)을 포함한다. 제 1 PDU(73)는 MSDU(미도시)에 대응하는 블록들과 MSDU(70)의 제 1 블록들을 포함한다. 제 2 PDU(74)는 MSDU(70)의 다음 블록들과 MSDU(71)의 모든 블록을 포함한다. PDU가 IEEE 802.16 표준에 따라 무선 프레임으로 송신될 때, 헤더는 PDU의 시작과 그것들의 크기를 식별하는 것을 가능하게 한다. 서브-헤더들 또한 각각의 MSDU 블록의 크기와 함께, 각 MSDU의 제 1 블록, 최종 블록 및 임의의 중간 블록을 식별하는 것을 가능하게 할 수 있다.
도 3은 액세스 포인트(20) 또는 터미널(21,22) 중 하나에 대응하는 디바이스(3)를 개략적으로 도시한다.
디바이스(3)는 어드레스와 데이터 버스(34)에 의해 상호 연결되고 또한 클록 신호를 운반하며
- 마이크로프로세서(31)(또는 CPU),
- 비휘발성 ROM(Read Only Memory) 메모리(32),
- RAM(Random Access Memory) 메모리(33),
- 무선 링크 상에서 신호를 송신하기 위한 송신 모듈(35),
- 무선 링크 상에서 신호를 수신하기 위한 수신 모듈(36), 및
- 수신된 블록 관리 모듈(37)을
포함한다.
게다가, 소자(31 내지 36) 각각은 당업자에게 공지된 것이다. 이들 일반적인 소자들은 본 명세서에서 설명되지 않는다.
설명에서 사용된 "레지스터(register)"라는 단어는, 언급된 각 메모리에서, 낮은 용량의 메모리 존(zone)(소수의 2진 데이터)뿐만 아니라, 높은 용량의 메모리 존(전체 프로그램이나 수신된 오디오/비디오 서비스를 나타내는 데이터의 전부 또는 일부를 저장할 수 있게 하는)을 지정하는데 사용된다는 점이 주목된다.
ROM 메모리(32)는 특히 프로그램("prog")(320)을 포함한다.
전술한 방법의 단계들을 구현하는 알고리즘은 이들 단계를 구현하는 디바이스(3)와 연관된 ROM 메모리(32)에 저장된다. 마이크로프로세서(31)는 부팅되면, 이들 알고리즘의 명령어들을 로드하여 수행한다.
RAM 메모리(33)는 특히
- 레지스터(330)에서, 디바이스(3)가 부팅될 때 로드되는 마이크로프로세 서(31)의 동작 프로그램,
- 레지스터(3311 내지 331N)에서 저장 및/또는 수신된 제 1 MSDU 블록들의 N개의 서술자,
- 레지스터(3321 내지 332N)에서 저장 및/또는 수신된 최종 MSDU 블록들의 N개의 서술자,
- 레지스터(3331 내지 333N)에서 올바르게 저장 및/또는 수신된 MSDU 블록들의 N개의 서술자,
- 레지스터(334)에서 데이터를 담고 있는 데이터(예컨대, 시청각 및/또는 파일-타입 데이터) 및/또는 PDU들,
- 인덱스 카운터(335),
- 현재의 MSDU 크기(336) 및
- 레지스터(337)에서 현재의 MSDU 서술자로의 포인터(pointer)를
포함한다.
수신된 블록 관리 모듈(37)은
- 특히 CPU(31)에 의해, 각각 제 1 블록, 최종 블록 및 올바르게 수신된 블록의 서술자를 쓰기 위해 의도된 레지스터(3700 내지 3702)를 포함하는 모듈(370)로서, 레지스터(3700 내지 3702)는 각각 버스(34)를 통한 CPU(31)에 의한 쓰기 액세스를 위한 자체적인 어드레스를 가지는, 모듈(370),
- 현재의 MSDU의 제 1 블록의 순번 순서(rank order)(또는 번호)를 식별하는 레지스터(3710), 현재의 MSDU의 최종 블록을 식별하는 레지스터(3711) 및 현재의 MSDU에 대응하는 상태 레지스터(3712)를 포함하는 모듈(371)로서, 이들 레지스터(3710 내지 3712) 각각은 버스(34)를 통한 CPU(31)에 의한 읽기 액세스를 위한 자체적인 어드레스를 가지는, 모듈(371),
- 모듈(370)의 레지스터로부터 모듈(371)의 레지스터의 콘텐츠를 결정하기 위한 모듈(372)을
포함한다.
본 발명에 따르면, 모듈(37)은 하나 이상의 개별 구성 요소(예컨대, ASIC 또는 프로그래밍 가능한 구성 요소)을 포함하는 전자 블록이거나 다른 기능들을 포함하는 구성 요소에 전체적으로 또는 부분적으로 삽입된다{예컨대, 메모리(32 및/또는 33) 및/또는 CPU(31)를 포함하는 ASIC}.
설명된 실시예에 따르면, 서술자는 32비트를 포함한다. 본 발명의 변형예에 따르면, 서술자는 32비트 외의 고정된 크기{그 범위는 수 비트(예컨대 8)서부터 수백 또는 수천 비트까지 이를 수 있다}나 가변 크기를 가질 수 있다. 통상, 서술자의 각 비트는 수신된 블록에 대응하고, 그것의 중요도(significance)는 서술자 타입에 의존한다. 즉,
- 제 1(또는 최종) 블록의 서술자에서는, 1비트가 제 1(또는 최종) MSDU 블록에 대응하고, 0비트는 블록의 부재 또는 MSDU의 제 1(또는 최종) 블록이 아닌 블록에 대응한다.
- 저장된 및/또는 수신된 블록의 서술자에서는, 1비트가 저장된 및/또는 수신된 MSDU 블록에 대응한다.
다른 중요도 또는 값(예컨대, 앞서 설명한 것 외의 다른 값)과 다른 포맷(예컨대, 각 서술자에 관한 복수의 비트 및/또는 1개 또는 2개의 서술자 타입으로 결합된 3개의 서술자 타입)도 물론 본 발명에 따라 가능하다.
명확성을 위해, 제 1 또는 최종 MSDU 블록과 관련되는 서술자와 저장된 및/또는 수신된 블록에 관한 서술자만이 설명된다. 다른 서술자, 특히 각 애플리케이션에 관련되는 연결 서술자가 구현될 수 있다. 설명된 블록 서술자는, 특히 하나 이상의 PDU를 담고 있는 프레임의 수신시 업데이트된다.
모듈(372)은 전자적 형태, 바람직하게는 프로그래밍 가능한 구성 요소(예컨대, 게이트 어레이), PLD
Figure 112008062765211-PCT00001
(Programmable Logic Device)에서의 논리 회로의 형태 또는 ASIC에서 구현된다. 이러한 타입의 회로는, 예컨대, 도 9에 도시된 알고리즘에 대응하는 논리식에 대응하는 그것의 콘텐츠의 VHDL 정의에 의해 얻어지고 최적화된다.
모듈(372)의 그러한 구현예는 그것이 간단한 논리 함수를 포함하고 비교적 적은 수의 논리 게이트를 필요로 한다는 장점을 제공한다.
게다가, 모듈(372)은 서술자의 값이 제 1 블록 번호, 최종 블록 번호 및 상태로 전환되는 서술자를 레지스터(3700 내지 3702)로 직접 읽어들인다. 그 상태 및 번호들은 모듈(372)에 의해 각 레지스터(3710 내지 3712)에 자동으로 저장된다. 그러므로, 레지스터(3710 내지 3712)의 콘텐츠는 거의 바로 결정되고, 그 결과는 레지스터(3710 내지 3712)에 기록된다. 이러한 식으로, 다수의 2진 데이터(예컨대, 32)로 표현된 레지스터(3700 내지 3702)의 크기보다 엄격히 작은 많아야 다수의 클 록 사이클에서 그리고 바람직하게는 1 클록 사이클보다 작은 사이클에서 레지스터(3702)에서의 쓰기 이후에, 레지스터(3710 내지 3712)가 업데이트된다. 따라서 레지스터(3702)에서 서술자를 쓰는 CPU(31)는 다음 클록 사이클에서처럼, 레지스터(3710 내지 3712)의 콘텐츠를 읽을 수 있게 된다.
도 4는 디바이스(3)에서 구현된 데이터 패킷 수신 알고리즘을 개략적으로 도시한다.
제 1 단계(40) 동안, 디바이스(3)는 그것의 상이한 구성 요소와 변수를 초기화한다.
이후 단계(41) 동안, 디바이스(3)는 무선 매체 상에서 송신된 n개의 PDU를 포함하는 데이터 프레임을 대기하여 이를 수신하며, 여기서 n은 0이 아닌 정수이다.
그 다음, 단계(42) 동안, 디바이스(3)는 메모리(33)의 서술자(3311 내지 331N, 3321 내지 332N 및 3331 내지 333N)를 업데이트함으로써, 제 1 및 최종 MSDU 블록과 올바르게 수신된 MSDU 블록들의 제도법(cartography)을 실행한다.
이후, 단계(43) 동안에는 디바이스(3)가 수신된 프레임에 대응하는 MSDU(들)를 조립한다. 이후 단계(41)가 되풀이된다.
이들 단계는 부분적으로는 CPU(31)에 의해, 부분적으로는 모듈(37)에 의해 구현된다. CPU(31)에 의한 소프트웨어 부분의 구현은 바람직하게는 멀티태스크(multitask) 또는 의사-멀티태스크(pseudo-multitask) 형태로 실행되고, 이를 통해 단계(41,42,43)가 상이한 태스크에 의해 수행될 수 있다.
단계(43)는 상이한 시각 또는 다음에 오는 다양한 이벤트에서 수행될 수 있고, 특히
- 프레임의 수신 후(도 4에 개략적으로 도시된 바와 같이),
- 연결 변경의 이벤트시{특히, 복수의 애플리케이션이 디바이스(3)의 데이터 수신 자원을 사용하는 경우} 및/또는
- 한정된 시간 기간의 끝에서,
- 미리 한정된 양의 블록들의 수신 후,
- 최종 MSDU 블록의 수신 후 및/또는,
- 전술한 상이한 시각 및/또는 이벤트의 결합(예컨대, 중간 블록이 올바르게 수신되지 않은 경우 최종 MSDU 블록의 수신 이후 시간 기간의 만료 후)에서 수행될 수 있다.
도 5는 IEEE 802.16 표준에 따른 PDU 시작에 대응하는 프레임 헤더를 읽는 단계(420)를 통해 시작하는 단계(42)를 도시한다.
이후, 단계(421) 동안 수신기(3)는 서브-헤더가 존재하는 경우 그것을 읽는다.
이후, 단계(422) 동안 마이크로프로세서(31)는, 다음 블록이 제 1 및/또는 최종 MSDU 블록에 대응하는지를 표시하는 헤더 및/또는 서브-헤더의 콘텐츠에 따라 메모리(33)에서 제 1 블록 서술자(3311 내지 331N)와 최종 블록 서술자(3321 내지 332N)를 업데이트한다. 마이크로프로세서(31)는 또한 실제로 올바르게 수신된 블록에 따라 수신된 블록 서술자(3331 내지 333N)를 업데이트한다.
이후, 테스트(423) 동안 수신기(3)는 적어도 하나의 다른 서브-헤더가 현재의 PDU에 존재하는지를 체크하고, 만약 존재한다면 단계(421)가 되풀이된다{읽는 단계(421)와 테스트 단계(423)가 동시에 실행될 수 있다}.
만약 존재하지 않는다면, 테스트(424) 동안 수신기(3)는 적어도 하나의 다른 PDU가 수신된 프레임에 존재하는지를 체크하고, 만약 존재한다면 단계(420)가 되풀이된다{읽는 단계(420)와 테스트 단계(424)가 동시에 실행될 수 있다}. 만약 존재하지 않는다면 단계(42)가 종료된다.
도 6은 제 1, 최종 및 수신된 블록의 서술자를 사용하여 MSDU 패킷을 조립하는 것을 수반하는 단계(43)를 상세히 도시한다.
수신된 블록의 세트는 상이한 연관된 상태들을 가지고, 특히 MSDU 패킷에서의 제 1 블록, MSDU 패킷에서의 최종 블록 및 올바르게 수신된 블록의 특정 상태를 가진다. 헤더 또는 블록이 수신될 때, 그 상태들이 업데이트된다. 각 블록의 상태는 메모리(33)에서 32비트의 서술자의 도움으로 저장되어, 각 비트가 특정 블록의 상태에 대응하게 된다. 그러므로, MSDU 패킷에서의 제 1 블록 상태들의 경우, 수신된 처음 32개의 블록의 대응하는 상태는 서술자(3311)에 저장되고, 다음 32개의 블록의 상태는 다음 서술자(3312)에 저장되며, 그러한 식으로 서술자(331)에 대해서까지 이루어진다. 2048개인 최대 개수의 블록에 대해, N은 64와 같다. 서술자(3321 내지 332N 및 3331 내지 333N)의 포맷은 서술자(3311 내지 331N)의 포맷과 유사하다.
단계(43)는 테스트(430)로 시작하고, 그동안 CPU(31)는 임의의 주어진 기준 (타임아웃, 연결 변화, 임의의 주어진 시작 이벤트, 프레임의 수신 등)을 따르는 조립이 요구되는지를 체크한다. 만약 요구되지 않는다면, 단계(43)는 요구되지 않는 조립에 대응하는 리턴(return)으로 끝난다.
만약 요구된다면, CPU(31)는 제 1 블록 서술자{명확하게 하기 위해, 현재 서술자는 메모리(3311, 3321, 3331)의 콘텐츠에 대응한다고 가정되는데, 실제로는 현재 서술자가 메모리(33)에서의 임의의 주어진 서술자에 대응할 수 있다}에 대응하는 MSDU 포인터(337)를 저장함으로써, 모듈(37)의 레지스터(3700 내지 3702)에서 메모리(3311, 3321, 3331)의 각 콘텐츠를 쓴다. 이후 모듈(372)이 상태 레지스터(3710)를, 바람직하게는 레지스터(3702)에서의 쓰기 후 많아야 한 클록 사이클에서 업데이트한다. CPU(31)는 또한 인덱스 카운터를 335에서 0으로 초기화한다.
이후, 테스트(432) 동안 CPU는 업데이트되고, 레지스터(3710)에 존재하는 조립 상태를 읽고, 이 상태가 "연속(continuous)"에 대응하는지를 체크한다.
만약 그렇다면 레지스터(3700)의 콘텐츠에 의해 식별된 제 1 MSDU 블록 다음에 오는 블록은, 레지스터(3702)의 콘텐츠를 고려하여 올바르게 수신된다. 역으로, 제 1 MSDU 블록과 다음 블록 중에서 어떠한 최종 MSDU 블록도 식별되지 않는다. 단계(433) 동안 CPU(31)가 그 다음 최종 MSDU 블록과 올바르게 수신된 블록 서술자{예컨대 단계(433)의 제 1 수행 동안의 3322와 3332}를 각각 레지스터(3701)와 레지스터(3702)에 쓴다. 이후 모듈(372)은 다수의 비트(예컨대 32)로서 표현된 레지스터(3700 내지 3702)의 크기보다 엄격히 작은, 많아야 다수의 클록 사이클과, 바람직하게는 레지스터(3702)에서의 쓰기 다음에 오는 많아야 한 클록 사이클에서 상 태 레지스터(3710)를 업데이트한다. CPU(31)는 또한 한 단위(unit)만큼 인덱스 카운터(335)를 증가시킨다. 그 상태는 예컨대 3비트에 대해 미리 결정된 값에 대응한다. 즉,
- 성공 상태에 대응하는 제 1 비트로서, 이는 MSDU가 조립될 수 있다면{결정된 최종 블록과 올바르게 수신된 제 1 블록과 최종 블록(제 1 블록과 최종 블록 포함) 사이의 블록들} 1이고, 그 반대의 경우에는 0이 된다,
- 실패 상태에 대응하는 제 2 비트로서, 이는 제 1 블록 다음에 오고 조립될 MSDU 패킷의 최종 블록 앞에 오며, 올바르게 수신된 블록들의 현재 서술자와 연관되는 블록들 중 적어도 하나의 블록이 올바르게 수신되지 않으면 1이고, 그 반대의 경우는 0이 된다,
- "연속" 상태에 대응하는 제 3 비트로서, 이는 제 1 블록 다음에 오고, 조립될 MSDU 패킷의 임의의 최종 블록(현재 최종 블록 서술자에 대응함) 앞에 오며, 올바르게 수신된 블록들의 현재 서술자와 연관되는 모든 블록이 올바르게 수신되었다면 1이고, 그 반대의 경우는 0이 된다.
테스트(432)의 결과가 부정적(negative)이라면, 테스트(434) 동안 CPU(31)는 조립 상태가 성공에 대응하는지를 체크한다. 만약 성공에 대응하지 않는다면, 상태(43)는 실패한 조립에 대응하는 리턴으로 끝나고, 이를 통해 그것의 제 1 블록에 의해 식별된 MSDU의 블록들은 올바르게 수신되지 않는다.
만약 성공에 대응한다면, 제 1 블록과 마지막 블록에 의해 식별된 MSDU의 모든 블록은 올바르게 수신되었고, 이 MSDU는 조립될 수 있다. 그러므로, 단계(434) 동안, CPU(31)는 레지스터(3710)에서 제 1 블록의 순번 순서를 읽고, 레지스터(3700)에 쓸 때, CPU(31)가 제 1 블록이 대응하는 32개의 블록들의 세트를 표시하는 정보를 레지스터(337)에 저장하였으며, 따라서 현재의 MSDU의 제 1 블록은 제 1 블록 서술자에서의 순번 순서와, 이 서술자와 수신된 데이터 사이의 대응에 의해 명확히 식별된다. CPU(31)는 또한 레지스터(3711)에서 최종 블록의 순번 순서를 읽는다.
이후, 단계(436) 동안 CPU(31)는 조립될 MSDU의 크기(336)를 계산하는데, 다수의 블록으로 표현된 이 크기는, 서술자의 크기(도시된 예에서는 32)에 인덱스 카운터(335)의 값이 곱해지고, 여기에 최종 블록의 순번 순서의 값 + 1이 더해지고 제 1 블록의 순번 순서의 값이 빼지는, 크기와 같은데, 즉 요약하면
MSDU 크기 = 32.카운터 + 레지스터(3711) - 레지스터(3710) + 1이 된다.
그러므로 MSDU 패킷은 제 1 MSDU 블록 식별자와 MSDU 블록의 계산된 개수에 따라 CPU(31)에 의해 조립된다. 본 발명의 구현을 단순화하기 위해, 블록의 크기는 바람직하게는 모든 블록에 대해 동일하다(가능하게는 MSDU의 최종 블록에 대한 것은 제외). 이후 CPU(31)는 조립된 MSDU(또는 이들 데이터에 관한 포인터)의 데이터를 목적 애플리케이션에 송신하고, 단계(43)가 끝난다.
본 발명의 특별히 적합한 변형예에 따르면, 블록이 모두 동일한 크기가 아니라면, MSDU의 크기는 옥텟(octet)들로 표현된다. 인덱스 카운터는 이후 또한 옥텟으로 표현되고 각 블록의 실제 크기를 고려하여 업데이트된다(예컨대, 서브-헤더에서 표시되는 옥텟으로 표현된 크기에 따라).
본 발명의 상이한 변형예에 따르면, 조립된 MSDU는 그것의 제 1 블록에 관한 포인터와 그것의 최종 블록에 관한 포인터의 도움으로 식별되고, 최종 블록에 관한 포인터는 바람직하게는 포인터의 도움으로, 제 1 블록에 서술자의 크기(도시된 예에서는 32)가 더해지고, 여기에 인덱스 카운터(335)의 값과 최종 블록의 순번 순서의 값을 곱해지며, 제 1 블록의 순번 순서의 값이 빼지는 것으로 계산된다.
이를 예시하기 위해, 도 8은 특정 서술자에 대응하는 레지스터의 콘텐츠에서의 변화의 일 예를 도시한다.
디바이스(3)가 무선(radio) 프레임을 수신하게 되면, CPU(31)가 메모리(33)에 대응하는 서술자를 쓴다. 그러므로, 예컨대 제 1 MSDU 블록 서술자(800)는 16진수 기수법{도 8에서 2진 기수법으로 표현된 서술자에서, 최하위 비트(LSB)는 올라가는 블록 순번 순서에서 좌측에 도시된다}으로 표현된 값인 00000101H를 포함하고, 최종 블록 서술자(801)는 00000080H를 포함하며, 올바르게 수신된 블록 서술자는 FFFFFFFFH를 포함한다.
레지스터(3700 내지 3702)에서 각각 서술자(800 내지 802)를 쓴 다음에는, 제 1 블록 레지스터(3710)가 값(0){서술자(800)의 0의 순번 순서를 지닌 비트}을 포함하고, 최종 블록 레지스터(3711)는 7{서술자(801)의 7인 순번 순서를 지닌 비트는 1이고, 0 내지 6인 순번 순서를 지닌 모든 비트는 0임}을 포함하며, 조립 상태 레지스터(3712)는 성공적인 조립을 표시한다{서술자(802)의 0 내지 7인 순번 순서를 지닌 모든 비트는 1임}. 다수의 블록으로 표현된 MSDU의 크기는 32 ×카운터 + 7 - 0 + 1, 즉 8과 같다. 제 1 블록이 서술자(800)의 비트(0)에 대응하는 크기가 8인 MSDU는 이후 수신지 애플리케이션(destination application)에 송신될 수 있다.
이후 서술자는 업데이트된다. 이 서술자의 최종 요소를 가리키지 않는 선행하는 최종 블록 서술자의 경우, 32개 블록의 동일한 세트가 남는다.
그러므로, 현재 제 1 블록 서술자(810), 최종 블록 서술자(811) 및 수신된 블록 서술자는 각각 값인 00000100H, 00000000H 및 FFFFFFFFH를 포함한다.
레지스터(3700 내지 3702)에서 각각 서술자(810 내지 812)를 쓴 다음에는 제 1 블록 레지스터(3710)가 값(8){서술자(810)의 순번 순서가 8인 비트는 1임}을 포함하고, 조립 상태 레지스터(3712)는 연속 상태를 표시한다{서술자(811)의 어떠한 비트도 1이 아니고, 서술자(812)의 8 내지 31까지의 순번 순서를 지닌 모든 비트는 1임}. 이후 인덱스 카운터 값은 1이 된다.
다음 최종 블록 서술자(821)와 수신된 블록 서술자(822)는 각각 값(0080000000H)과 값(08FFFFFFH)을 포함한다.
레지스터(3701,3702)에서 각각 서술자(821,822)를 쓴 다음에, 최종 블록 레지스터(3711)는 값(11){서술자(821)의 0 내지 10의 순번 순서를 지닌 비트는 0이고, 11의 순번 순서를 지닌 비트는 1임}을 포함하고, 조립 상태 레지스터(3712)는 실패 상태{서술자(822)의 0 내지 11인 순번 순서를 지닌 비트는 0임}를 표시한다. 인덱스 카운터 값은 1과 같게 남는다.
그 다음 최종 블록 서술자(821)와 수신된 블록 서술자(824)는 각각 값(0080000000H)과 값(FFFFFFFFH)을 포함한다.
레지스터(3701,3702)에서 각각 서술자(821,824)를 쓴 다음에는, 최종 블록 레지스터(3711)가 값(11)을 포함하고, 조립 상태 레지스터(3712)가 성공 상태{서술자(822)의 0 내지 11인 순번 순서를 지닌 모든 비트는 1의 값을 가짐}를 표시한다. 인덱스 카운터의 값은 1과 같게 남는다. 제 1 블록이 서술자(800)의 8인 순번 순서를 지닌 비트에 대응하고 그 크기가 32 ×인덱스 카운터 + 11 - 8 + 1, 즉 36인 MSDU는, 이후 애플리케이션에 송신될 수 있다.
도 9는 레지스터(3710 내지 3712)를 업데이트하기 위해 모듈(37)에 의해 구현된 알고리즘을 도시한다.
초기화 단계(90) 다음에는, 단계(91) 동안 모듈(37)이 제 1 블록 레지스터(3700)에서 쓰는 것을 기다린다. 이후, 단계(92) 동안 모듈(37)은 제 1 MSDU을 찾는다. 이 동작을 위해, 레지스터(3700)가 읽혀지고, 첫 번째 1비트가 검색되며, 그것의 순번 순서가 레지스터(3710)에 저장된다. 첫 번째 1비트 순번 순서 값으로 서술자(3700)의 콘텐츠를 전환하는 것을 수반하는 동작은, 하나 이상의 논리 회로나 논리 회로의 일부에 의한 순수하게 하드웨어 구현예에 특히 적합하다. 예컨대 상태 표 전환(state table conversion)은 이러한 목적을 위해 사용될 수 있다. 처음 식별된 비트의 순번 순서보다 엄격히 작은 순번 순서를 지닌 비트가 0이고, 모든 다른 비트가 1인 제 1 32비트 마스크가 생성된다. 레지스터(3700)의 콘텐츠가 레지스터(3701,3702)의 콘텐츠와 동상(in phase)임을 표시하는 불 동기화(synchronization Boolean)는 1로 초기화된다.
이후, 단계(93) 동안에는 모듈(37)이 레지스터(3701,3702)에서 쓰는 것을 기 다린다. 일단 이들 레지스터가 업데이트되면, 모듈(37)은 레지스터(3701)가 제 1 블록의 순번 순서 이상인 순번 순서를 지닌 1을 포함하는지를 체크한다. 이를 행하기 위해, 제 1 마스크로 비트-바이-비트(bit-by-bit) "AND" 연산을 실행하고, 첫 번째 1 비트에 대한 검색이 이 "AND" 연산의 결과에 대해 실행된다. 이 검색은 바람직하게는 제 1 블록의 순번 순서에 관한 검색과 동일한 방식으로 실행된다.
단계(94) 동안, 모듈(37)은 레지스터(3701)에서의 최종 MSDU 블록의 존재를 검색하고, 테스트(95) 동안에는 최종 블록 순번 순서가 발견되었는지를 체크한다.
만약 발견되지 않았다면 테스트(99) 동안 모듈(37)은 제 1 블록이 현재 서술자에 대응하면(1 불 동기화) 제 1 블록의 순번 순서 이상이고, 제 1 블록이 선행하는 서술자에 대응하면(0 불 동기화) 0 이상인 순번 순서를 지닌 레지스터(3702)의 비트가 모든 1과 같은지를 체크한다. 이를 행하기 위해,
- 불 동기화가 0이라면 FFFFFFFFH로 "AND" 연산을,
- 순번 순서가 제 1 블록에 대응하는 비트 전에 위치한 임의의 비트를, 1로 설정하기 위해 제 1 마스크의 역으로 비트-바이-비트 "OR" 연산을 한 다음, "OR" 연산의 결과와 FFFFFFFFH의 결과 사이에 비트-바이-비트 "AND" 연산을
실행한다.
"AND" 연산은 이 연산으로부터 생기는 비트 전부에 관해 실행된다. 그 결과과 처음에 수신된 블록에서처럼 1과 같다면, 현재 서술자에 대응하는 모든 블록이 올바르게 수신된다.
테스트(99)의 결과가 긍정적(positive)이라면, 단계(911) 동안 레지스 터(3712)는 연속인 것에 대응하는 상태로 업데이트된다.
이후, 단계(912) 동안 첫 번째 마스크가 0인 값으로 업데이트되고, 단계(93)가 되풀이된다.
테스트(95)의 긍정적인 결과 후, 단계(96) 동안 모듈(37)이 제 1 블록이 현재 서술자에 대응하면(1 불 동기화), 제 1 블록의 순번 순서 이상인 또는 제 1 블록이 선행하는 서술자에 대응하면(0 불 동기화), 0 이상인 순번 순서를 및 최종 블록의 순번 순서 이하인 순번 순서를 지닌 레지스터(3702)의 비트가 모두 1과 같은지를 체크한다. 이를 행하기 위해, 먼저 최종 비트의 순번 순서 이하인 순번 순서를 지닌 비트가 1과 같고 나머지 비트들이 0과 같은 제 2 마스크를 업데이트한다. 이후, 모듈(37)은 레지스터(3702)의 콘텐츠와의 비트-바이-비트 "OR" 연산을 실행한 다음 그 결과를 가지고
- 불 동기화가 0이라면 FFFFFFFFH와 "AND" 연산을 실행하고,
- 순번 순서가 제 1 블록에 대응하는 비트 전에 위치한 임의의 비트를, 1로 설정하기 위해 제 1 마스크의 역을 가지고 비트-바이-비트 "OR" 연산을 실행한 다음, 그 "OR" 연산의 결과와 FFFFFFFFH 사이의 비트-바이-비트 "AND" 연산을 실행한다.
"AND" 연산은 이 연산의 결과로부터의 모든 비트에 관해 실행된다.
그 결과가 1과 같으면, 현재 서술자에 대응하는 모든 블록은 제 1 블록과 최종 블록 사이(제 1 블록과 최종 블록 포함)에 올바르게 수신된다. 이후, 단계(97) 동안 최종 블록의 순번 순서의 값이 레지스터(3711)에 저장되고, 성공 상태에 대응 하는 레지스터(3712)가 업데이트된다. 제 1 블록 레지스터(3700)의 이어지는 읽기는 CPU(37)로 하여금 조립 성공 표시 다음에 오는 대응하는 서술자의 상태를 알아볼 수 있게 한다. 레지스터(3700)의 업데이트는 바람직하게는 레지스터(3712)에서의 성공 상태의 읽기(단계 97) 및/또는 레지스터(3700)의 읽기(이를 통해 상기 동작은 단계 97에 독립적일 수 있다) 동안, 특히 자동적이다. 이는 예컨대, 레지스터(3710)의 콘텐츠에 의해 한정된 제 1 블록의 위치를 제외한 위치들을 포함하는 32비트 마스크와 레지스터(3700)의 현재 콘텐츠 사이의 "AND" 연산의 적용 후 모듈(372)에 의해 실행된다. 그러므로 레지스터(3700)는 레지스터(3710)의 콘텐츠에 대응하는 순번 순서로 1 대신 0을 포함한다. 단계(97) 다음에는, 단계(91)가 되풀이된다.
테스트(96 또는 99) 동안 그 결과가 1과 같지 않다면, 현재 서술자에 대응하는 적어도 하나의 블록이, 제 1 블록과 포괄적인 최종 블록 사이(제 1 블록과 최종 블록 포함)에 올바르게 수신되지 않는다. 이후 단계(98) 동안에는 레지스터(3712)가 실패에 대응하는 상태로 업데이트된다. 레지스터(3712)를 읽은 다음에는, 단계(91 또는 92) 중 하나가 되풀이된다. 사실, 단계(92)는 새로운 블록들의 저장을 기다리지 않고 바로 되풀이될 수 있는데, 이는 올바르지 않게 수신되거나 저장된 블록 다음에 오는 블록이 MSDU의 조립을 가능하게 할 수 있기 때문이다. 특정 실시예에 따르면, 단계(98) 다음에는 단계(91)가 체계적으로 되풀이된다. 다른 실시예에 따르면, 단계(91)와 단계(92) 사이의 선택은 소프트웨어 명령, 전자적 구성 및/또는 임의의 주어진 파라미터 정의에 의해 이루어진다.
물론, 본 발명은 전술한 실시예에 제한되지 않는다.
특히, 송신/수신 디바이스의 아키텍처는 소자들의 각각의 기능 및/또는 형태(전자 소자들의 기능은 특히 제한된 개수의 구성 요소들로 결합될 수 있거나 역으로 복수의 구성 요소로 분할될 수 있다) 및 그것들의 배열에 있어서, 도 3에 도시된 것과는 다를 수 있다.
게다가, 수신된 블록 관리 모듈은 또한 상이한 구조를 가질 수 있어, 이로 인해 그 해석(translation) 기능은 특히 레지스터와 연관된 모듈 중 하나에 통합될 수 있다.
또한, 본 발명에 따르면 수신된 블록 관리 모듈은 모든 서술자와 연관될 수 있거나, 역으로 그 디바이스가 복수의 수신된 블록 관리 모듈을 포함할 수 있어, 이를 통해 각 모듈이 하나 이상의 서술자와 연관된다.
게다가, 본 발명은 무선 통신 표준(예컨대, IEEE 802.16)에 따른 데이터의 수신에 제한되지 않고, 수신된 패킷 블록 서술자를 사용하는 임의의 데이터 패킷 수신 방법에 관련된다.
게다가, 본 발명의 변형예에 따르면 수신된 패킷 서술자는 반드시 제 1 MSDU 패킷, 최종 MSDU 패킷들 및 올바르게 수신된 패킷의 서술자와 연관될 필요는 없지만, 블록이 저장되는 데이터 패킷의 재조립을 가능하게 하는 임의의 타입의 특정 상태에 대응한다.
본 발명의 일 변형예에 따르면, 전자적 블록 관리 모듈은 오직, 특정 순번 순서로부터나 특정 순번 순서까지와 같이, 미리 결정된 값을 가지거나 가지지 않는 제 1 MSDU 블록들, 최종 MSDU 블록들 및 올바르게 수신된 블록들을 결정하기 위한 1개 또는 2개의 기능을 구현한다. 그러므로, 예컨대 변형예에 따르면 전자적 모듈(370)은 각각
- 제 1 패킷 블록 번호{IEEE 802.16 표준에 따른, 예컨대 BSN(Block Sequence Number)의 블록},
- 최종 패킷 블록 번호(예컨대, IEEE 802.16 표준에 따른 BSN 블록),
- 올바르게 저장되거나 수신된 블록 서술자, 및
- 올바르게 저장되거나 수신된 블록 서술자의 제 1 비트(또는 필드)에 대응하는 블록 번호에
대응하는 쓰기 액세스를 지닌 레지스터를 구현한다.
일 변형예에 따르면, 최종 레지스터{올바르게 저장되거나 수신된 블록 서술자의 제 1 비트(또는 필드)에 대응하는 블록 번호}가 생략되는데, 이는 그것의 값이 제 1 레지스터(제 1 패킷 블록 번호)의 값에 기본으로(by default) 대응할 수 있기 때문이다. 이들 실시예에서, 상태 레지스터만이 전자적 블록 관리 모듈에 의해 업데이트된다.
게다가, 본 발명은 무선 송신에 제한되지 않고 임의의 주어진 매체, 특히 잡음이 있는 유선 채널이나 기록 채널 상의 모든 송신에 관련된다.
설명한 실시예에 따르면, 전자적 모듈(370)은 단일 제 1 블록 레지스터, 단일 최종 블록 레지스터 및 단일 최종 수신된 블록 레지스터를 포함한다. 본 발명의 변형예에 따르면, 모듈(370)은 이들 레지스터의 하나, 둘 또는 세 개에 관련된 복 수의 서술자를 포함하거나 메모리(33)로 직접 이들 레지스터의 콘텐츠를 읽어들여, 제 1 서술자로의 포인터가 CPU에 의해 제공되는 것 및/또는 기본으로 구성되는 것이 이루어진다. 이 변형예에 따르면, 이후 모듈(370)은 모든 중간 블록이 올바르게 수신된다면 MSDU의 최종 블록을 자동으로 검색할 수 있고, 자동으로 증가하는 인덱스 카운터 레지스터를 포함할 수 있다. 이후 CPU는 이 인덱스 카운터 레지스터로 직접 조립될 수 있는 MSDU의 크기를 나타내는 정보를 읽을 수 있고, 심지어 상태 레지스터를 읽지 않고도 성공 상태를 얻을 수 있다. 이 경우, 연속 상태는 어떠한 현재의 유효 서술자도 올바르게 수신된 블록 앞에 오는 제 1 MSDU 블록의 식별 다음에 오는 최종 MSDU 블록 식별자를 포함하지 않을 경우에만 나타난다.
전술한 번형예와 유리하게 결합될 수 있는 다른 실시예에 따르면, 모듈(370)은 별개의 MSDU에 대응하는 복수의 상태와 병렬로 저장을 가능하게 하기 위해, 동일한 타입의 복수의 결과 레지스터를 포함한다. 그러므로, 제 1 블록(및/또는 최종 블록)의 존재에 의해 식별된 각 MSDU에 대해, 제 1 블록의 순번 순서를 표시하는 레지스터, 최종 블록의 순번 순서를 표시하는 레지스터, MSDU의 상태(조립 가능 여부와, 가능하게는 조립이 가능하지 않은 이유)를 표시하는 레지스터, 및 MSDU의 크기를 포함하는 네 개 한 조의(quadruplet)의 결과 레지스터가 제공될 수 있다. 이러한 식으로, 조립될 수 있는 MSDU의 결정은, 본질적으로 전자적 모듈(들), CPU 부분에 관한 관련이 거의 없거나 없는 것에 의해 달성된다.
전술한 바와 같이, 본 발명은 원격 통신 분야, 특히 고속 패킷 수신 분야에 이용 가능하다.

Claims (16)

  1. 적어도 하나의 데이터 패킷을 형성하도록 데이터 블록들을 조립하는 방법에 있어서,
    - 적어도 하나의 제 1 데이터 블록 서술자를 제 1 레지스터(3702)에 쓰는 단계로서, 각각의 제 1 서술자가 한 세트의 블록에 속하는 각 블록의 상태를 나타내는 정보를 포함하여, 각 블록의 상태가 그 블록이 저장되었는지 여부를 표시하는, 제 1 레지스터(3702)에 쓰는 단계(42),
    - 적어도 상기 세트 부분의 상태를 결정하고 이를 제 2 레지스터(3712)에 기록하는 단계로서, 상기 상태가 상기 세트 부분에서 블록들의 저장 또는 비저장의 상태를 나타내는, 결정 및 기록 단계(97,98,911),
    - 제 2 레지스터에 기록된 상태에 따라 상기 세트의 블록들을 담고 있는 패킷의 조립 단계(43)를
    포함하는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  2. 제 1항에 있어서, 상기 상태를 결정하는 단계는 다수의 2진 데이터로 표현된 제 1 레지스터의 크기보다는 엄격하게 작은, 많아야 다수의 클록 사이클에서 실행되는 기본 단계인 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  3. 제 2항에 있어서, 상기 상태를 결정하는 단계는 많아야 한 클록 사이클에서 실행되는 기본 단계인 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서, 상기 제 1 레지스터에 쓰는 단계는 상기 제 2 레지스터의 순수하게 전자적인 업데이트를 수반하는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서, 제 1 패킷 블록의 위치를 결정하기 위한 결정 단계(92)를 포함하고, 상기 단계는
    - 적어도 하나의 제 2 첫 번째 블록 서술자를 제 3 레지스터(3700)에 쓰는 단계로서, 각 제 2 서술자는 각 블록에 대해 제 1 패킷 블록이 수반되는지를 표시하는 정보를 포함하는, 쓰는 단계와,
    - 제 3 레지스터의 콘텐츠에 기초하여 패킷에 제 1 블록을 결정하고 제 4 레지스터(3710)에서의 제 1 블록의 식별자를 기록하는 단계를
    포함하며, 상기 세트의 블록들을 담고 있는 패킷의 조립은 제 4 레지스터에 기록된 식별자에 따라 실행되는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  6. 제 5항에 있어서, 한 패킷에서 제 1 블록을 결정하기 위한 상기 단계는, 다수의 2진 데이터로 표현되는 제 3 레지스터의 크기보다 엄격히 작은, 많아야 다수의 클록 사이클에서 수행된 기본 단계인 것을 특징으로 하는, 데이터 블록들을 조 립하는 방법.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서, 최종 패킷 블록의 위치를 결정하기 위한 단계를 포함하고, 상기 단계는
    - 적어도 하나의 제 3 최종 블록 서술자를 제 5 레지스터(3701)에 쓰는 단계로서, 각각의 제 3 서술자는 그것이 최종 패킷 블록인지 여부를 각 블록에 대해 표시하는 정보를 포함하는, 쓰는 단계와,
    - 제 5 레지스터의 콘텐츠에 기초하여 패킷에서 최종 블록을 결정하고, 제 6 레지스터(3711)에서 송신될 패킷에서의 최종 블록의 식별자를 기록하는 단계를
    포함하며, 상기 세트의 상기 블록들을 담고 있는 패킷의 상기 조립은 상기 제 6 레지스터에서 기록된 상기 식별자에 따라 실행되는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  8. 제 7항에 있어서, 한 패킷에서 최종 블록을 결정하기 위한 상기 단계는 다수의 2진 데이터로 표현된 제 5 레지스터의 크기보다 엄격히 작은, 많아야 다수의 클록 사이클에서 실행된 기본 단계인 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  9. 제 7항 또는 제 8항에 있어서, 최종 패킷을 결정하고 상태를 결정하기 위한 상기 단계들은 동시에 이루어지는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  10. 제 5항 또는 제 7항에 있어서, 상기 제 4 레지스터와 상기 제 6 레지스터의 콘텐츠에 따라 조립될 패킷에서의 블록들의 개수를 결정하기 위한 단계를 포함하는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  11. 제 7항 내지 제 9항 중 어느 한 항에 있어서, 상태를 결정하고 최종 블록을 결정하기 위한 상기 단계는, 제 2 레지스터에서 저장된 상태가 패킷들이 저장되는 것 및/또는 최종 패킷 블록이 식별되지 않은 것을 표시하는 한 되풀이되는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  12. 제 1항 내지 제 11항 중 어느 한 항에 있어서, 상기 제 2 레지스터에 기록된 상기 상태는
    - 가능한 패킷 조립 상태,
    - 그 패킷의 끝이 검출되지 않았기 때문에 가능하지 않은 패킷 조립 상태, 및
    - 적어도 그 패킷의 부분이 저장되지 않기 때문에 가능하지 않은 패킷 조립 상태,
    - 적어도 그 패킷의 부분이 수신되지 않았기 때문에 가능하지 않은 패킷 조립 상태를
    포함하는 세트에 속하는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  13. 제 1항 내지 제 12항 중 어느 한 항에 있어서, 데이터 블록 수신 단계를 포함하고, 각 블록과 연관된 상기 상태는 상기 블록이 올바르게 수신되었는지 여부를 표시하는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  14. 제 13항에 있어서, 상기 블록들은 무선 채널 상에서 송신된 데이터 프레임에서 수신되는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  15. 제 14항에 있어서, 상기 데이터 프레임은 IEEE 802.16 통신 프로토콜에 따라 송신되는 것을 특징으로 하는, 데이터 블록들을 조립하는 방법.
  16. 적어도 하나의 데이터 패킷을 형성하도록 데이터 블록들을 조립하는 디바이스(3)로서,
    - 적어도 하나의 제 1 데이터 블록 서술자를 제 1 레지스터(3702)에서 쓰기 위한 수단으로서, 각각의 제 1 서술자는 한 세트의 블록에 속하는 각 블록의 상태를 나타내는 정보를 포함하여, 각 블록의 상태가 그 블록이 저장되었는지 여부를 표시하는, 쓰기 위한 수단,
    - 상기 세트의 적어도 한 부분의 상태를 결정하고 이를 제 2 레지스터(3712) 에 기록하는 수단으로서, 상기 상태가 세트의 상기 부분에서 그 블록들의 저장 또는 비저장 상태를 나타내는, 결정 및 기록하기 위한 수단(372),
    - 상기 제 2 레지스터에 기록된 상기 상태에 따라 상기 세트의 상기 블록들을 담고 있는 패킷을 조립하기 위한 수단을
    포함하는 것을 특징으로 하는, 데이터 블록들을 조립하는 디바이스.
KR1020087021608A 2006-03-20 2007-03-09 데이터 패킷 조립을 위한 방법 및 디바이스 KR101353992B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0650955A FR2898752A1 (fr) 2006-03-20 2006-03-20 Procede et dispositif d'asssemblage de paquets de donnees
FR0650955 2006-03-20
PCT/EP2007/052250 WO2007107467A1 (en) 2006-03-20 2007-03-09 Method and device for data packet assembly

Publications (2)

Publication Number Publication Date
KR20080111000A true KR20080111000A (ko) 2008-12-22
KR101353992B1 KR101353992B1 (ko) 2014-01-20

Family

ID=37670690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087021608A KR101353992B1 (ko) 2006-03-20 2007-03-09 데이터 패킷 조립을 위한 방법 및 디바이스

Country Status (7)

Country Link
US (1) US8279894B2 (ko)
EP (1) EP2005665B1 (ko)
JP (1) JP5185920B2 (ko)
KR (1) KR101353992B1 (ko)
CN (1) CN101406005B (ko)
FR (1) FR2898752A1 (ko)
WO (1) WO2007107467A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102065568B (zh) * 2009-11-17 2013-07-03 中国科学院微电子研究所 基于数据描述符的mac软硬件交互方法及其硬件实现装置
CN105450488B (zh) * 2015-11-11 2019-10-22 深圳市冠明能源科技有限公司 一种数据处理方法及相关装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930525A (en) * 1997-04-30 1999-07-27 Adaptec, Inc. Method and apparatus for network interface fetching initial and data burst blocks and segmenting blocks and scheduling blocks compatible for transmission over multiple virtual circuits
JP3449204B2 (ja) 1998-01-23 2003-09-22 ソニー株式会社 制御装置、無線伝送装置及び無線伝送方法
JP3399348B2 (ja) * 1998-03-16 2003-04-21 三菱電機株式会社 無線伝送方法
WO2003043259A1 (en) * 2001-11-12 2003-05-22 Nokia Corporation Method and device for retransmission of transmitted units
TWI223520B (en) * 2003-05-23 2004-11-01 Admtek Inc Wireless network receiver and method for performing message integrity check of service data unit thereof
JP2005176234A (ja) * 2003-12-15 2005-06-30 Oki Electric Ind Co Ltd 同期ワード検出回路及びベースバンド信号受信回路
CN1917508B (zh) * 2005-08-19 2011-01-26 鸿富锦精密工业(深圳)有限公司 无线局域网装置及其帧序列号编号方法

Also Published As

Publication number Publication date
KR101353992B1 (ko) 2014-01-20
WO2007107467A1 (en) 2007-09-27
JP5185920B2 (ja) 2013-04-17
US20100202473A1 (en) 2010-08-12
EP2005665A1 (en) 2008-12-24
FR2898752A1 (fr) 2007-09-21
JP2009530935A (ja) 2009-08-27
CN101406005B (zh) 2015-03-04
EP2005665B1 (en) 2014-10-08
US8279894B2 (en) 2012-10-02
CN101406005A (zh) 2009-04-08

Similar Documents

Publication Publication Date Title
US5590122A (en) Method and apparatus for reordering frames
EP1159814B1 (en) Dynamic parsing in a high performance network interface
EP1166520B1 (en) Method and apparatus for managing a network flow in a high performance network interface
US6430184B1 (en) System and process for GHIH-speed pattern matching for application-level switching of data packets
US7474672B2 (en) Frame alteration logic for network processors
EP1163777B1 (en) Method and apparatus for identifying and classifying network traffic in a high performance network interface
KR101332279B1 (ko) 데이터 패킷 전송 방법 및 디바이스
KR101353992B1 (ko) 데이터 패킷 조립을 위한 방법 및 디바이스
CN107707548B (zh) Tlv报文解析方法、装置、电子设备及存储介质
US7065628B2 (en) Increasing memory access efficiency for packet applications
US7082302B1 (en) Methods and systems for combining data frames in diversity hand-off
US7240175B1 (en) Scheduling data frames for processing: apparatus, system and method
CN116893987B (zh) 硬件加速方法、硬件加速器及硬件加速系统
EP1217800A1 (en) Method and system for network protocol processing
US20030072329A1 (en) Segmentation of data transmission units into fixed size segments
CN114866492A (zh) 一种信号处理方法、系统和相关装置
US20020150105A1 (en) Sequential feedback HEC checking method and circuit for asynchronous transfer mode (ATM)

Legal Events

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

Payment date: 20161220

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee