現在,第3世代(3G)の無線通信システムとして,W-CDMAシステムが普及し,さらに,W-CDMAのデータ通信を高速化(最大14Mbps)したHSDPA(High-Speed Downlink Packet Access)と呼ばれる規格が実用化されつつある。HSDPAは,3G方式の改良版であることから,3.5Gとも呼ばれている。3G方式の標準化団体3GPP(3rd Generation Partnership Project)で標準化されている。
HSDPAは,(1)一つの物理チャネルを複数の移動端末(UE)で時間分割により共有して使用する,(2)電波の状態に応じてより高速な変調方式や符号化方式を自動的に選択する,(3)再送制御(ARQ)と訂正符号化処理を組み合わせたハイブリッドARQを採用するなどの特徴を有する。
図1は,HSDPAに対応するプロトコルアーキテクチャのレイヤ2(Layer2)のデータ構成を示す図である。レイヤ2は,MAC(Medium Access Control)-hs,MAC-d,RLC(Radio Link Control)のサブレイヤに分けられる。
図2は,RLC PDU(Protocol Data Unit)のフォーマットを示す図である。図2に示すRLC PDUは,データの送達確認制御及び再送制御が可能なAcknowledge ModeのRLC PDUであって,ユーザデータと制御データとを区別するD/Cビット,RLC-PDUの順序を示すシーケンス番号(SN(Sequence Number)),送達確認要求の有無を示すポーリングビットP,ユーザデータの拡張情報を示す領域HE,レングスインジケータLI,Eビット,データ格納領域Data及びパディングビットPAD又はピギーバック(Piggybacked STATUS PDU)から構成される。
RLC PDUのデータサイズは,例えば42oct,82oct,122oct(1oct(octet)は8bit)などに固定され,通信中に変更されることはない。RLC PDUは,シーケンス番号SNで識別され,シーケンス番号SNは例えば0〜最大4095までの数字が付与される。
図1のRLCにおいて,RLCの送信側では,上位レイヤからの送信データRLC SDU(Service Data Unit)は複数のRLC PDUに分割され,各PLC PDUを識別するシーケンス番号SNが付与されて下位のMAC-dレイヤに送られる。
また,RLCの受信側では,下位のMAC-dレイヤからRLC PDUを受信すると,シーケンス番号SN順に並べ替えて,これらを結合してRLC SDUを組み立てて,上位レイヤへ転送する。このとき,シーケンス番号SNに抜けがある場合は,その抜けたSNに対応するRLC PDUの再送要求を行う。
従って,RLCの送信側は,再送要求に備え,RLCの受信側から送達確認の通知を受信するまで,送信したRLC PDUをバッファ(メモリ)に保持しておく必要がある。また,RLCの受信側では,RLC SDUの組立の際,抜けたSNのRLC PDU分のバッファを空けておく必要がある。
図3は,3GPPによるHSDPA方式におけるRLCの受信側の動作を説明する図である。本図中及び以後の図中において,「H」はRLC Headerを示し,「Data」はPayloadを示す。
RLCの受信側でシーケンス番号の抜けが検出された場合,再送要求として,当該抜けたRLC PDUのシーケンス番号SNを送信側に通知する。図3(a)に示すように,例えば,SN=2が抜け,再送要求される。このとき,RLCの受信側では,SN=2のRLC PDUの本来格納されるバッファ領域を空けておく。空けておくバッファサイズは,RLC PDUが固定長であるため,容易に求めることができる。RLCの受信側が,再送データとして,SN=2のRLC PDUを受信すると(図3(b)参照),当該PDUのために空けられたバッファ領域に受信したPDUを配置し,RLC SDUを組み立てる(図3(c)参照)。
下記特許文献1は,MAC-hsサブレイヤにおいて,可変長データであるMAC-hs PDUをRLC PDU単位に分割して,シーケンス番号ともに共有メモリ(バッファ)に格納することで,複雑なメモリ制御方法を用いることもなく,且つメモリ量の増加も抑制することが可能なメモリ管理方法について開示している。
上述したHSDPAによる3.5Gの移動通信システムが実現された後は,続いて,更なる高速化,大容量化が実現する第4世代(4G)に早期に移行することが期待されているが,現状,第4世代に移行する前に,3.9G(スーパー3Gと呼ばれることもある)と呼ばれる段階をもう一段経て4Gに移行することが予定されている。3.9Gの通信速度は,最大速度100Mbps程度が想定されている。
3GPPでは,現在,3.9Gの仕様として,図1及び図2に示した固定長のRLC PDUを可変長にすることが検討されている。
図4は,RLC PDUを可変長にした場合に想定されるRLCサブレイヤの構成を示す図である。図4に示すように,RLC PDUを可変長にした場合,シーケンス番号SNはRLC SDUを識別する番号として用いられ,各RLC SDUを構成するRLC PDUを識別するためのセグメントインジケータSI(Segment Indicator)の導入が想定されている。RLC PDUが固定長の場合,固定長のRLC SDUを構成するRLC PDUの数は一意に決まるので,RLC PDUを識別することで,RLC SDUも識別することができる。しかしながら,RLC PDUを可変長にする場合,RLC SDUを構成するRLC PDUの数も一意に決まらないので,RLC SDUをも識別する符号を導入する必要性が生じ,従来,RLC PDUを識別するために用いていたシーケンス番号SNをRLC SDUを識別する符号に用い,RLC PDUを識別する符号として,新たにセグメントインジケータSIを導入したものである。
図5は,RLC PDUの可変長にした場合のフォーマット例を示す図である。上述したように,RLC PDUを可変長にした場合,シーケンス番号SNはRLC SDUを識別する番号となるが,RLC PDUは,このシーケンス番号SNとその配下のセグメントインジケータSIとの組み合わせにより識別されることとなる。
フォーマットにおいて,セグメントインジケータSIの領域が複数設けられるのは,可変長に分割されたRLC PDUがさらに分割されるような場合に,さらに分割されたRLC PDUを識別するために更なるセグメントインジケータSIを付与する必要があるからである。 RLC PDUを可変長にした場合の再送制御では,以下のような問題が生じる。
図6は,RLC PDUを可変長にした場合のRLC受信側の動作を説明する図である。RLCの受信側でRLC PDUの抜けが検出された場合,再送要求として,当該抜けたRLC PDUのシーケンス番号SNとセグメントインジケータSIを送信側に通知する。図6(a)に示すように,例えば,SN=0,SI=1のRLC PDUが抜け,再送要求される。このとき,抜けたRLC PDUのデータ長が不明なので,セグメントインジケータSI順に格納するために,抜けたRLC PDUのためのバッファ領域を空けておくことができない(図6(b)参照)。
仮にあらかじめバッファ領域を空けるとすると,設定されている最大長のRLC PDUを受信することを想定する必要があり,バッファ領域の無駄に消費する可能性が高い。
特許文献1では,可変長のMAC-hs PDUをRLC PDUの固定長単位に分割したが,これは,RLCサブレイヤでいずれRLC PDUに分割されるので,問題ないが,RLCサブレイヤより上位レイヤでデータ分割は行われないので,同様の手法を用いることはできない。また,スーパー3Gのような高速通信では,一つのデータ長を長くすることで効率的な通信が可能となり,むやみにデータ分割するのは好ましくない。
図7は,RLC PDUの最大長を考慮したバッファ領域の使用状態を説明する図である。例えば,PLC PDUの最大長が1500バイトとすると,一つのRLC PDUのために1500バイトのバッファ領域を用意する必要があり,図中の破線部のバッファ領域が無駄になる。
また,RLC PDUを受信される順序に従って詰めて格納する場合,同一のシーケンス番号SNのRLC PDUが連続して受信されるとも限らず,異なるシーケンス番号SNのRLC PDUが混在して受信される場合,同一のシーケンス番号SNのRLC PDUを抽出してRLC SDUを組み立てなければならず,RLC SDUの組立も複雑となる。
従って,本発明の目的は,RLC PDUが可変長である場合において,バッファ領域を無駄に消費することなく,受信されるRLC PDUを効率的にバッファに格納する無線受信装置を提供することにある。
上記目的を達成するための本発明の無線受信装置の第一の構成は,無線通信のプロトコルレイヤを構成するレイヤ2に属するRLCレイヤで,可変長のRLC PDUデータを受信し,一つ又は複数のRLC PDUデータから一つのRLC SDUデータを組み立てる無線受信装置において,RLC SDUデータのあらかじめ決められた最大データ長を有する複数の領域に区切られたバッファメモリと,受信されたRLC PDUデータのヘッダに含まれる第一の順序情報を参照し,前記第一の順序情報が同一であるRLC PDUデータを前記バッファメモリの同一の領域に格納し,それぞれの領域に格納されたRLC PDUデータ毎にRLC SDUデータを組み立てる制御部とを備えることを特徴とする。
本発明の無線受信装置の第二の構成は,上記第一の構成において,前記制御部は,前記バッファメモリの一つの領域に複数のRLC PDUデータを格納する場合,複数のRLC PDUデータを当該領域に受信順序に従って格納し,RLC SDUデータを組み立てるために,当該領域に格納された複数のRLC PDUのヘッダに含まれる第二の順序情報により特定される順序に従って複数のRLC PDUデータを順次読み出し,当該順序に並べ替えて,RLC SDUデータを組み立てることを特徴とする。
本発明の無線受信装置の第三の構成は,上記第二の構成において,前記バッファメモリの各領域に格納される各RLC PDUデータの前記第二の順序情報,先頭アドレス,データ長を一組のデータとして記憶する管理メモリを備え,前記制御部は,複数のRLC PDUデータの受信順序に従って,各RLC PDUデータの前記第二の順序情報,先頭アドレス,データ長を含む一組のデータを前記管理メモリに順次記録することを特徴とする。
本発明の無線受信装置の第四の構成は,上記第三の構成において,複数のRLC PDUデータの受信順序が前記第二の順序情報の順序通りに連続している場合,前記制御部は,第二の順序情報が連続している複数のRLC PDUデータについて,その最初のRLC PDUデータの第二の順序情報と最後のRLC PDUデータの第二の順序情報と,最初のRLC PDUデータの先頭アドレスと,当該第二の順序情報が連続している複数のRLC PDUデータ全体のデータ長とを一組のデータとして前記管理メモリに記録することを特徴とする。
本発明の無線受信装置の第五の構成は,上記第二の構成において,前記制御部は,前記バッファメモリの一つの領域に複数のRLC PDUデータを格納する場合,当該複数のRLC PDUデータのヘッダに含まれる前記第一の順序情報と先頭アドレス情報により特定される前記バッファメモリのアドレスに格納し,当該領域に格納された複数のRLC PDUデータの格納順序に従って複数のRLC PDUデータを読み出し,RLC SDUデータを組み立て,前記先頭アドレス情報は,複数のRLC PDUデータの送信順序及びデータ長に従って与えられることを特徴とする。
本発明の無線受信装置の第六の構成は,上記第五の構成において,前記制御部は,再送制御により,すでにRLC PDUデータが格納されている前記バッファメモリのアドレスと同一の先頭アドレス情報を有するRLC PDUデータを受信した場合,当該先頭アドレス情報により特定される前記バッファメモリのアドレスに,当該受信したRLC PDUデータを上書きすることを特徴とする。
本発明の無線受信装置の第七の構成は,上記第一の構成において,前記第一の順序情報は,RLC SDUデータを識別するシーケンス番号であることを特徴とする。
本発明によれば,RLCレイヤにおけるRLC PDUデータが可変長となった場合において,無線受信装置が受信するRLC PDUデータを格納するバッファメモリを無駄なく効率的に用い
ることができる。
以下,図面を参照して本発明の実施の形態について説明する。しかしながら,かかる実施の形態例が,本発明の技術的範囲を限定するものではない。
図8は,本発明の実施の形態における無線受信装置の構成図である。無線受信装置は,無線通信端末装置10又は無線基地局装置20であって,無線通信端末装置10と無線基地局装置20は,それぞれRLCバッファ11,21及びそれに対する読み出し制御及び書き込み制御を行うRLC制御部12,22を備える。以下に説明する実施の形態例は,RLCの受信側におけるバッファ構成及びバッファ制御であって,HSDPAのようなダウンリンクに適用される場合は,無線通信端末装置10が本発明の無線受信装置であって,HSUPAのようなアップリンクに適用される場合は,無線基地局装置20が本発明の無線受信装置である。以下,無線通信端末装置10のRLCバッファ11及びRLC制御部12を例に説明するが,無線基地局装置20のRLCバッファ21及びRLC制御部22にも,本発明の実施の形態は同様に適用される。RLC制御部12,22は,ハードウェア,ソフトウェア,又は両方の組み合わせのいずれで構成されてもよい。
図9は,本発明の実施の形態におけるRLCバッファの構成例を示す図である。RLCバッファ11は,RLC SDUを識別するシーケンス番号SN毎に区切られ,各SNに対して,あらかじめ決められているRLC SDUの最大長のバッファ量(例えば1500バイト)が与えられる。
RLC PDUは上記図5に示したフォーマットで伝送され,ヘッダにシーケンス番号SN及びセグメントインジケータSIを有する。RLC制御部12は,RLC PDU受信時に,各RLC PDUのヘッダに含まれるシーケンス番号SNを参照して,SN毎にRLC PDUを振り分けて,各SNに割り当てられたバッファ領域に受信したRLC PDUを格納する。
RLC SDUの最大長はあらかじめ決められているので,RLC SDUを識別するシーケンス番号ごとにRLC PDUを振り分けることで,可変長のRLC PDUのデータ長を考慮する必要なく,RLC PDUをRLCバッファ11に効率的に格納することができる。具体的には,RLC PDUをSN毎に振り分けることで,複数のRLC PDUをシーケンス番号毎に格納でき,シーケンス番号SNが同一である限り,同一のシーケンス番号SNのRLC PDUの全体のデータ長はRLC SDUの最大長を超えずに格納できるので,可変長のRLC PDUをRLCバッファ11に最大限効率的に格納することができる。
図9(a)では,図6と同様に,RLC PDUが(1)SN=0,SI=0,(2)SN=1,SI=0,(3)SN=0,SI=2,(4)SN=0,SI=1の順に受信されるとする。そうすると,(1)SN=0,SI=0,(3)SN=0,SI=2,(4)SN=0,SI=1のRLC PDUは,RLCバッファ11におけるSN=0に対して割り当てられた領域に受信順に格納され,(2)SN=1,SI=0のRLC PDUは,RLCバッファ11におけるSN=1に対して割り当てられた領域に格納される。(3)SN=0,SI=2,(4)SN=0,SI=1のRLC PDUは,再送により受信順序が入れ替わっているが,受信順に格納される。
図9(b)は,RLCバッファ11を管理する管理メモリに記憶される情報であって,管理メモリは,例えばRLC制御部12の内部メモリである。または,RLCバッファ11の一部の領域を管理メモリとして用いてもよい。または,管理メモリ専用のメモリが設けられても良い。
管理メモリも,RLCバッファ11に格納されるRLC PDUをシーケンス番号SN毎に管理し,管理メモリには,RLC PDUのセグメントインジケータSI毎に,RLCバッファ11における先頭アドレス,データ長及びそのシーケンス番号SNにおける最後のセグメントインジケータSIであるかどうかのビット情報(LSI : Last Segment Indicator)が記憶される。
RLC制御部12は,シーケンス番号SN毎に,LSI=1となる最終のRLC PDUのセグメントインジケータSIまでのすべてのRLC PDUがRLCバッファ11に格納されると,図9(b)に示す管理メモリを参照して,各RLC PDUの先頭アドレスからセグメントインジケータSI順に読み出すことで,RLC PDUをセグメントインジケータSI順に並べ替えて,RLC SDUを組み立てる。
図9(a)では,RLC制御部12は,シーケンス番号SN=0のRLC PDUについて,セグメントインジケータSI順,すなわち,(1)SN=0,SI=0,(4)SN=0,SI=1,(3)SN=0,SI=2の順にRLC PDUを読み出し,RLC SDUを組み立てる。
図10は,シーケンス番号SN毎にRLCバッファ11に格納されるRLC PDUを管理する管理メモリを用いた別の管理形態を示す図である。図10の管理メモリは,連続するセグメントインジケータSIの範囲を記憶できる領域を有する。領域aは,連続するセグメントインジケータSIの最初のSIと最後のSIとを記憶する。図10(a)に示すように,シーケンス番号SN=0のRLC PDUについて,SI=0のRLC PDUが受信されると,まだ一つのRLC PDUしか受信されていないので,領域aには,連続する最初のSIと最後のSIとして,同じSI=0が記憶され,SI=0のRLC PDUの先頭アドレスとそのデータ長が記憶される。
続いて,SI=0と連続するSI=1のRLC PDUが受信されると,領域aには,連続する最初のSIとしてSI=0,最後のSIとしてSI=1が記憶され,先頭アドレスは,SI=0のRLC PDUの先頭アドレスのままであり,データ長として,SI=0とSI=1のRLC PDUの合計データ長が記憶される。
RLC PDUはセグメントインジケータSI順に受信され,セグメントインジケータSI順にRLCバッファ11に格納されている場合は,先頭アドレスとデータ長を指定することで,連続する複数のRLC PDUを読み出すことができ,セグメントインジケータSI毎に先頭アドレスとデータ長を記憶するよりも,小さいデータ量でRLCバッファ11に格納されるRLC PDUをより少ないデータ量で管理でき,管理メモリのメモリ容量を少なくすることができる。図10(a)の場合,SI=0の先頭アドレスとSI=0とSI=1の合計データ長を記憶することで,連続して格納されるSI=0とSI=1の2つのRLC PDUを一組のデータで管理することができる。
図10(b)では,さらにSI=1に連続するSI=2のRLC PDUが受信され,領域aには,連続する最初のSIとしてSI=0,最後のSIとしてSI=2が記憶され,先頭アドレスは,最後のSIとして,同じSI=0が記憶され,先頭アドレスは,SI=0のRLC PDUの先頭アドレスのままであり,データ長として,SI=0からSI=2までのRLC PDUの合計データ長が記憶される。このように,セグメントインジケータSIが連続する限り,連続して格納される複数のRLC PDUを一組のデータで管理することができ,管理メモリのメモリ容量を少なくすることができる。
図11は,本発明の実施の形態におけるRLC PDUの別のフォーマット例とRLCバッファの構成例を示す図である。図11(a)のRLC PDUのフォーマット例では,図5に示したセグメントインジケータSIに代わって,セグメントポインタSPが用いられる。セグメントポインタSPは,RLCバッファ11におけるシーケンス番号SN毎の各バッファ領域の先頭アドレスからのオフセットアドレスである。
RLCバッファ11は,RLC SDUの最大長(例えば,1500バイト)単位であらかじめ区切られており,各シーケンス番号に対応するバッファ領域のアドレス範囲は特定可能である。従って,シーケンス番号SN毎の複数のRLC PDUの格納位置をアドレスで指定することで,RLC PDUが可変長であっても,各RLC PDUを順番に格納することができる。
図11(b)に示すように,例えば,シーケンス番号SN=0について,セグメントポインタ(1)SP=0x0000,(2)SP=0x0100,(3)SP=0x01A0と指定されたRLC PDUが受信された場合,それぞれセグメントポインタSPで指定されたアドレスを先頭アドレスとしてSN=0のバッファ領域に格納される。受信された順番が本来の順番(1),(2),(3)でなく,例えば,(1),(3),(2)の順番で受信された場合であっても,RLC制御部12は,(1)SP=0x0000のRLC PDUをセグメントポインタSPで指定されたアドレスに格納し,その後に受信する(3)SP=0x01A0のRLC PDUも,セグメントポインタSPで指定されたアドレスに格納する。このとき,バッファ領域では,(1)SP=0x0000のRLC PDUと(3)SP=0x01A0のRLC PDUの間に,(2)SP=0x0100のRLC PDU分のバッファ領域が空き,(2)SP=0x0100のRLC PDUを受信すると,セグメントポインタ(2)SP=0x0100で指定されたアドレスかに格納することで,バッファ領域内において,(1)SP=0x0000,(2)SP=0x0100,(3)SP=0x01A0の順にRLC PDUが格納される。
図11(a)のフォーマットにおいて,セグメントポインタSPに続いて定義されるLSIビットは,各シーケンス番号SNのRLC PDUのうちの最後のRLC PDUであるかどうかを識別するビットである。RLC制御部12は,LSI=1のRLC PDUがそのシーケンス番号SNにおける最終のRLC PDUであることを認識し,そのシーケンス番号SNのバッファ領域において,LSI=1のRLC PDUの格納位置より前の領域に,シーケンス番号SNに対応するRLC PDUが全て受信されて格納されているかどうか確認し,すべて格納されている場合は,格納されている順番通りに読み出してRLC SDUを組み立てる。すべて格納されていない場合は,さらに待機し,又は再送要求するなどし,全て格納されるための処理を行う。
このように,バッファ領域において各RLC PDUが格納される先頭アドレスであるセグメントポインタSPにより, RLC PDUを識別し,バッファ領域に格納することで,RLC PDUを送信順序通りにRLCバッファ11に格納することができる。すなわち,受信順序が入れ替わった場合であっても,送信順序通りに格納することができる。
また,RLC制御部12は,一部のRLC PDUが受信されない場合に,送信側に対してそのRLC PDUの再送要求を行うが,その再送要求を行った後,そのRLC PDUが遅れて受信された場合,再送要求に基づいて,同一のRLC PDUを2回受信することになる。この場合,例えば,セグメントインジケータSIなどRLC PDUを識別する情報を比較することで,同一性を判定し,同一の場合は,一方を廃棄する処理する必要となるが,セグメントポインタSPを用いる場合は,当該廃棄処理が不要となる。
すなわち,同一のRLC PDUを2回受信した場合も,セグメントポインタSPで指定されたアドレスに上書きすることで,自動的に同一のRLC PDUを一つのみ格納することができ,2つのRLC PDUの同一性を判定する処理及び廃棄処理が不要となる。
また,再送要求を行った場合,再送される場合,さらに分割されて送られる場合がある。例えば,一つのRLC PDUの再送要求に対して,2つのRLC PDUに再分割されて再送される場合である。このような場合,セグメントインジケータSIを階層化し(例えば,再送要求されたPLC PDUのセグメントインジケータをSI=1とすると,更に分割された再送される2つのRLC PDUのセグメントインジケータをSI=1-1,1-2などにする),ヘッダにおけるセグメントインジケータSIの領域を追加する必要が生じる。
一方,セグメントポインタSPを用いる場合は,再送されるRLC PDUがさらに細かく分割されたとしても,分割されたRLC PDUそれぞれが格納されるバッファ領域の先頭アドレスをセグメントポインタSPとして指定すればよく,追加のヘッダ領域を必要とせず,セグメントポインタSPにより指定されるアドレスに,各RLC PDUを書き込むだけでよい。また,再分割による各RLC PDUの分割データ長が不明でも,RLCバッファ11の構成を変更する必要がない。