JP2013502015A - 効率的なデータ処理のための装置および方法 - Google Patents

効率的なデータ処理のための装置および方法 Download PDF

Info

Publication number
JP2013502015A
JP2013502015A JP2012524915A JP2012524915A JP2013502015A JP 2013502015 A JP2013502015 A JP 2013502015A JP 2012524915 A JP2012524915 A JP 2012524915A JP 2012524915 A JP2012524915 A JP 2012524915A JP 2013502015 A JP2013502015 A JP 2013502015A
Authority
JP
Japan
Prior art keywords
data
hardware component
tasks
hardware
block
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2012524915A
Other languages
English (en)
Other versions
JP5734977B2 (ja
Inventor
コーレンツ、マティアス
カン、イルファン・アンワー
サチャナラヤン、マドフスダン
マヘシュワリ、シャイレシュ
クリシュナムーアシー、スリビジャ
ウルガオンカー、サンディープ
クリンゲンブラン、トマス
リオウ、ティム・ティンフェイ
ミア、アイドリアス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2013502015A publication Critical patent/JP2013502015A/ja
Application granted granted Critical
Publication of JP5734977B2 publication Critical patent/JP5734977B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Advance Control (AREA)

Abstract

効率的なデータ処理の装置および方法は、ソフトウェアによって事前にプログラムされたハードウェアコンポーネントを含む。各ハードウェアコンポーネントは、他のものをトリガしてそのタスクを完了させる。事前にプログラムされた最後のハードウェアタスクが完了すると、ハードウェアコンポーネントは、ソフトウェア割込を出す。
【選択図】 図3

Description

本開示は一般にデータ処理に関し、さらに詳細には、通信システムにおいて、ハードウェアを使用し、データをより効率的に処理するための技術に関する。
一般的に、通信システム内のデータ処理機能は、ソフトウェアを用いて様々なタスクを実現する。そのようなソフトウェアは、一般的に、特定のハードウェア動作に対して知力を提供する。その結果として、ソフトウェアとハードウェアとの間には密なインタラクションが存在しなければならず、そのため、いくつかの例では、特定のタスクを実現するために多数のステップが要求される。ソフトウェアへの依存は、待ち時間の増加、帯域幅の浪費、システムマイクロプロセッサ上での処理負荷の増加などを含む、多数の不利益をもたらす。つまり、ハードウェアと、そのようなハードウェアを制御するための知能の大部分を提供するソフトウェアとの間に蜜なインタラクションを必要とする現在のパラダイムによってもたらされる不利益を改善または除去すると同時に、より効率的にデータを処理する方法が必要とされる。
下記は、1または複数の態様の基本的な理解を提供するために、そのような態様の簡略化された概要を提示する。この概要は、全ての企図される態様の広範囲な概観ではなく、全ての態様のキーまたは不可欠な要素を識別すること、あるいは、任意または全ての態様の範囲を描写することを目的としていない。その唯一の目的は、後に示される、発明を実施するための形態への前置きとして、1または複数の態様のいくつかのコンセプトを簡易な形で提示することである。
いくつかの態様に従って、データ処理方法は、第1のタスク待ち行列と関連付けられた第1のハードウェアコンポーネントーネントによって、第1のタスクのセットを実行する命令を受信することと、第2のタスク待ち行列と関連付けられた第2のハードウェアコンポーネントーネントによって、第2のタスクのセットを実行する命令を受信することと、第1のハードウェアコンポーネントにおいて、第1のタスクのセットを実行するためのトリガメッセージを受信することと、第1のタスクのセットの完了に応じて、第1のハードウェアコンポーネントによって、第2のタスクのセットを実行するためのトリガメッセージを第2のハードウェアコンポーネントに送信することと、を備える。
いくつかの態様に従って、データ処理装置は、プロセッサと、第1のメモリと、第2のメモリと、第1のタスク待ち行列と関連付けられた第1のハードウェアコンポーネントと、第2のタスク待ち行列と関連付けられた第2のハードウェアコンポーネントとを備え、複数のタスクは、第1のタスク待ち行列に事前に記憶され、複数の第2のタスクは、第2のタスク待ち行列に事前に記憶され、第1のハードウェアコンポーネントは、複数の第1のタスクの実行を開始するためにトリガを受信し、複数の第2のタスクの実行を開始するために第2のハードウェアコンポーネントにトリガを出すように構成される。
前述および関連した目的を達成するために、1または複数の態様が、以下に十分に記述され、特に特許請求の範囲で示される特徴を備える。以下の記述および添付の図面は、1または複数の態様の特定の例示的な特徴を詳細に示す。しかしながら、これらの特徴は、様々な態様の原理が用いられうる様々な方法のほんの一部を示し、この記述は、そのような態様およびその均等物を全て含むことが企図される。
開示される態様は、開示される態様を限定するためではなく、例示するために提供される添付の図面に関して下に記述されるであろう。ここで、同様の称号は同様のエレメントを表す。
図1は、開示される様々な態様に従って、無線通信システムを描写する。 図2は、開示される様々な態様に従って、ユーザ機器およびノードBを描写する。 図3は、開示される様々な態様に従って、受信機を描写する。 図4は、開示される様々な態様に従って、データ処理動作を描写するデータフロー図である。 図5は、開示される様々な態様に従って、簡略化されたシステム図である。 図6は、開示される様々な態様に従って、データ処理動作を描写するデータフロー図である。 図7は、開示される様々な態様に従って、データ処理動作を描写するフローチャートである。 図8は、開示される様々な態様に従って、閾値処理動作を描写するフローチャートである。 図9は、開示される様々な態様に従って、テンプレート処理を実現するシステム図である。 図10は、開示される様々な態様に従って、複数のメモリプールを実現するシステム図である。 図11は、開示される様々な態様に従って、プロトコルデータユニット記憶装置を描写する。 図12は、開示される様々な態様に従って、データの処理と記憶を例示する簡略化されたブロック図である。 図13は、典型的な無線デバイスを描写するブロック図である。 図14は、開示される様々な態様に従って、例示的な無線デバイスを描写するブロック図である。 図15は、開示される様々な態様に従って、ミニプロセッサを実現する簡略化されたブロック図である。 図16は、開示される様々な態様に従って、ミニプロセッサを使用してデータ処理方法を描写するフローチャートである。 図17は、開示される様々な態様に従って、コピーエンジンを実現するブロック図である。 図18は、開示される様々な態様に従って、例示的なデータフレームを描写する。
図面に関して様々な態様がここに記述される。次の記述において、説明を目的として、1または複数の態様の完全な理解を提供するために多数の特定な詳細が示される。しかしながら、そのような1または複数の態様が、これらの特定の詳細なしに実施されうることは明白でありうる。
本出願で使用される場合、「コンポーネント(component)」、「モジュール(module)」、「システム(system)」という用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアなどであるが、それらに限定されないコンピュータ関連エンティティを含むことが企図される。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/または、コンピュータでありうるが、それらに限定されない。例として、計算デバイス上で実行中のアプリケーションと、その計算デバイスとは、両方とも、コンポーネントでありうる。1または複数のコンポーネントは、プロセスおよび/または実行スレッド内に存在することができ、1つのコンポーネントは、1つのコンピュータに局所化(localize)され、および/または、2またはそれより多くのコンピュータ間に分散されうる。加えて、これらのコンポーネントは、様々なデータ構造を格納する様々なコンピュータ可読媒体から実行することができる。これらコンポーネントは、1または複数のデータパケット(例えば、ローカルシステム、分散システム内の別のコンポーネントと、および/または、インターネットのようなネットワークを経由して信号で別の複数のシステムとインタラクトする1つのコンポーネントからのデータ)を有する信号に従うような、ローカルおよび/またはリモートプロセスで通信することができる。
さらに、有線端末または無線端末でありうる端末に関して、様々な態様が本明細書に記述される。端末は、システム、デバイス、加入者ユニット、加入者局、モバイル局、モバイル、モバイルデバイス、リモート局、リモート端末、アクセス端末、ユーザ端末、端末、通信デバイス、ユーザエージェント、ユーザデバイス、または、ユーザ機器(UE)とも呼ばれうる。無線端末は、セルラ電話、衛星電話、コードレス電話、セッション開始プロトコル(SIP)電話、無線ローカルループ(WLL)局、携帯情報端末(PDA)、無線接続機能を有するハンドヘルドデバイス、計算デバイス、または、無線モデムに接続された別の処理デバイスでありうる。さらに、基地局に関して、様々な態様が本明細書に記述される。基地局は、1または複数の無線端末との通信に利用され、アクセスポイント、ノードB、または、ある別の用語でも呼ばれうる。
さらに、「または(or)」という用語は、排他的な「または」というよりはむしろ包括的な「または」を意味することが企図される。すなわち、別段明記されていない限り、または、コンテキストから明らかでない限り、「XはAまたはBを用いる」という表現は、あらゆる自然で包含的な置き換えを意味することが企図される。すなわち、「XはAまたはBを用いる」という表現は、次の例のいずれによっても満たされる:「XはAを用いる」、「XはBを用いる」、「XはAとBの両方を用いる」。加えて、冠詞「a」および「an」は、本出願および添付の図面で使用される場合、一般的に、単数形を指すことが別段明記されていない限り、または、コンテキストから明らかでない限り、「1または複数の」を意味すると解釈されるべきである。
本明細書に記述される技術は、CDMA、TDMA、FDMA、OFDMA、SC−FDMA、および別のシステムのような様々な無線通信システムに対して使用されうる。「システム」および「ネットワーク」という用語は、交換可能に使用されることが多い。CDMAシステムは、ユニバーサル地上波無線アクセス(UTRA)、cdma2000などの無線テクノロジを実現しうる。UTRAは、広域CDMA(W−CDMA)およびCDMAの他の変形を含む。さらに、cdma2000は、IS−2000、IS−95、および、IS−856規格をカバーする。TDMAシステムは、GSM(登録商標)のような無線テクノロジを実現しうる。OFDMAシステムは、次世代UTRA(E−UTRA)、ウルトラモバイルブロードバンド(UMB)、IEEE 802.11(Wi−Fi(登録商標))、IEEE 802.16(WiMAX(登録商標))、IEEE 802.20、フラッシュOFDM(登録商標)のような無線テクノロジを実現しうる。UTRAおよびE−UTRAは、万国移動通信システム(UMTS)の一部である。3GPPロングタームエボリューション(LTE)は、ダウンリンクではOFDMAを、アップリンクではSC−FDMAを用いるE−UTRAを使用するUMTSのリリースである。UTRA、E−UTRA、UMTS、LTE、GSMは、「第3世代パートナーシッププロジェクト(3GPP)」という名称の団体からの文書に記述されている。加えて、cdma2000およびUMBは、「第3世代パートナーシッププロジェクト2(3GPP2)」という名称の団体からの文書に記述されている。さらに、そのような無線通信システムは、追加として、対ではない無認可のスペクトル、802.xx無線LAN、ブルートゥース(登録商標)、および、他の短距離または長距離の無線通信技術を使用することが多いピア・ツー・ピア(例えば、モバイル・ツー・モバイル)アドホックネットワークシステムを含みうる。
多数のデバイス、コンポーネント、モジュールなどを含みうるシステムという観点から、様々な態様または特徴が提示されるであろう。様々なシステムが、さらなるデバイス、コンポーネント、モジュール等を含みうること、および/または、図に関して論述されるデバイス、コンポーネント、モジュールの全てを含むわけではないことは理解および認識されるべきである。さらに、これらのアプローチの組み合わせも使用されうる。
図1は、(i)ユーザ機器(UE)のために無線通信をサポートする無線アクセスネットワーク(RAN)120と、(ii)通信サービスをサポートするために様々な機能を行うネットワークエンティティとを含む無線通信システム100を示す。RAN 120は、任意の数のノードBと、任意の数の無線ネットワークコントローラ(RNC)とを含みうる。簡潔さのために、図1には、1つのノードB 130と1つのRNC 132だけが示される。ノードBは、一般的に、UEと通信する固定局であり、発展型ノードB,基地局、アクセスポイントなどとも呼ばれうる。RNC 132は、ノードBのセットに結合され、その制御下で、ノードBに対して協調および制御を提供する。
インターネットプロトコル(IP)ゲートウェイ140は、UEのためのデータサービスをサポートし、サービングGPRSサポートノードまたはゲートウェイGPRSサポートノード(SGSNまたはGGSN)、アクセスゲートウェイ(AGW)、パケットデータサービングノード(PDSN)とも呼ばれうる。IPゲートウェイ140は、UEのためのデータセッションの確立、管理、終了に対して責任を有し、さらに、動的IPアドレスをUEに割り当てうる。IPゲートウェイ140は、コアネットワーク、インターネットなどを備える1または複数のデータネットワーク150に結合する。IPゲートウェイ140は、1または複数のデータネットワーク150を介して、サーバ160のような様々なエンティティと通信することができる。無線システム100は、図1には示されていない別のネットワークエンティティを含みうる。
UE 110は、RAN 120と通信して、サーバ160のような別のエンティティとデータを交換しうる。UE 110は、固定またはモバイルであり、モバイル局、端末、加入者ユニット、局などとも呼ばれうる。UE 110は、セルラ電話、携帯情報端末(PDA)、無線通信デバイス、無線モデム、ハンドヘルドデバイス、ラップトップコンピュータなどでありうる。UE 110は、ダウンリンクおよびアップリンクのようなエアインターフェースを介してノードB 120と通信しうる。ダウンリンク(または、順方向リンク)は、ノードBからUEへの通信リンクを指し、逆方向リンク(またはアップリンク)は、UEからノードBへの通信リンクを指す。本明細書に記述される技術は、ダウンリンク並びにアップリンクでのデータ送信のために使用されうる。
いくつかの態様において、UE 110は、有線接続(図1に示されるような)または無線接続を介して、端末装置(TE)デバイス112に結合されうる。UE 110は、TEデバイス112に対して無線データサービスを提供またはサポートするために使用されうる。TEデバイス112は、ラップトップコンピュータ、PDA、または、ある別の計算デバイスでありうる。
図2は、図1のUE 110およびノードB 130の例示的な設計のブロック図を示す。この例示的な設計において、UE 110は、データプロセッサ210、外部メモリ260、無線送信機(TMTR)252、および、無線受信機(RCVR)254を含む。データプロセッサ210は、コントローラ/プロセッサ220、送信プロセッサ230、受信プロセッサ240、および、内部メモリ250を含む。バス212は、プロセッサ220、230、240とメモリ250との間のデータ転送を容易にする。データプロセッサ210は、特定用途向け集積回路(ASIC)で実現され、メモリ260は、ASICの外側にありうる。
アップリンクでのデータ送信について、送信プロセッサ230は、プロトコルのセットに従ってトラフィックデータを処理し、出力データを提供する。無線送信機252は、この出力データを調整(例えば、アナログ変換、フィルタリング、増幅、および周波数アップコンバート)して、ノードB 230に送信されうるアップリンク信号を生成する。ダウンリンクでのデータ受信について、無線受信機254は、ノードB 230から受信されたダウンリンク信号を調整(例えば、フィルタリング、増幅、周波数ダウンコンバート、デジタル化)して、受信データを提供する。受信プロセッサ240は、プロトコルのセットに従って受信データを処理し、トラフィックデータを提供する。コントローラ/プロセッサ220は、UE 110の様々なユニットの動作を指示しうる。内部メモリ250は、プロセッサ220、230、240のためのプログラムコードとデータを記憶しうる。外部メモリ260は、UE 110のためのデータおよびプログラムコード用の大容量記憶装置を提供しうる。
図2は、さらに、ノードB130の例示的な設計のブロック図を示す。無線送信機/受信機264は、UE 110並びに別のUEとの無線通信をサポートしうる。コントローラ/プロセッサ270は、ダウンリンクでのデータ送信、および、アップリンクでのデータ受信のためにデータを処理しうる。コントローラ/プロセッサ270は、さらに、UEとの通信のために、様々な機能を実行しうる。メモリ272は、ノードB 130のためにデータおよびプログラムコードを記憶しうる。通信(Comm)ユニット274は、別のネットワークエンティティとの通信をサポートしうる。
図3は、UE 110の一部でありうる、受信機300の例示的な設計を描写する。受信機300は、データの大容量記憶装置を提供する外部メモリ310、受信データを処理する受信プロセッサ320、および、処理データを記憶する内部メモリ340を含む。受信プロセッサ320および内部メモリ340は、ASIC 312上で実現されうる。
受信プロセッサ320において、RX PHYプロセッサ322は、PHYフレームを送信機(例えば、ノードB 130)から受信し、受信されたこのPHYフレームを、RANによって使用される無線テクノロジ(例えば、CDMA2000 1Xまたは1xEV−DO、またはLTE)に従って処理し、受信フレームを提供しうる。データプロセッサ324は、さらに、この受信フレームを処理(例えば、復号、解読、フレーム除去(de-frame))する。
データ転送は、典型的に、3つのタスクを必要とする。第1に、データは、外部メモリ310のような、あるロケーションから移入(move in)される。次に、このデータは、ハードウェアによって処理され、元の場所に移出(move out)されうる。データムーバ(Data mover)336は、あるロケーションから別のロケーションにデータを移入し、ハードウェアアクセラレータ334による処理の後にそのデータを元の場所に移出ように構成されうる。プロセッサ/コントローラ330は、ハードウェアアクセラレータ334およびデータムーバ336の動作を制御するように構成されうる。
図4は、ソフトウェアおよびハードウェアで生じる典型的なデータ処理動作を描写するデータフロー図である。図4に描写されるように、ソフトウェアコンポーネント402は、第1のハードウェアコンポーネント404および第2のハードウェアコンポーネント406のような1または複数のハードウェアコンポーネントとインターフェースしうる。ステップ408に描写されるように、ソフトウェアコンポーネント402は、第1のハードウェアコンポーネント404に、第1の命令のセットを出しうる。この命令は、1または複数のタスクを実行する命令を含みうる。次に、第1のハードウェアコンポーネント404は、410に描写されるように、最初のセットの命令に応答する。次に、第2のハードウェアコンポーネント406で処理を開始するために、ソフトウェアコンポーネント402は、412に描写されるように、第2のハードウェアコンポーネント406に命令のセットを送り、414に描写されるような応答を待つ。タスクが実行される必要がある度に、ソフトウェア402は、416、418、420、422に描写されるように、命令または命令のセットを指定のハードウェアコンポーネントに出し、応答を待たなければならない。
図4に描写される方法において、全てのハードウェアのタスクまたはタスクのセットの後に、ソフトウェア割込(software interrupt)が使用されなければならない。すなわち、提供された命令の完了後、ハードウェアコンポーネントは、ソフトウェアに割込を送らなければならない。これらの割込は、プログラムコンテキストが機能停止され、且つ、割込の実行およびハードウェア処理の再開のために新たに構築されなければならないため、大きな損失をもたらしうる。さらに、割込は、ロックされている場合が多く、それにより、割込のロックが解除されるまで、潜在的な期間が生じる。
図5は、開示される様々な態様を示す簡略化されたブロック図である。プロセッサ502は、第1のハードウェアコンポーネント504および第2のハードウェアコンポーネント506のような様々なハードウェアコンポーネントの動作を制御するように構成されうる。図4と同じように、第1のハードウェアコンポーネント504および第2のハードウェアコンポーネント506の各々は、例えば、データムーバまたはハードウェアアクセラレータのような専用ハードウェアブロックでありうる。プロセッサ502は、ハードウェアコンポーネントに対して、様々なタスクを実行するように命令するソフトウェアを格納しうる。
第1のハードウェアコンポーネント504および第2のハードウェアコンポーネント506は、互いに通信的に結合されうる。このように、これらのコンポーネントは、プロセッサ502に格納されたソフトウェアを中断させることなく、互いに情報を提供しうる。例えば、第1のハードウェアコンポーネント504および第2のハードウェアコンポーネント506は、プロセッサ502によって1または複数のタスクを行うように事前にプログラムされうる。このプロセスは、図6においてさらに詳細に描写される。
図6に描写されるように、プロセッサ502は、第1のハードウェアコンポーネント504および第2のハードウェアコンポーネント506とインターフェースしうる。いくつかの態様に従って、第1のハードウェアコンポーネント504は、外部メモリなどの様々なソースからローカルバッファへとデータを移動することに適応しているもの(例えば、データムーバ)でありうる。第2のハードウェアコンポーネント506は、データアクセラレータのようなカスタムハードウェアブロックでありうる。
610に描写されるように、プロセッサ502は、複数のタスクを実行するために、第1のコマンドのセットを第1のハードウェアコンポーネント504に出しうる。例えば、プロセッサ502は、ハードウェアコンポーネント504に、外部の記憶ロケーションからデータブロックを移入するように命令する。次に、プロセッサ502は、612に描写されるように、複数のタスクを行うように第2のハードウェアコンポーネント506をプログラムしうる。例えば、プロセッサ502は、第2のハードウェアコンポーネント506に、第1のハードウェアコンポーネント504によって移入されたデータのブロックに対して動作するように命令しうる。第1のハードウェアコンポーネントおよび第2のコンポーネントは、指定のタスクを実行するように事前にプログラムされるが、614で描写されるように、プロセッサ502がトリガメッセージを送信するまで、動作は開始しない。
トリガメッセージを受信すると、第1のハードウェアコンポーネント504は、事前にプログラムされたタスクの実行を開始しうる。いくつかの態様に従って、最後の命令は、616に描写されるように、トリガメッセージを第2のハードウェアコンポーネント504に送ように第1のハードウェアコンポーネントに指示しうる。このトリガは、例えば、ハードウェア割込(hardware interrupt)でありうる。ステップ618、620、622に描写されるように、各ハードウェアコンポーネントは、それ自体の処理の完了に応じて、命令を実行するようにもう一方のコンポーネントをトリガする。この処理の間、ソフトウェア割込は必要ではない。最後の命令が処理されると、この最後の命令を処理したハードウェアコンポーネント(ここでは、第1のハードウェアコンポーネント)は、624に描写されるように、プロセッサ502に割込を送りうる。図6に描写されるように、ソフトウェア割込の数は、著しく減少しうる。いくつかの態様においては、単一のソフトウェア割込しか要求されない。
図7は、開示される様々な態様に従って、より詳細にデータ処理動作を描写するフローチャートである。702に描写されるように、ソフトウェアコンポーネントは、2つ以上のハードウェアコンポーネントをプログラムしうる。ハードウェアコンポーネントをプログラムすることは、各ハードウェアコンポーネントによって実行されるべき一連の命令を提供することを含みうる。この一連の命令は、ハードウェアコンポーネントと関連付けられたタスク待ち行列に格納されうる。いくつかの態様に従って、1より多くのハードウェアコンポーネントは、単一のタスク待ち行列を共有しうる。ここにおいて、各ハードウェアコンポーネントに対する命令は、共にインターリーブされうる。
例示的な態様に従って、2つ以上のハードウェアコンポーネントは、データムーバおよびハードウェアアクセラレータを含みうる。このデータムーバおよびハードウェアアクセラレータの代わりに、あるいは、それらに加えて、別のハードウェアコンポーネントも使用されうる。図7に描写される残りのプロセスは、データムーバおよびハードウェアアクセラレータに関して描写されるが、これは単なる例であることに注意されたい。
上に描写されたように、各ハードウェアコンポーネントは、タスク待ち行列と関連付けられうる。このように、データムーバおよびハードウェアアクセラレータは、各々、それらに関連付けられたタスク待ち行列を有する。このタスク待ち行列は、ソフトウェアによってあらかじめ構成されうる。ハードウェアアクセラレータと関連付けられたタスク待ち行列は、ソフトウェアによって制御される書込ポインタによってゲートされうる。同様にハードウェアコンポーネントと関連付けられた読取ポインタは、ハードウェアによって制御されうる。
プログラムされたタスクの実行が望まれる場合、ソフトウェアコンポーネントは、704で描写されるように、トリガ信号をデータムーバに送りうる。トリガ信号が受信されると、データムーバは、706に描写されるように、その第1のタスクを実行しうる。例えば、データムーバは、第1のデータブロックを外部メモリロケーションから読み取り、そのデータを内部メモリロケーションに移動するように命令されうる。データムーバは、さらに、ハードウェアアクセラレータと関連付けられた書込ポインタレジスタに書き込むように命令され、それによって、その割り当てられた命令の実行を開始するようにハードウェアアクセラレータをトリガしうる。データムーバは、さらに、イベントが受信されるまで処理を停止するように命令されうる。
データムーバからトリガを受信すると、ハードウェアアクセラレータは、708に描写されるように、その命令の実行を開始しうる。これは、例えば、様々なタイプの動作を、データムーバによってロードされるデータに実行することを含みうる。待ち行列に入れられたタスクが完了すると、ハードウェアアクセラレータは、710に描写されるように、処理を継続するようにデータムーバをトリガするハードウェア割込を出しうる。トリガを受信すると、データムーバは、712で描写されるように、それが、完了させるべきタスクをさらに有するか否かを判定しうる。完了させるべきタスクをさらに有する場合、処理は、ステップ706に戻る。データムーバが実行すべきタスクをさらに有さない場合、それは、714に描写されるように、ソフトウェアに割込を送りうる。データムーバおよびハードウェアアクセラレータが、ハードウェア割込を使用して互いをトリガできるようにすることで、割込待ち時間が短縮され、コンテキスト切替の数が減少しうる。さらに、データムーバおよびハードウェアアクセラレータがより効率的に使用されるため、全体の待ち時間が減りうる。
上に記述されたように、ハードウェアアクセラレータおよびデータムーバのようなハードウェアコンポーネントは、ソフトウェアによって、複数のタスクを実行するように事前にプログラムされうる。特定のハードウェアアクセラレータの場合、アクセラレータからの出力の長さはランダムでありうる。しかしながら、データムーバも事前にプログラムされるため、データ移出命令は、典型的に、ハードウェアアクセラレータからの出力が最悪の場合に備えてプログラムされうる。ほとんどの時間、出力の長さが事前にプログラムされた長さよりも短くなりうるため、このような構成は、帯域幅を不必要に浪費することにつながりうる。
本明細書の装置および方法のいくつかの態様に従って、ハードウェアアクセラレータの最も一般的な出力のデータの長さを収容する閾値が定義されうる。いくつかの態様において、ハードウェアアクセラレータからの全出力のうちの大部分が閾値を超えないように、閾値が定義されることが望まれうる。しかしながら、この閾値は、あらゆる別の望まれるパラメータに従って構成されうる。例えば、閾値は、アクセラレータの全出力の少なくとも既定の割合が閾値を超えないように、あるいは、アクセラレータの出力のうちの少なくとも一部が閾値を超えないように構成されうる。図8は、より詳細に閾値の処理を示すフローチャートである。
810に描写されるように、ハードウェアアクセラレータのようなハードウェアコンポーネントは事前にプログラムされた命令に従って、データを受信および処理する。この処理が完了すると、ハードウェアアクセラレータは、812に描写されるように、データムーバのような第2のハードウェアコンポーネントによって出力されるべき命令の結果が、既定の閾値を超えたか否かを判定する。より具体的には、ハードウェアアクセラレータは、ソフトウェアによって事前に構成された閾値決定モジュールを含みうる。閾値は、ハードウェアアクセラレータによって処理されるデータのサイズに対して最大値を設定しうる。
814に描写されるように、閾値を超えた場合、ハードウェアアクセラレータは、移出タスクのプロビジョニングが不十分であった(under provisioned)ことを示す割込を生成しうる。すなわち、この割込は、データムーバにおいて事前にプログラムされていたデータ移出のサイズが、ハードウェアアクセラレータによって処理されたばかりのデータを収容するのに十分な大きさでないことを示す。割込を受信すると、ソフトウェアは、816に描写されるように、プログラムされたデータ移出のサイズの制限を超えた超過データを読み取りうる。ハードウェアアクセラレータは、この割込の間、機能が停止され、この割込が解決されるとソフトウェアによって「go」が与えられうる。処理は次に続く。例えば、818で描写されるように、ハードウェアアクセラレータまたはソフトウェアコンポーネントは、データムーバにトリガを送り、データムーバは、事前にプログラムされた命令に従ってデータを移出する。ステップ812において、閾値を超えていないと判定された場合も、処理は、データムーバが、プログラムされた通りに、データを主メモリに移出するステップ818へと続く。
いくつかの態様に従って、図8に関して記述される閾値は、適応的に調節されうる。例えば、プロビジョニングが不十分なデータ移出命令からもたらされる割込の周波数が所与の時間期間に亘って大きい場合、ソフトウェアは、閾値のサイズを増やしうる。同様に、所与の時間期間に亘って多数の割込が受信されない場合、閾値のサイズは減らされる。このように、ソフトウェアは、プロビジョニングされていないデータ移出命令の結果として受信される全ての割込を追跡するタイマおよびカウンタで構成されうる。不十分なプロビジョニングを説明するメカニズムを提供する間、移出されるデータ量を制御することで、電力の消費と、システムバス帯域幅を減らすことができる。加えて、割込の数がより少なくなると、ソフトウェア複雑性は減少しうる。さらに、例外の状況をソフトウェアに渡して対処させることにより、ハードウェアはシンプルに保たれる。閾値を適応的に調整することは、低い割り込み率を維持することと、必要のないデータの移動を回避することとの間で良いトレードオフとなるように支援する。
いくつかの態様に従って、典型的にソフトウェアで行われる動作は、ソフトウェア処理および待ち時間を減らすため、並びに、バス帯域幅の使用を減らすために、ハードウェアに移動されうる。例えば、ハードウェアアクセラレータは、データフレームヘッダを処理する論理で構成されうる。典型的に、ハードウェアは単にデータを解読し、このデータを、さらに処理するために、ソフトウェアに転送する。次に、ソフトウェアは、データを処理する命令と共に、このデータをハードウェアに戻す。これは、ソフトウェア処理、待ち時間、バス帯域幅を減らしうる。
いくつかの例示的な態様において、例えば、ハードウェアアクセラレータは、データフレームヘッダを解釈し、このヘッダを、既定の複数のテンプレートと比較し、このヘッダに基づいて次の処理ステップを決定する論理で構成されうる。ソフトウェアインタラクションは、ヘッダの一致が見つからなかった場合、あるいは、テンプレートの再構成が必要な場合にのみ必要とされる。
図9は、テンプレート処理が実施されうる環境の例である。図9に描写されるように、制御プロセッサ920によって制御されるハードウェアアクセラレータ922は、入力データを受信し、フィルタリングモジュール922を介して、この入力データを処理しうる。フィルタリングモジュール922は、その出力を、プロセッサ914、メモリ916、または、インターフェース918−1〜918―Nのうちの1または複数に提供しうる。メモリ916は、内部メモリまたは外部メモリありうる。インターフェース918−1〜918−Nは、例えば、ラップトップ、PDA、または、他のあらゆる外部電子デバイスのような外部デバイスへの接続を提供しうる。例えば、インターフェース918−1〜918−Nは、USBポート、ブルートゥース、SDIO、SDCC、あるいは、別の有線インターフェースまたは無線インターフェースを含みうる。
フィルタリングモジュール922は、出力データがどこにルーティングされるべきかに関してのルーティング決定を行うために使用されうる複数の既定のテンプレートを含みうる。例えば、暗号データは、ハードウェアアクセラレータ912によって受信され、解読されうる。フィルタリングモジュール922においてプログラムされるテンプレートに基づいて、解読されたデータは、インターフェース918−1〜918−Nを介してプロセッサ914、メモリ916、または、外部デバイスに転送されうる。いくつかの態様に従って、プロセッサ914は、ハードウェアアクセラレータ912が処理しにくい、より複雑な動作のためのバックアップフィルタとして使用されうる。
いくつかの態様に従って、各トラフィックテンプレートは、1または複数のパラメータと、各パラメータに対する特定の値を含みうる。各パラメータは、IP、TCP、UDP、あるいは、いくつかの別のプロトコルのヘッダの特定のフィールドに対応しうる。例えば、IPパラメータは、ソースアドレス、宛先アドレス、アドレスレンジ、およびプロトコルを含みうる。TCPまたはUDPパラメータは、ソースポート、宛先ポート、および、ポートレンジを含みうる。トラフィックテンプレートは、ヘッダにおける各パラメータのロケーションを特定しうる。このように、ハードウェアアクセラレータは、使用中のプロトコルについてのいずれの実知識も有する必要はない。むしろ、このハードウェアは、テンプレートパラメータとヘッダの一致を実行する。
例えば、トラフィックテンプレートは、宛先ポートxへのTCPフレームを検出するように定義され、IPv4パケットで送信されうる。このテンプレートは、次ように設定されうる3つのパラメータを含みうる:バージョン=IPv4、プロトコル=TCP、宛先ポート=x。一般的に、任意のプロトコルヘッダ内の任意のフィールドが、トラフィックテンプレートパラメータとして使用されうる。任意の数のテンプレートが定義され、各テンプレートは、任意のパラメータのセットと関連付けられうる。異なるテンプレートは、異なるアプリケーション、ソケットに対して定義され、異なるパラメータのセットで定義されうる。
各テンプレートは、さらに、一致があった場合に行う動作と、一致がなかった場合に行う動作に関連付けられうる。データフレームを受信すると、受信されたフレームの値は、テンプレートの特定の値に対して比較される。受信された値が特定の値と一致すると、一致が宣言され、そうでなければ、一致は宣言されない。いずれの一致も定義されなかった場合、ハードウェアはソフトウェア割込を出し、次に、ソフトウェアがフレームを処理する。
本明細書記述されるように、データ処理は、典型的に、第1の位置からのデータの移入、このデータに対しての動作、データの移出を含む。典型的に、単一の大きなメモリプール(memory pool)は、低コスト、高待ち時間メモリ(high latency memory)で定義される。データは、この高待ち時間メモリプールから移入され、それに対して動作され、メモリプールに戻されうる。しかしながら、最近アクセスされたデータは、再利用される場合が多い。このように、全てのアクセス後に、データを高待ち時間メモリプールに戻すことは、システムバス帯域幅を不必要に増加させる。本明細書の装置および方法のいくつかの態様に従って、複数のメモリプールが、物理メモリで定義される。メモリ割当は、利用可能な最良のメモリプールに基づくか、あるいは、データがどれだけの頻度でアクセスされる可能性が高いかに依存しうる。
図10は、いくつかの態様に従って、複数のメモリプールを実現するシステム1000の例である。システム1000は、低待ち時間メモリ1012(low latency memory)、プロセッサ1014、データムーバ1016、および、ハードウェアアクセラレータ1018を備えるASIC 910を含みうる。高待ち時間メモリ1020も提供されうる。低待ち時間メモリ912は内部メモリとして描写され(depicted)、高待ち時間メモリ1020は、外部メモリとして描写されているが、この構成は単なる例である。メモリのうちのいずれか一方あるいは両方が、内部メモリまたは外部メモリでありうる。プロセッサ1004は、高待ち時間メモリ1020および低待ち時間メモリ1012へのアクセスを制御するメモリコントローラ1022を含みうる。大部分の動作が、低待ち時間メモリ1012を使用する場合、データは、より効率的に処理されうる。このように、メモリコントローラ1022は、高待ち時間メモリ1020へのアクセスの数を制限するように構成されうる。
通常の動作の場合、データムーバ1020は、例えば、高待ち時間メモリ1020と低待ち時間メモリ912との間でデータを移入および移出するように構成されうる。いくつかの例示的な態様に従って、ハードウェアアクセラレータ1018は、低待ち時間メモリ1012からのデータに対して直接動作するように構成されうる。例えば、いくつかの態様において、データは、空間が利用可能な限り、低待ち時間メモリ1012で維持されうる。別の態様において、データは、サービス品質要件、通信チャネルプロパティ、および/または、別の要因のような特定のデータ送信特性に基づいて低待ち時間メモリ1012に記憶され、維持されうる。
小さくて高速なプールと、大きくてより遅いプールが定義可能であることから、複数のメモリプールを提供することは、ハードウェアコストを削減しうる。さらに、システムバス帯域幅および電力が減らされうる。
いくつかの態様に従って、低待ち時間メモリ1012に記憶されるデータは、ハードウェアとソフトウェアの両方からアクセスされうる。ペイロードは、ハードウェアアクセラレータ1018によって処理され、低待ち時間アクセスを確実にしうる。低待ち時間メモリ1012は、ハードウェアアクセラレータ1018の近くに設置されうる。このように、データ転送は、システムバスをまたぐ必要はなく、電力とシステムバス帯域幅を節約しうる。
データを処理する際、データは、各層での実現(例えば、ヘッダを除去し、複数のフローからのデータを多重化し、分割/再構築すること)を簡略化するために、データスタックを通過する間に複数回複写されることが多い。本明細書の装置および方法のいくつかの態様に従って、データを同一のロケーションに残し、異なる層に同一のデータに対する処理を行わせることによって、複写を繰り返すことは回避されうる。各データ処理命令は、ハードウェアによって実行されようと、ソフトウェアによって実行されようと、ローカルハードウェアバッファのような同一のロケーションを示しうる。例えば、UMTS解読が行われた後、解読されたデータは、ローカルハードウェアバッファのようなローカルメモリに複写されうる。プロトコルヘッダを評価することによって、ソフトウェアがペイロードを連結した後、ソフトウェアは、TCPチェックサム計算またはPPPフレーミングのいずれかを行うようにハードウェアアクセラレータに命令する。データは、そのような処理の間、外部メモリロケーションから移出されたり、外部メモリロケーションに移入されたりする必要はない。
データ送信について、データフレームは、典型的に、使用中のプロトコルに依存して、より小さいユニットに分割される。このように、関連ペイロードは、複数の送信に分割されることが多い。典型的に、各ユニットに対するメモリブロックが割り当てられ、ペイロードを、それがより高い層に送られる際に、より大きいデータユニットへと連結するために、これらのユニットの連結リストが形成されうる。
図11は、受信パケットデータユニットの典型的な記憶割当を描写する。図11に描写されるように、入力データフレーム1100は、各々が、ヘッダ(H1、H2、H3)およびペイロード(P1、P2、P3)を備える複数のプロトコルデータユニット(PDU)を含みうる。典型的に、データフレームは、複数のセグメントに分割され、各セグメントは、個別データサービスメモリ(DSM)ユニットに記憶される。図11で示されるように、PDU1(H1+P1)は、第1のDSMユニット1104に記憶され、PDU2(H2+P2)は、第2のDSMユニット1106に記憶され、PDU3(H3+P3)は、第3のDSMユニット1108に記憶される。
この方法でデータを記憶することは、様々な理由で非効率的である。例えば、各DSMユニットは、オーバヘッドを増やす、それ自体のヘッダHを含む。加えて、DSMプール内の各DSMユニットは、均等の大きさに分類される。このように、PDUが予め構成されたDSMユニットサイズよりも小さい場合、空間は無駄になる。1104および1108で描写されるように、DSMユニットを満たすために、パディングデータPがPDUの後に加えられる。さらに、セグメント化されたPDUを後で連結させるために、各PDUがどこに記憶されているか、および、それが他とどのように関係するかを示す連結リストが保持されなければならない。
本発明の装置および方法のいくつかの例示的な態様に従って、受信データは、ヘッダを除去して、より高い層に対する連続ペイロードを直接連結することにより、異なる送信からのチャネルごとに、連続メモリのより大きなブロックへと集められうる。これは、アプリケーションデータの一貫性をもたらし、連結によるさらなるメモリ割当の必要性を減らしうる。さらに、パッディングオーバヘッド、メモリ割当処理、メモリオーバヘッドの減少により、メモリが減らされうる。
上述されたように、ハードウェアが、暗号データフレームを受信すると、フレームは解読され、次に、さらなる処理のためにハードウェアに転送される。いくつかの例示的な態様に従って、ハードウェアアクセラレータのようなハードウェアコンポーネントは、さらに、フレームをソフトウェアに転送することなく、関連ペイロードを連結するように構成されうる。
図12は、いくつかの態様に従って、データ処理および記憶装置を示す簡略化されたブロック図である。図12に描写されるように、入力データフレーム1201は、各々がヘッダおよびペイロードを備える複数のプロトコルデータユニットを含みうる。分割ユニット1202は、入力データフレーム1201を処理するように構成されうる。処理は、例えば、ヘッダとペイロードを分離することを含みうる。ヘッダ(H1、H2、H3)は、関連ペイロードへのポインタと共に、メモリ1203に記憶されうる。
ハードウェア連結論理1204は、次に、ペイロードを結合し、それらを単一のDSMに記憶しうる。分割ユニット1202およびハードウェア連結論理1204は、ソフトウェア論理1206によってプログラムおよび/または制御されうる。例えば、ソフトウェア論理1206は、ヘッダを取り除し、ポインタ情報を生成するように、分割ユニット1202をプログラムしうる。加えて、ソフトウェア論理1206は、特定のペイロードまたはヘッダを取り出すように連結論理1204を指示する。
いくつかの態様に従って、複数の送信からのデータは、単一のDSMで結合されうる。データは、一度DSMに記憶されると、たとえこのDSMが一杯でなかったとしても、別の層に送られうる。加えて、データは、DMSユニットの末尾に加えられうる。
典型的に、ヘッダおよびペイロードは、データの受信時には互いに離れていない。むしろ、このヘッダとペイロードは、典型的に、共に記憶される。しかしながら、パケットをどのように処理するかについての大部分の決定は、パケットヘッダにのみ基づきうる。本明細書の装置および方法のいくつかの態様に従って、ヘッダのみが、層から層へと移動されうる。ゆえに、ペイロードは、処理に必要な場合のみ移動され、それによって、ペイロードデータの一貫性およびキャッシュの効率性を改善し、バスの利用を減らしうる。
典型的な無線デバイスにおいて、主プロセッサは、全てのモデム関連機能性に対処する。図13は、典型的な構成を描写するブロック図である。主プロセッサ1304は、通信的に、複数のバス1306を介してハードウェア1308と結合される。メモリ1302は、ハードウェア1308によって動作されるデータを記憶するために提供される。動作中、主プロセッサ1304が、ハードウェア1308に命令を出すたびに、この命令は、複数のバス1306を横切らなければならない。さらに、ハードウェア1308は、各命令が完了した後に、ソフトウェア割込を、主プロセッサ1304に出さなければならない。バスを横切ること、および、ソフトウェア割込を出すことにより、実質的な処理待ち時間が加えられる。
様々な例示的な態様に従って、ハードウェアの近くに配置されており、これによって待ち時間を減らすミニプロセッサが提供されうる。図14は、そのような構成を描写するブロック図である。主プロセッサ1404は、通信的に、複数のバス1406を介してハードウェア1408に結合される。メモリ1402は、ハードウェア1408によって処理されるデータを記憶するために提供される。
ミニプロセッサ1410は、ハードウェア1408の近くに提供される。ミニプロセッサ1410は、主プロセッサ1404と同じメモリ1402へのアクセスを有する、柔軟にプログラムされたプロセッサである。ミニプロセッサ1410は、ハードウェア1408と直接インタラクトするようにプログラムされうる。ミニプロセッサ1410は、ハードウェアに指示して、ヘッダ抽出、暗号化、解読、データ移動、連続記憶、IPフィルタリング、ヘッダ挿入、PPPフレーミング、および/または、別のタスクのようなタスクを行うようにプログラムされうる。
いくつかの態様に従って、無線デバイスにおいて新しい情報が受信されると、主プロセッサ1404は、データの処理を開始し、ハードウェア1408による処理の後に、その結果をメモリ1402に記憶するように、ミニプロセッサ1410を指示しうる。このように、ハードウェアは、もはや、各タスクの後に主プロセッサ1414に割り込む必要がない。加えて、ミニプロセッサ1410がプログラム可能であるため、処理要件に変更があった場合、容易に再プログラムされうる。例えば、エアインターフェースに変更があった場合、または、新しいプロトコルリリースが利用可能な場合、ミニプロセッサ1410は、この変更を実現するために再プログラムされうる。
図14に描写される構成に従って、単なるソフトウェア実現と比べて、待ち時間が減らされる。加えて、割込、メモリアクセス、およびバス待ち時間が減少しうる。さらに、ミニプロセッサが、単なるソフトウェアアプリケーションよりもハードウェアメモリの近くで実現されうるため、電力消費は低くされうる。
いくつかの態様に従って、主プロセッサとミニプロセッサの両方は、1または複数の専用ハードウェアブロックへのアクセスを有しうる。これは、図15に描写される。主プロセッサ1502およびミニプロセッサ1504は、各々、通信的に、複数の専用ハードウェアブロックに結合される。複数の専用ブロックは、第1のハードウェアブロック1506、第2のハードウェアブロック1508、第3のハードウェアブロック1510を含む。ハードウェアブロックは、例えば、ハードウェアアクセラレータ、データムーバ、暗号化エンジン、解読エンジン、および/または、あらゆる別の専用ハードウェアブロックを含みうる。
主プロセッサ1502およびミニプロセッサ1504は、各々、同時に、ハードウェアブロック1504、1506、1508のうちの異なる1つにアクセスしうる。これは、並列処理を可能にする。例えば、主プロセッサ1502は、解読専用でありうる第1のハードウェアブロック1506にアクセスするように構成され、ミニプロセッサ1504は、同時に、暗号化専用でありうる第2のハードウェアブロック1508にアクセスするように構成されうる。このように、アップリンクおよびダウンリンク処理は、同時に発生しうる。
ミニプロセッサ(図15に描写されたミニプロセッサ1504)は、複雑なタスクを処理することができない可能性がある。例えば、パケットの再送信を処理する場合、シーケンス番号がいつロールオーバ(rollover)するかを決定する際に複雑な論理が存在する。いくつかの態様に従って、主プロセッサは、ミニプロセッサへのバックアップとして機能し、ミニプロセッサが適切に処理できないこれらの複雑なタスクを処理するように構成されうる。図16は、このような複雑な論理を処理するためのプロセスを描写するフローチャートである。
1602で描写されるように、プロセスは、ミニプロセッサが、処理されるべきデータを受信すると開始する。いくつかの態様に従って、ミニプロセッサは、既定の処理方法を使用して特定のタイプのタスクを常に処理するようにプログラムされうる。このように、1604で描写されるように、ミニプロセッサは、ハードウェアに命令し、第1の処理方法を使用してデータを処理するように構成されうる。例えば、シーケンス番号がロールオーバするべきか否かを決定する場合、ミニプロセッサは、シーケンス番号がロールオーバしないことを常に想定するように構成されうる。
1606で描写されるように、主プロセッサは、ハードウェアによって処理されるデータを受信する。主プロセッサは、さらに、データがどのように処理されたかについての表示を受信しうる。1608に描写されるように、主プロセッサは、データが正確に処理されたか否かを判定する。正確に処理された場合、主プロセッサは、1610に描写されるように、単に、このデータを、メモリなどの宛先に転送する。しかしながら、主プロセッサが、このデータが、正確に処理されなかったことを検出した場合、主プロセッサは、1612に描写されるように、ハードウェアによって行われる動作を逆転させ、データを正確に処理するようにハードウェアを再プログラムすることができる。
典型的なデータ移動動作において、プロセッサは、移動されるべきデータの各チャックに対して複写タスクを行うようにデータムーバをプログラムする。例示的な様々な態様に従って、コピーエンジンが含まれ、ハードウェアの近くに配置される。図17は、コピーエンジンを組み込むシステム1700のブロック図である。システム1700は、データムーバ1702、主メモリ1704、コピーエンジン1710、コピーエンジンメモリ1706、ハードウェア1708を備える。コピーエンジン1710は、複写および/またはデータ転送動作を容易にするために、ハードウェア1708に対して直接動作するようにプログラムされうる。コピーエンジン1710は、その専用メモリ1706と関連付けられ、それによって、主メモリ1704からのデータの記憶および検索と関連付けられた待ち時間が短縮されうる。データムーバ1702は、データをコピーエンジンメモリ1706から取り出し、それを主メモリ1704に記憶するようにプログラムされうる。
コピーエンジンを含むことによって、ビットレベルの粒度は、ビットレベル幅を有するプロトコルをサポートすることができる。加えて、単一のプログラミングタスクを使用して、等しく分散したソースデータを、等しく分散した宛先ロケーションに複写できるようにすることで、プログラミングオーバヘッドが減らされうる。さらに、コピーエンジンは、例えば、ヘッダ抽出および挿入、データ連結またはセグメント化、バイト/ワードアライメント、並びに、データ操作のための通常のデータムーバタスクなど、ソフトウェアによって使用されるあらゆるタイプの動作に使用されうる。
いくつかの態様に従って、コピーエンジン1710は、単一のタスクで、複数のPDUからのデータを複写するようにプログラムされうる。図18に描写されるように、データフレームは、各々がヘッダ(H1、H2、H3)およびペイロード(P1、P2、P3)を備える複数のPDUを含みうる。ヘッダおよびペイロードのサイズは、アプリオリに知られており、コピーエンジンは、これらのサイズを知るようにプログラムされうる。例えば、図18に描写されるように、ヘッダ1802などの全てのヘッダのサイズはXであり、ペイロード1804などの全てのペイロードのサイズはYでありうる。コピーエンジンは、ヘッダとペイロードのサイズについての知識に基づいて、単一のタスクで、N個のヘッダまたはN個のペイロードを複写するようにプログラムされうる。
本明細書に開示された実施形態と関連して記述される様々な実例となる論理、論理ブロック、モジュール、回路は、汎用のプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向けIC(ASIC)、書替え可能ゲートアレイ(FPGA)または他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいは、本明細書に記述された機能を実行するよう設計されたこれらの任意の組み合わせと一緒に実現または実行される。汎用プロセッサはマイクロプロセッサでありうるが、代替で、このプロセッサは従来のあらゆるプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンでありうる。プロセッサは、例えば、DSPとマクロプロセッサ、複数のマイクロプロセッサ、DSPコアに結合した1または複数のマイクロプロセッサ、その他の上記構成の組み合わせといった計算デバイスの組み合わせとしても実現されうる。加えて、少なくとも1つのプロセッサは、上述されたステップおよび/または動作のうちの1または複数を行うように動作可能な1または複数のモジュールを備えうる。
さらに、本明細書に開示された態様に関して示される方法またはアルゴリズムのステップおよび/または動作は、直接的にハードウェアに、プロセッサによって実行されるソフトウェアモジュールに、またはそれら二つの組み合わせに組み込まれうる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD−ROM、または本技術分野において周知の記憶媒体の他の形態に存在しうる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替において、記憶媒体はプロセッサに一体化される。さらに、いくつかの態様において、プロセッサと記憶媒体はASICに存在しうる。加えて、ASICはユーザ端末に存在しうる。代替において、プロセッサと記憶媒体は、個別コンポーネントとして、ユーザ端末に存在しうる。さらに、いくつかの態様において、方法またはアルゴリズムのステップおよび/または動作は、コンピュータプログラムプロダクトに組み込まれうる機械可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令のうちの1つ、または、任意の組み合わせ、または、セットとして存在しうる。
1または複数の態様において、記述された機能は、ハードウェア、ソフトウェア、ファームウェア、または、それらのあらゆる組み合わせに実現されうる。ソフトウェアに実現された場合、その機能はコンピュータ可読媒体上の1または複数の命令またはコードとして記憶または送信される。コンピュータ可読媒体は、コンピュータ記憶媒体と、ある箇所から別の箇所へのコンピュータプログラム移送を容易にする任意の媒体を含む通信媒体との両方を含む。記憶媒体はコンピュータによりアクセスされることができる任意の利用可能な媒体である。それに制限されない例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは、コンピュータによってアクセスされることができ、命令やデータ構造形で所望のプログラムコードを搬送または記憶するために使用される任意の別媒体を備えうる。また、任意の接続は適切にコンピュータ可読媒体と呼ばれうる。例えば、同軸ケーブル、光ファイバーケーブル、撚線対、デジタル加入者回線(DSL)、または赤外線、無線、マイクロ波などの無線テクノロジを使用してウェブサイト、サーバ、または他のリモートソースからソフトウェアが送信されると、この同軸ケーブル、光ファイバーケーブル、撚線対、DSL、または赤外線、無線、マイクロ派などの無線テクノロジは媒体の定義に含まれる。ディスク(disk)とディスク(disc)は、本明細書で使用される場合、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、ブルーレイ(登録商標)ディスクを含む。ディスク(disk)は通常磁気作用によってデータを再生し、ディスク(disc)はレーザーで光学的にデータを再生する。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
前述の開示は、例示的な態様および/または実施形態を論述しているが、本明細書において、添付される特許請求の範囲によって定義されるような、記述されたステップおよび/または実施形態の範囲を逸脱することなく様々な変更および修正が行われうることに注意されたい。さらに、記述された態様および/または実施形態のエレメントが単数形で記述または請求されるとしても、単数形への限定が明示的に述べられていない限り、複数形が企図される。加えて、任意の態様および/または実施形態の全てまたは一部は、別段言及されない限り、任意の別の態様および/または実施形態の全てまたは一部と共に利用されうる。

Claims (23)

  1. データ処理方法であって:
    第1のタスク待ち行列と関連付けられた第1のハードウェアコンポーネントによって、第1のタスクのセットを実行する命令を受信することと、
    第2のタスク待ち行列と関連付けられた第2のハードウェアコンポーネントによって、第2のタスクのセットを実行する命令を受信することと、
    前記第1のハードウェアコンポーネントにおいて、前記第1のタスクのセットを実行するためのトリガメッセージを受信することと、
    前記第1のタスクのセットの完了に応じて、前記第1のハードウェアコンポーネントによって、前記第2のタスクのセットを実行するためのトリガメッセージを前記第2のハードウェアコンポーネントに送信することと
    を備える方法。
  2. 前記第1のタスクのセットは、第1のメモリからデータのブロックを読み取り、前記データのブロックを第2のメモリに記憶するタスクを含む、請求項1に記載の方法。
  3. 前記第2のタスクのセットは、前記第2のメモリに記憶されたデータのブロックを処理するタスクを含む、請求項2に記載の方法。
  4. 前記第1のハードウェアコンポーネントは、前記第2のタスク待ち行列と関連付けられた書込ポインタを移動することによって、前記第2のハードウェアコンポーネントをトリガする、請求項1に記載の方法。
  5. 前記第2のタスクのセットが完了した後に、前記第2のハードウェアコンポーネントによって、トリガメッセージを前記第1のハードウェアコンポーネントに送信することと、
    前記第1のハードウェアコンポーネントによって、前記第1のタスク待ち行列にさらなるタスクが存在するか否かを判定することと、
    さらなるタスクが前記第1のタスク待ち行列に存在しない場合、ソフトウェアコンポーネントにソフトウェア割込を送信することと
    をさらに備える、請求項1に記載の方法。
  6. 前記第2のハードウェアコンポーネントによって、前記処理されたデータのブロックの長さが、閾値の長さを超える場合を決定することと、ここにおいて、前記閾値の長さは、前記処理されたデータの可能な最大の長さよりも短く、
    前記第2のハードウェアコンポーネントによって、前記処理されたデータのブロックの長さが前記閾値の長さを超えることを示すソフトウェア割込を生成することと
    をさらに備える、請求項3に記載の方法。
  7. ソフトウェアコンポーネントによって、前記閾値の長さを超える前記データのブロックの一部を移動することと、
    前記ソフトウェアコンポーネントによって、前記ブロックのデータの残りの部分を移動するように、前記第1のハードウェアコンポーネントをトリガすることと
    をさらに備える、請求項6に記載の方法。
  8. 前記閾値の長さは、前記ソフトウェア割込の周波数に依存して動的に調整される、請求項6に記載の方法。
  9. トラフィックテンプレートを前記第2のハードウェアコンポーネントに提供することをさらに備え、前記トラフィックテンプレートは、前記第2のハードウェアコンポーネントが動作を行うための一連の条件を備える、請求項3に記載の方法。
  10. 前記第2のハードウェアコンポーネントは、前記データのブロックを、前記トラフィックテンプレートと比較する、請求項9に記載の方法。
  11. 前記第2のハードウェアコンポーネントは、前記データのブロックが、前記トラフィックテンプレートの前記一連の条件のうちの1つと一致する場合に、前記データのブロック上で動作する、請求項10に記載の方法。
  12. 前記第2のハードウェアコンポーネントは、前記データのブロックが、前記トラフィックテンプレートの前記一連の条件のいずれとも一致しない場合に、前記データのブロックをソフトウェアモジュールに送る、請求項10に記載の方法。
  13. データ処理装置であって、
    プロセッサと、
    第1のメモリと、
    第2のメモリと、
    第1のタスク待ち行列と関連付けられた第1のハードウェアコンポーネントと、
    第2のタスク待ち行列と関連付けられた第2のハードウェアコンポーネントと
    を備え、
    複数のタスクは、前記第1のタスク待ち行列に事前に記憶され、複数の第2のタスクは、前記第2のタスク待ち行列に事前に記憶され、前記第1のハードウェアコンポーネントは、前記複数の第1のタスクの実行を開始させるためのトリガを受信し、前記複数の第2のタスクを実行させるために、前記第2のハードウェアコンポーネントにトリガを出すように構成される、データ処理装置。
  14. 前記複数の第1のタスクのうちの少なくとも1つは、データのブロックを第1のメモリから読み取り、前記データのブロックを前記第2のメモリに記憶するタスクである、請求項13に記載のデータ処理装置。
  15. 前記複数の第2のタスクのうちの少なくとも1つは、前記第2のメモリに記憶されたデータのブロックを処理するタスクである、請求項14に記載のデータ処理装置。
  16. 前記第1のハードウェアコンポーネントは、データムーバである、請求項13に記載のデータ処理装置。
  17. 前記第2のハードウェアコンポーネントは、ハードウェアアクセラレータである、請求項13に記載のデータ処理装置。
  18. 前記第2のハードウェアコンポーネントは、前記処理されたデータのブロックの長さを閾値の長さと比較するための比較器を備え、
    前記第2のハードウェアコンポーネントは、前記処理されたデータのブロックの長さが、前記閾値の長さよりも大きい場合に、ソフトウェア割込を生成する、
    請求項15に記載のデータ処理装置。
  19. 前記閾値の長さは、前記ソフトウェア割当の周波数に依存して、動的に調整される、請求項18に記載のデータ処理装置。
  20. 一連の条件を備えるトラフィックテンプレートをさらに備え、前記第2のハードウェアコンポーネントは、前記データのブロックを前記トラフィックテンプレートを比較する、請求項15に記載のデータ処理装置。
  21. 少なくとも1つのプロセッサであって、
    第1のハードウェアコンポーネントによって第1のタスクのセットを実行する命令を受信するための第1のモジュールと、
    第2のハードウェアコンポーネントによって第2のタスクのセットを実行する命令を受信するための第2のモジュールと、
    前記第1のタスクのセットを実行するトリガメッセージを受信するための第3のモジュールと、
    前記第1のハードウェアコンポーネントから前記第2のハードウェアコンポーネントに、前記第2のタスクのセットを実行するトリガメッセージを出すための第4のモジュールと
    を備える少なくとも1つのプロセッサ。
  22. コンピュータ可読媒体上に記録されたコンピュータプログラムであって、
    第1のハードウェアコンポーネントによって、第1のタスクのセットを実行する命令を受信することと、
    第2のハードウェアコンポーネントによって、第2のタスクのセットを実行する命令を受信することと、
    前記第1のタスクのセットを実行するトリガメッセージを受信することと、
    前記第1のハードウェアコンポーネントから前記第2のハードウェアコンポーネントに、前記第2のタスクのセットを実行するトリガメッセージを出すことと
    を備える、コンピュータプログラム。
  23. 装置であって、
    第1のタスク待ち行列と関連付けられた第1のハードウェアコンポーネントによって、第1のタスクのセットを実行する命令を受信するための手段と、
    第2のタスク待ち行列と関連付けられた第2のハードウェアコンポーネントによって、第2のタスクのセットを実行する命令を受信するための手段と、
    前記第1のハードウェアコンポーネントにおいて、前記第1のタスクのセットを実行するトリガメッセージを受信するための手段と、
    前記第1のタスクのセットの完了に応じて、前記第1のハードウェアコンポーネントによって、前記第2のハードウェアコンポーネントに、前記第2のタスクのセットを実行するトリガメッセージを送信するための手段と
    を備える装置。
JP2012524915A 2009-08-13 2010-08-13 効率的なデータ処理のための装置および方法 Expired - Fee Related JP5734977B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/540,749 2009-08-13
US12/540,749 US9038073B2 (en) 2009-08-13 2009-08-13 Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
PCT/US2010/045517 WO2011020053A1 (en) 2009-08-13 2010-08-13 Apparatus and method for efficient data processing

Publications (2)

Publication Number Publication Date
JP2013502015A true JP2013502015A (ja) 2013-01-17
JP5734977B2 JP5734977B2 (ja) 2015-06-17

Family

ID=42813197

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012524915A Expired - Fee Related JP5734977B2 (ja) 2009-08-13 2010-08-13 効率的なデータ処理のための装置および方法

Country Status (6)

Country Link
US (1) US9038073B2 (ja)
EP (1) EP2465033A1 (ja)
JP (1) JP5734977B2 (ja)
KR (1) KR101344886B1 (ja)
CN (1) CN102473115B (ja)
WO (1) WO2011020053A1 (ja)

Families Citing this family (29)

* 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
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
US8788782B2 (en) * 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US9189283B2 (en) * 2011-03-03 2015-11-17 Hewlett-Packard Development Company, L.P. Task launching on hardware resource for client
US9645823B2 (en) 2011-03-03 2017-05-09 Hewlett-Packard Development Company, L.P. Hardware controller to choose selected hardware entity and to execute instructions in relation to selected hardware entity
US8738830B2 (en) 2011-03-03 2014-05-27 Hewlett-Packard Development Company, L.P. Hardware interrupt processing circuit
US9996394B2 (en) * 2012-03-01 2018-06-12 Microsoft Technology Licensing, Llc Scheduling accelerator tasks on accelerators using graphs
US9880852B2 (en) * 2012-12-27 2018-01-30 Intel Corporation Programmable hardware accelerators in CPU
US9575722B2 (en) * 2013-03-14 2017-02-21 International Business Machines Corporation Software interface for a specialized hardward device
US10339081B2 (en) 2015-05-09 2019-07-02 Medtronic, Inc. Methods and devices that utilize hardware to move blocks of operating parameter data from memory to a register set
KR20180080463A (ko) * 2017-01-04 2018-07-12 삼성전자주식회사 반도체 장치 및 반도체 장치의 동작 방법
KR102324436B1 (ko) 2017-03-29 2021-11-10 삼성전자 주식회사 테더링 방법 및 이를 구현하는 전자 장치
US11502948B2 (en) 2017-10-16 2022-11-15 Mellanox Technologies, Ltd. Computational accelerator for storage operations
US11005771B2 (en) 2017-10-16 2021-05-11 Mellanox Technologies, Ltd. Computational accelerator for packet payload operations
US10841243B2 (en) 2017-11-08 2020-11-17 Mellanox Technologies, Ltd. NIC with programmable pipeline
US10708240B2 (en) 2017-12-14 2020-07-07 Mellanox Technologies, Ltd. Offloading communication security operations to a network interface controller
US10430246B2 (en) * 2018-01-18 2019-10-01 International Business Machines Corporation Virtualized and synchronous access to hardware accelerators
US11216370B2 (en) * 2018-02-20 2022-01-04 Medtronic, Inc. Methods and devices that utilize hardware to move blocks of operating parameter data from memory to a register set
US10824469B2 (en) * 2018-11-28 2020-11-03 Mellanox Technologies, Ltd. Reordering avoidance for flows during transition between slow-path handling and fast-path handling
US11184439B2 (en) 2019-04-01 2021-11-23 Mellanox Technologies, Ltd. Communication with accelerator via RDMA-based network adapter
US11996166B2 (en) * 2019-08-29 2024-05-28 Advanced Micro Devices, Inc. Adaptable allocation of SRAM based on power
CN111124686B (zh) * 2019-12-27 2022-06-24 深圳云天励飞技术股份有限公司 资源调度方法、装置及相关设备
US11340791B2 (en) * 2020-01-14 2022-05-24 Arm Limited Apparatus and method for handling delivery of data from a source to one or more destinations
IL276538B2 (en) 2020-08-05 2023-08-01 Mellanox Technologies Ltd A cryptographic device for data communication
CN114095153A (zh) 2020-08-05 2022-02-25 迈络思科技有限公司 密码数据通信装置
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US12117948B2 (en) 2022-10-31 2024-10-15 Mellanox Technologies, Ltd. Data processing unit with transparent root complex
US12007921B2 (en) 2022-11-02 2024-06-11 Mellanox Technologies, Ltd. Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6373356A (ja) * 1986-09-16 1988-04-02 Fujitsu Ltd プロセツサ間通信方式
JPH01314368A (ja) * 1988-06-14 1989-12-19 Nec Corp マルチプロセッサシステムにおける指令実行終了判定方式
JPH05274279A (ja) * 1992-03-30 1993-10-22 Hitachi Ltd 並列処理装置及び方法
JPH07282025A (ja) * 1994-04-05 1995-10-27 Internatl Business Mach Corp <Ibm> クロック回路
JPH10304006A (ja) * 1997-04-28 1998-11-13 Matsushita Electric Ind Co Ltd サーバシステムとそのプロトコル処理方法
JP2000222204A (ja) * 1999-01-29 2000-08-11 Yamatake Corp 処理装置
JP2003233403A (ja) * 2002-02-06 2003-08-22 Toshiba Corp 制御装置およびプログラミング装置
JP2005122257A (ja) * 2003-10-14 2005-05-12 Seiko Epson Corp 画像処理装置、及び電子機器
JP2005322032A (ja) * 2004-05-10 2005-11-17 Matsushita Electric Ind Co Ltd 受信フレーム処理装置
WO2006003995A1 (ja) * 2004-07-06 2006-01-12 Ntt Docomo, Inc. メッセージ送信システム及びメッセージ送信方法
JP2009043234A (ja) * 2007-07-17 2009-02-26 Ricoh Co Ltd データ処理装置及びデータ処理方法

Family Cites Families (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338673A (en) 1978-12-05 1982-07-06 Compugraphic Corporation Phototypesetting system and method
US4463418A (en) 1981-06-30 1984-07-31 International Business Machines Corporation Error correction from remote data processor by communication and reconstruction of processor status storage disk
US4709332A (en) 1984-10-05 1987-11-24 North Shore University Hospital High speed image data processing
US4980824A (en) * 1986-10-29 1990-12-25 United Technologies Corporation Event driven executive
US5214652A (en) 1991-03-26 1993-05-25 International Business Machines Corporation Alternate processor continuation of task of failed processor
JPH05120125A (ja) 1991-07-05 1993-05-18 Oki Electric Ind Co Ltd データ処理装置
CA2123447C (en) 1993-09-20 1999-02-16 Richard L. Arndt Scalable system interrupt structure for a multiprocessing system
US5642501A (en) 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
EP0716370A3 (en) 1994-12-06 2005-02-16 International Business Machines Corporation A disk access method for delivering multimedia and video information on demand over wide area networks
US5832262A (en) 1995-09-14 1998-11-03 Lockheed Martin Corporation Realtime hardware scheduler utilizing processor message passing and queue management cells
US5721739A (en) 1995-12-14 1998-02-24 Fairchild Semiconductor Corporation Method for detecting read errors, correcting single-bit read errors and reporting multiple-bit read errors
US5850526A (en) 1996-02-07 1998-12-15 Kingston Technology Co. LAN station for determining the destination LAN station is capable of decompressing by comparing destination address to block of addresses assigned by a LAN manufacturer
US5797043A (en) 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US5870394A (en) 1996-07-23 1999-02-09 Northern Telecom Limited Method and apparatus for reassembly of data packets into messages in an asynchronous transfer mode communications system
US5996058A (en) * 1996-08-19 1999-11-30 Samsung Electronics Company, Ltd. System and method for handling software interrupts with argument passing
US6055619A (en) 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
JPH11110286A (ja) 1997-09-29 1999-04-23 Murata Mach Ltd 通信端末装置
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6836838B1 (en) * 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6285404B1 (en) 1998-08-03 2001-09-04 Ati Technologies Inc. Systolic video encoding system
US6421751B1 (en) 1998-11-23 2002-07-16 Advanced Micro Devices, Inc. Detecting a no-tags-free condition in a computer system having multiple outstanding transactions
US6611891B1 (en) 1998-11-23 2003-08-26 Advanced Micro Devices, Inc. Computer resource configuration mechanism across a multi-pipe communication link
US6542537B1 (en) 1999-03-09 2003-04-01 Conexant Systems, Inc. Reduction of CPU burden in monitoring data for escape sequences
US6708233B1 (en) 1999-03-25 2004-03-16 Microsoft Corporation Method and apparatus for direct buffering of a stream of variable-length data
US6768992B1 (en) 1999-05-17 2004-07-27 Lynne G. Jolitz Term addressable memory of an accelerator system and method
US6457042B1 (en) * 1999-09-30 2002-09-24 International Business Machines Corporation Dynamic construction of complex execution environments
JP2001101010A (ja) 1999-09-30 2001-04-13 Hitachi Ltd 仮想機械最適化方法
JP3516634B2 (ja) 2000-05-30 2004-04-05 日本電気株式会社 サーキットエミュレーション装置及びサーキットエミュレーション装置における多重化方法
JP2002163239A (ja) 2000-11-22 2002-06-07 Toshiba Corp マルチプロセッサシステムおよびその制御方法
US7076695B2 (en) 2001-07-20 2006-07-11 Opnet Technologies, Inc. System and methods for adaptive threshold determination for performance metrics
EP1313011B1 (en) 2001-10-31 2007-12-12 Aplix Corporation Intermediate code execution system, intermediate code execution method, and computer program product for executing intermediate code
US6993602B2 (en) * 2002-01-29 2006-01-31 Intel Corporation Configuring queues based on a given parameter
US6826653B2 (en) * 2002-02-06 2004-11-30 Hewlett-Packard Development Company, L.P. Block data mover adapted to contain faults in a partitioned multiprocessor system
US6720893B2 (en) 2002-02-22 2004-04-13 International Business Machines Corporation Programmable output control of compressed data from encoder
US6985974B1 (en) 2002-04-08 2006-01-10 Marvell Semiconductor Israel Ltd. Memory interface controller for a network device
US7512128B2 (en) 2002-06-12 2009-03-31 Sun Microsystems, Inc. System and method for a multi-packet data link layer data transmission
US7142540B2 (en) 2002-07-18 2006-11-28 Sun Microsystems, Inc. Method and apparatus for zero-copy receive buffer management
JP4317403B2 (ja) 2002-08-09 2009-08-19 パナソニック株式会社 ヘッダ圧縮装置及びヘッダ圧縮方法
US6898664B2 (en) 2002-08-28 2005-05-24 Hewlett-Packard Development Company, L.P. Optimizing performance for a storage device within a computer system
US7269171B2 (en) 2002-09-24 2007-09-11 Sun Microsystems, Inc. Multi-data receive processing according to a data communication protocol
US6944754B2 (en) 2002-10-02 2005-09-13 Wisconsin Alumni Research Foundation Method and apparatus for parallel execution of computer software using a distilled program
US7103597B2 (en) 2002-10-03 2006-09-05 Mcgoveran David O Adaptive transaction manager for complex transactions and business process
US7870431B2 (en) * 2002-10-18 2011-01-11 Computer Associates Think, Inc. Transaction tracer
US20040088498A1 (en) 2002-10-31 2004-05-06 International Business Machines Corporation System and method for preferred memory affinity
US7400581B2 (en) 2003-03-03 2008-07-15 Sun Microsystems, Inc. Load-balancing utilizing one or more threads of execution for implementing a protocol stack
US7330991B2 (en) 2003-05-15 2008-02-12 Lsi Logic Corporation Method and/or apparatus for paging to a dynamic memory array
CN100411317C (zh) 2003-07-08 2008-08-13 联想(北京)有限公司 一种提高无线网络信道传输效率的方法
US7586948B2 (en) 2003-12-24 2009-09-08 Agere Systems Inc. Packet sub-frame structure for selective acknowledgment
KR100651344B1 (ko) 2004-02-19 2006-11-29 삼성전자주식회사 고속 순방향 패킷 접속 방식을 사용하는 이동 통신시스템에서 데이터 처리 속도를 향상시키는 방법 및 그이동통신시스템
US7783769B2 (en) 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US7636857B2 (en) 2004-05-24 2009-12-22 Interdigital Technology Corporation Data-mover controller with plural registers for supporting ciphering operations
US20060034167A1 (en) * 2004-07-30 2006-02-16 International Business Machines Corporation Communication resource reservation system for improved messaging performance
CN1747444A (zh) 2004-09-10 2006-03-15 国际商业机器公司 数据处理系统网络中从主机单元分担数据流的方法及引擎
US7743376B2 (en) * 2004-09-13 2010-06-22 Broadcom Corporation Method and apparatus for managing tasks in a multiprocessor system
US7590150B1 (en) 2004-09-30 2009-09-15 Ceterus Networks, Inc. Method and apparatus for transport of multiple TDM and data clients over multiple variable data rate streams
US8438265B2 (en) 2004-11-04 2013-05-07 International Business Machines Corporation Method of offloading iSCSI PDU corruption-detection digest generation from a host processing unit, and related iSCSI offload engine
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US7395385B2 (en) 2005-02-12 2008-07-01 Broadcom Corporation Memory management for a mobile multimedia processor
CN100432957C (zh) 2005-02-12 2008-11-12 美国博通公司 一种管理存储器的方法
US7373475B2 (en) 2005-06-21 2008-05-13 Intel Corporation Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置
JP2007026094A (ja) 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 実行装置およびアプリケーションプログラム
US20070033356A1 (en) 2005-08-03 2007-02-08 Boris Erlikhman System for Enabling Secure and Automatic Data Backup and Instant Recovery
US7558929B2 (en) 2005-09-29 2009-07-07 International Business Machines Corporation Instant copy of data in a cache memory via an atomic command
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US20070136402A1 (en) 2005-11-30 2007-06-14 International Business Machines Corporation Automatic prediction of future out of memory exceptions in a garbage collected virtual machine
US7889762B2 (en) 2006-01-19 2011-02-15 Intel-Ne, Inc. Apparatus and method for in-line insertion and removal of markers
WO2007088358A1 (en) 2006-02-03 2007-08-09 British Telecommunications Public Limited Company Method of operating a network
US8279910B2 (en) * 2006-03-02 2012-10-02 Qualcomm Incorporated Method and apparatus for code space search in a receiver
US20070250681A1 (en) * 2006-04-10 2007-10-25 International Business Machines Corporation Independent programmable operation sequence processor for vector processing
US9032127B2 (en) * 2006-09-14 2015-05-12 Hewlett-Packard Development Company, L.P. Method of balancing I/O device interrupt service loading in a computer system
US8438365B2 (en) * 2006-10-06 2013-05-07 Calos Fund Limited Liability Company Efficient data loading in a data-parallel processor
CN101165655A (zh) 2006-10-20 2008-04-23 国际商业机器公司 多处理器计算系统及其任务分配方法
US7856033B2 (en) 2006-11-14 2010-12-21 Lantiq Deutschland Gmbh Methods and systems for adaptive communication
CN101548526B (zh) 2006-12-14 2016-07-06 艾利森电话股份有限公司 用于在无线通信系统中对齐协议数据单元的方法和装置
US8019055B2 (en) 2007-01-19 2011-09-13 Nokia Corporation Media instant messaging for mobile device
US20080235477A1 (en) * 2007-03-19 2008-09-25 Rawson Andrew R Coherent data mover
US20080250212A1 (en) 2007-04-09 2008-10-09 Ati Technologies Ulc Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information
US8416788B2 (en) 2007-04-26 2013-04-09 Microsoft Corporation Compression of data packets while maintaining endpoint-to-endpoint authentication
US7697535B2 (en) 2007-07-11 2010-04-13 Bhaskar Patel Error resilient protocol data unit boundary detection
US8543866B2 (en) 2007-07-20 2013-09-24 Qualcomm Incorporated Remote access diagnostic mechanism for communication devices
KR101405975B1 (ko) 2007-07-23 2014-06-12 엘지전자 주식회사 디지털 방송 시스템 및 데이터 처리 방법
US8621573B2 (en) 2007-08-28 2013-12-31 Cisco Technology, Inc. Highly scalable application network appliances with virtualized services
WO2009044382A2 (en) 2007-10-05 2009-04-09 Nxp B.V. Method, system and apparatus for extended rate/range communication of multimedia data over coaxial cable network
US7890314B2 (en) 2007-12-05 2011-02-15 Seagate Technology Llc Method for modeling performance of embedded processors having combined cache and memory hierarchy
US20090183161A1 (en) * 2008-01-16 2009-07-16 Pasi Kolinummi Co-processor for stream data processing
US8321651B2 (en) 2008-04-02 2012-11-27 Qualcomm Incorporated System and method for memory allocation in embedded or wireless communication systems
US20090300629A1 (en) * 2008-06-02 2009-12-03 Mois Navon Scheduling of Multiple Tasks in a System Including Multiple Computing Elements
US20100011375A1 (en) 2008-07-14 2010-01-14 Safenet, Inc. Zero-install IP security
US8864560B2 (en) * 2008-07-16 2014-10-21 Commscope, Inc. Of North Carolina Water-blocking vent panel and air filter therefor
US8185897B2 (en) * 2008-09-30 2012-05-22 Verizon Patent And Licensing Inc. Task management system
US8902805B2 (en) 2008-10-24 2014-12-02 Qualcomm Incorporated Cell relay packet routing
US9554417B2 (en) 2008-12-24 2017-01-24 Qualcomm Incorporated Optimized header for efficient processing of data packets
US20100260126A1 (en) 2009-04-13 2010-10-14 Qualcomm Incorporated Split-cell relay packet routing
US7996564B2 (en) * 2009-04-16 2011-08-09 International Business Machines Corporation Remote asynchronous data mover
US8170027B2 (en) 2009-05-26 2012-05-01 Qualcomm Incorporated Apparatus and method for supporting higher data rates on links with variable frame sizes
US8762532B2 (en) 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US8788782B2 (en) 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
US20110041128A1 (en) 2009-08-13 2011-02-17 Mathias Kohlenz Apparatus and Method for Distributed Data Processing

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6373356A (ja) * 1986-09-16 1988-04-02 Fujitsu Ltd プロセツサ間通信方式
JPH01314368A (ja) * 1988-06-14 1989-12-19 Nec Corp マルチプロセッサシステムにおける指令実行終了判定方式
JPH05274279A (ja) * 1992-03-30 1993-10-22 Hitachi Ltd 並列処理装置及び方法
JPH07282025A (ja) * 1994-04-05 1995-10-27 Internatl Business Mach Corp <Ibm> クロック回路
JPH10304006A (ja) * 1997-04-28 1998-11-13 Matsushita Electric Ind Co Ltd サーバシステムとそのプロトコル処理方法
JP2000222204A (ja) * 1999-01-29 2000-08-11 Yamatake Corp 処理装置
JP2003233403A (ja) * 2002-02-06 2003-08-22 Toshiba Corp 制御装置およびプログラミング装置
JP2005122257A (ja) * 2003-10-14 2005-05-12 Seiko Epson Corp 画像処理装置、及び電子機器
JP2005322032A (ja) * 2004-05-10 2005-11-17 Matsushita Electric Ind Co Ltd 受信フレーム処理装置
WO2006003995A1 (ja) * 2004-07-06 2006-01-12 Ntt Docomo, Inc. メッセージ送信システム及びメッセージ送信方法
JP2009043234A (ja) * 2007-07-17 2009-02-26 Ricoh Co Ltd データ処理装置及びデータ処理方法

Also Published As

Publication number Publication date
US20110041127A1 (en) 2011-02-17
KR101344886B1 (ko) 2013-12-26
WO2011020053A1 (en) 2011-02-17
CN102473115A (zh) 2012-05-23
KR20120062770A (ko) 2012-06-14
EP2465033A1 (en) 2012-06-20
US9038073B2 (en) 2015-05-19
CN102473115B (zh) 2015-04-22
JP5734977B2 (ja) 2015-06-17

Similar Documents

Publication Publication Date Title
JP5734977B2 (ja) 効率的なデータ処理のための装置および方法
US8762532B2 (en) Apparatus and method for efficient memory allocation
US8788782B2 (en) Apparatus and method for memory management and efficient data processing
US20110041128A1 (en) Apparatus and Method for Distributed Data Processing
US9210094B1 (en) Utilization of TCP segmentation offload with jumbo and non-jumbo networks
WO2015018188A1 (zh) 一种深度报文检测方法、设备及协处理器
EP2846503B1 (en) Service scheduling method and apparatus, and network devices
CN106233775B (zh) 应用程序或无线电信息在网络数据包头中的插入和使用
WO2014180297A1 (zh) 报文处理方法和装置
EP3122012B1 (en) Data processing method and apparatus for openflow network
JP2022517665A (ja) イーサネットフレームの伝送方法及び通信機器
TWI448170B (zh) 用於縮減http標頭尺寸的裝置、處理器、電腦程式產品,及方法
Kato et al. mpCUBIC: A CUBIC-like congestion control algorithm for multipath TCP
US11382022B2 (en) Method, apparatus, and computer program product for packet forwarding control protocol messages bundling
CN108282454B (zh) 用于使用内联模式匹配加速安全检查的装置、系统和方法
EP1864463B1 (en) System and method for reducing latency in a host ethernet adapter
CN111064673A (zh) 一种用户面数据完整性保护方法、装置、电子设备及介质
WO2017049722A1 (zh) 资源下载方法、资源下载系统和终端
US10362070B1 (en) Method, system, and apparatus for achieving user space intervention during connection-establishment handshakes
WO2023208313A1 (en) Cpu and method associated with a security association
JP2019201249A (ja) 通信装置、通信装置の制御方法、およびプログラム
JP2016225928A (ja) 通信装置、通信装置の制御方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140220

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140520

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140819

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150223

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150302

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5734977

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees