JP2011023013A - デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法 - Google Patents

デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法 Download PDF

Info

Publication number
JP2011023013A
JP2011023013A JP2010172404A JP2010172404A JP2011023013A JP 2011023013 A JP2011023013 A JP 2011023013A JP 2010172404 A JP2010172404 A JP 2010172404A JP 2010172404 A JP2010172404 A JP 2010172404A JP 2011023013 A JP2011023013 A JP 2011023013A
Authority
JP
Japan
Prior art keywords
row
compressor
value
results
logic
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.)
Pending
Application number
JP2010172404A
Other languages
English (en)
Inventor
Shankar Krithivasan
シャンカー・クリティバサン
Christopher Edward Koob
クリストファー・エドワード・クーブ
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 JP2011023013A publication Critical patent/JP2011023013A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/544Indexing scheme relating to group G06F7/544
    • G06F2207/5442Absolute difference
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Advance Control (AREA)

Abstract

【課題】デジタルシグナルプロセッサ内で2の補数演算を実行するための改良されたシステム及び方法を提供する。
【解決手段】2の補数演算を達成する方法は、複数のバイト値を受信することと、複数のバイト値を第1の部分及び第2の部分に分割することとを含む。更に、この方法は、第1の部分を、第1の4対2コンプレッサの第1のセグメントへ入力することと、第1の部分について、第1の4対2圧縮演算を実行し、第1のロウと、第1のロウから1ビットオフセットした第2のロウとを有する第1の結果のセットを生成することと、1からなる第1の値を送り、第1の2の補数演算を達成することとを含む。この方法はまた、第2の部分を、第2の4対2コンプレッサの第2のセグメントへ入力することと、1からなる第2の値を第2の部分にキャリーインし、第2の2の補数演算を達成するために、第2の部分のすぐ右側に、1からなる2つの値を加えることとを含む。
【選択図】図1

Description

本開示は、一般に、デジタルシグナルプロセッサと、そのようなデジタルシグナルプロセッサを用いるデバイスに関する。更に詳しくは、本開示は、デジタルシグナルプロセッサ内で2の補数演算を実行することに関する。
技術の進歩によって、より小型でより強力なパーソナル計算デバイスが出現した。例えば、現在、小型かつ軽量でユーザに容易に運ばれるポータブル無線電話、携帯情報端末(PDA)、及びページングデバイスのような無線計算デバイスを含む様々なポータブルパーソナル計算デバイスが存在する。更に詳しくは、セルラ電話及びIP電話のようなポータブル無線電話は、無線ネットワークを介して音声パケットやデータパケットを通信することができる。更に、そのような多くの無線電話は、その中に組み込まれる他の種類のデバイスを含む。例えば、無線電話はまた、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、及び、オーディオファイルプレーヤを含むことができる。また、そのような無線電話は、インターネットにアクセスするために使用可能なウェブインタフェースを含むことができる。そのため、これらの無線電話は、相当の計算能力を含んでいる。
無線電話内に組み込まれた別のデバイスの機能を提供するプログラムの幾つかは、2の補数演算を必要とする命令を含む。例えば、絶対差の合計は、負である他の値のために、2の補数を必要とする。特定のバイト値の2の補数は、バイト内の各ビットを反転し、反転した結果に1を加えることによって決定することができる。2の補数演算を用いることによって、デジタルシグナルプロセッサ内のハードウェアを増加させる場合がある。
従って、デジタルシグナルプロセッサ内で2の補数演算を実行するための改良されたシステム及び方法を提供することが有利であろう。
2の補数演算を達成する方法が開示される。この方法は、複数のバイト値を受信することと、これら複数のバイト値を第1の部分と第2の部分に分割することとを含む。更に、この方法は、第1の部分を、第1の4対2コンプレッサの第1のセグメントへ入力することと、第1の部分について、第1の4対2圧縮演算を実行し、第1のロウと、第1のロウから1ビットオフセットした第2のロウとを有する第1の結果のセットを生成することと、1からなる第1の値をキャリーインし、第1の2の補数演算を達成することとを含む。
特定の実施形態では、この方法はまた、第2の部分を、第2の4対2コンプレッサの第2のセグメントへ入力することと、1からなる第2の値を第2の部分にキャリーインし、第2の2の補数演算を達成するために、第2の部分のすぐ右側に、1からなる2つの値を加えることとをも含む。更に特定の実施形態では、この方法は、第2の部分について、第2の4対2圧縮演算を実行し、第1のロウと、第1のロウから1ビットオフセットした第2のロウとを有する第2の結果のセットを生成することを含む。
別の特定の実施形態では、この方法は、第3の2の補数演算を達成するために、第1の結果のセットの第2のロウのオフセットビットに、1からなる第3の値を入力することを含む。更にこの方法は、第4の2の補数演算を達成するために、第2の結果のセットの第2のロウのオフセットビットに、1からなる第4の値を入力することを含むことができる。この方法は更に、第1の結果のセットを、第1の累積値とともに、第1の3対2コンプレッサに入力することと、第1の結果のセットと累積値とについて、第1の3対2圧縮演算を実行し、第1のロウと、第1のロウから1ビットオフセットした第2のロウとを有する第3の結果のセットを生成することを含むことができる。
また別の特定の実施形態では、この方法は、第2の結果のセットを、第2の累積値とともに、第2の3対2コンプレッサに入力することと、第2の結果のセットと累積値とについて、第2の3対2圧縮演算を実行し、第1のロウと、第1のロウから1ビットオフセットした第2のロウとを有する第4の結果のセットを生成することとを含む。また、この方法は、第5の2の補数演算を達成するために、第3の結果のセットの第2のロウのオフセットビットに、1からなる第5の値を挿入することを含む。更に、この方法は、第6の2の補数演算を達成するために、第4の結果のセットの第2のロウのオブセットビットに、1からなる第6の値を挿入することを含む。
別の特定の実施形態では、この方法は、第3の結果のセットを、第1の循環型加算器(CPA:carry propagate adder)に入力することと、第3の結果にセットについて、第1のCPA演算を実行することとを備える。更に、この方法は、第7の2の補数演算を達成するために、1からなる第7の値をキャリーインすることと、第5の結果のセットを生成することとを含む。更に、特定の実施形態では、この方法は、第4の結果のセットを、第2の循環型加算器に入力することと、第4の結果のセットについて、第2のCPA演算を実行することとを含む。また、この方法は、第8の2の補数演算を達成するために、1からなる第8の値をキャリーインすることと、第6の結果のセットを生成することとを含むことができる。この方法はまた、第5の結果のセットを、レジスタの第1の部分に書き込むことと、第6の結果のセットを、レジスタの第2の部分に書き込むこととを含むことができる。
別の実施形態では、1又は複数の2の補数演算を達成する方法が開示される。この方法は、8つのサブワード差分バイト値を判定することと、各サブワード差分バイト値の符号を判定することと、負である8つのサブワード差分バイト値の各々を反転し、反転されたサブワード差分バイト値のセットを生成することとを含む。更に、この実施形態では、この方法は、正である8つのサブワード差分バイト値をリダクションツリーに入力することと、反転されたサブワード差分バイト値のセットの各々をリダクションツリーに入力することとを含む。
また別の実施形態では、命令実行ユニットが提供される。この命令実行ユニットは、第1の4対2コンプレッサと、第1の4対2コンプレッサに接続された制御モジュールと含む。この実施形態では、制御モジュールは、8バイト値を、4バイト値からなる第1のグループと、4バイト値からなる第2のグループとに分割するロジックと、第1の4対2コンプレッサを用いて、4バイト値からなる第1のグループを、第1のロウと第2のロウとを有する第1の結果のセットへ圧縮するロジックと、第1の2の補数演算を達成するために、4バイト値からなる第1のグループを圧縮しながら、1からなる第1の値をキャリーインするロジックと、第2の2の補数演算を達成するために、第1の結果のセット内の第2のロウのオフセットビットに、1からなる第2の値を入力するロジックとを含む。
また別の実施形態では、デジタルシグナルプロセッサが提供される。このデジタルシグナルプロセッサは、メモリと、メモリに反応するシーケンサと、メモリに接続されたレジスタファイルと、シーケンサに反応する命令実行ユニットとを含む。この実施形態では、命令実行ユニットは、第1の4対2コンプレッサと、第2の4対2コンプレッサと、第1の4対2コンプレッサに接続された第1の3対2コンプレッサと、第2の4対2コンプレッサに接続された第2の3対2コンプレッサと、第1の3対2コンプレッサに接続された第1の循環型加算器と、第2の3対2コンプレッサに接続された第2の循環型加算器とを含む。更に、制御モジュールは、第1の4対2コンプレッサ、第2の4対2コンプレッサ、第1の3対2コンプレッサ、第2の3対2コンプレッサ、第1の循環型加算器、及び第2の循環型加算器に接続される。制御モジュールは、8バイト値を、4バイト値からなる第1のグループと、4バイト値からなる第2のグループとに分割するロジックと、第1の4対2コンプレッサを用いて、4バイト値からなる第1のグループを、第1のロウと第2のロウとを有する第1の結果のセットへ圧縮するロジックと、第1の2の補数演算を達成するために、4バイト値からなる第1のグループを圧縮しながら、1からなる第1の値をキャリーインするロジックと、第2の2の補数演算を達成するために、第1の結果のセット内の第2のロウのオフセットビットに、1からなる第2の値を入力するロジックとを含む。
また別の実施形態では、デジタルシグナルプロセッサを含むポータブル通信デバイスが開示される。デジタルシグナルプロセッサは、メモリと、メモリに反応するシーケンサと、メモリに接続されたレジスタファイルと、シーケンサに反応する命令実行ユニットとを含む。この命令実行ユニットは、第1の4対2コンプレッサと、第2の4対2コンプレッサと、第1の4対2コンプレッサに接続された第1の3対2コンプレッサと、第2の4対2コンプレッサに接続された第2の3対2コンプレッサと、第1の3対2コンプレッサに接続された第1の循環型加算器と、第2の3対2コンプレッサに接続された第2の循環型加算器とを含む。制御モジュールは、第1の4対2コンプレッサ、第2の4対2コンプレッサ、第1の3対2コンプレッサ、第2の3対2コンプレッサ、第1の循環型加算器、及び第2の循環型加算器に接続される。この制御モジュールは、第1の4対2コンプレッサ、第2の4対2コンプレッサ、第1の3対2コンプレッサ、第2の3対2コンプレッサ、第1の循環型加算器、及び第2の循環型加算器を用いて、8バイト値を処理しながら、最大8つの2の補数演算を達成するロジックを含むことができる。
別の実施形態では、プロセッサデバイスが開示される。このプロセッサデバイスは、複数のバイト値を受信する手段と、複数のバイト値を、第1のバイト値からなる部分と、第2のバイト値からなる部分とに分割する手段と、第1のバイト値からなる部分を、第1の4対2コンプレッサの下半分に入力する手段と、第1のバイト値からなる部分について、第1の4対2圧縮演算を実行し、第1のロウと、第1のロウから1ビットオフセットした第2のロウとを有する第1の結果のセットを生成する手段と、第1の2の補数演算を達成するために、1からなる値をキャリーインする手段とを含む。
また別の実施形態では、プロセッサデバイスが提供される。このプロセッサデバイスは、8つのサブワード差分バイト値を判定する手段と、各サブワード差分バイト値の符号を判定する手段と、負のサブワード差分バイト値の各々を反転し、反転されたサブワード差分バイト値を生成する手段と、正のサブワード差分バイト値をリダクションツリーに入力する手段と、反転されたサブワード差分バイト値の各々をリダクションツリーに入力する手段と、8つのサブワード差分バイト値について、複数のリダクション演算を実行しながら、最大8つの1を加えることによって、最大8つの2の補数演算を達成する手段とを含む。
本明細書で開示された1又は複数の実施形態の利点は、デジタルシグナルプロセッサ内で多数のバイトリダクション演算を実行しながら、最大8つの2の補数演算を達成することを含む。
他の利点は、デジタルシグナルプロセッサ内で2の補数演算を実行するために必要なハードウェアを実質的に低減することを含む。
本開示の他の局面、利点、及び特徴は、図面の簡潔な説明、詳細な説明、及び特許請求の範囲の各セクションを含む出願全体の検討後に明らかになるであろう。
図1は、典型的なデジタルシグナルプロセッサの一般的な図である。 図2は、典型的な命令実行ユニットを例示する図である。 図3は、多数の命令語に関する絶対差の総和を実行する方法を例示するフローチャートである。 図4は、最大8つの2の補数演算を達成するために必要な最大8つのスティッキーな1を入力する方法を例示するフローチャートである。 図5は、デジタルシグナルプロセッサを組み込むポータブル通信デバイスの一般的な図である。 図6は、デジタルシグナルプロセッサを組み込む典型的なセルラ電話の一般的な図である。 図7は、デジタルシグナルプロセッサを組み込む典型的な無線インターネットプロトコル電話の一般的な図である。 図8は、デジタルシグナルプロセッサを組み込む典型的なポータブルデジタルアシスタントの一般的な図である。 図9は、デジタルシグナルプロセッサを組み込む典型的なオーディオファイルプレーヤの一般的な図である。
本明細書に記載の実施形態の局面及び付随する利点は、添付図面と連携した場合に、以下の詳細記載への参照によって、より容易に明らかになるであろう。
図1は、デジタルシグナルプロセッサ(DSP)100の典型的な、限定しない実施形態のブロック図を例示する。図1に例示するように、DSP100は、バス106を介してシーケンサ104に接続されたメモリ102を含む。本明細書で使用されるように、文言「接続された」は、2以上の構成要素が直接的又は間接的に接続されていることを示す。特定の実施形態では、バス106は、64ビットバスであり、シーケンサ104は、32ビット又は64ビットの長さを有する命令を、メモリ102から検索するように構成される。バス106は、第1の命令実行ユニット108、第2の命令実行ユニット110、第3の命令実行ユニット112、第4の命令実行ユニット114に接続される。図1は、各命令実行ユニット108,110,112,114が、第1のバス118によって汎用レジスタファイル116に接続されていることを示す。汎用レジスタファイル116はまた、第2のバス120によって、シーケンサ104及びメモリ102に接続することもできる。
特定の実施形態では、メモリ102は、第1の命令キャッシュ122、第2の命令キャッシュ124、第3の命令キャッシュ126、第4の命令キャッシュ128、第5の命令キャッシュ130、及び第6の命令キャッシュ132を含んでいる。動作中、命令キャッシュ122,124,126,128,130,132は、シーケンサ104によって、互いに独立してアクセスされうる。更に、特定の実施形態では、各命令キャッシュ122,124,126,128,130,132はそれぞれ、複数の命令、各命令のための命令操作データ、及び、各命令のための命令事前復号データを含む。
図1に例示するように、メモリ102は、各命令キャッシュ122,124,126,128,130,132のための命令キューを含む命令キュー134を含むことができる。特に、命令キュー134は、第1の命令キャッシュ122に関連する第1の命令キュー136と、第2の命令キャッシュ124に関連する第2の命令キュー138と、第3の命令キャッシュ126に関連する第3の命令キュー140と、第4の命令キャッシュ128に関連する第4の命令キュー142と、第5の命令キャッシュ130に関連する第5の命令キュー144と、第6の命令キャッシュ132に関連する第6の命令キュー146とを含む。
動作中、シーケンサ104は、命令キュー134を経由して、各命令キャッシュ122,124,126,128,130,132から命令を取得することができる。特定の実施形態では、シーケンサ104は、第1の命令キュー136から第6の命令キュー146まで、命令キュー136,138,140,142,144,146から順番に命令を取得する。第6の命令キュー146から命令を取得した後、シーケンサ104は、第1の命令キュー136に戻り、命令キュー136,138,140,142,144,146から順番に命令を取得し続ける。
特定の実施形態では、シーケンサ104は、スーパースカラ命令をサポートする2ウェイスーパースカラシーケンサとして第1のモードで動作する。更に、特定の実施形態では、シーケンサはまた、超長命令語(VLIM)命令をサポートする第2のモードで動作する。特に、シーケンサは、4ウェイVLIMシーケンサとして動作することができる。特定の実施形態では、第1の命令実行ユニット108は、ロード命令、格納命令、及び、算術論理演算ユニット(ALU)命令を実行することができる。第2の命令実行ユニット110は、ロード命令及びALU命令を実行することができる。更に、第3の命令実行ユニット、乗算命令、乗累算命令(MAC:multiply-accumulate instruction)、ALU命令、プログラムリダイレクト構築、及び、転送レジスタ(CR)命令を実行することができる。図1は更に、第4の命令実行ユニット114が、シフト命令、ALU命令、プログラムリダイレクト構築、及びCR命令を実行できることを示す。特定の実施形態では、プログラムリダイレクト構築は、ゼロオーバヘッドループ、分岐命令、ジャンプ(J)命令等でありうる。
図1に示すように、汎用レジスタ116は、第1のユニファイドレジスタファイル148、第2のユニファイドレジスタファイル150、第3のユニファイドレジスタファイル152、第4のユニファイドレジスタファイル154、第5のユニファイドレジスタファイル156、及び第6のユニファイドレジスタファイル158を含む。各ユニファイドレジスタファイル148,150,152,154,156,158は、メモリ102内の命令キャッシュ122,124,126,128,130,132に対応する。更に、特定の実施形態では、各ユニファイドレジスタファイル148,150,152,154,156,158は、同じ構成を有し、多くのデータオペランド及び多くのアドレスオペランドを含んでいる。
デジタルシグナルプロセッサ100の動作中、命令は、シーケンサ104によってメモリ102から取得され、指定の命令実行ユニット108,110,112,114に送られ、命令実行ユニット108,110,112,114において実行される。更に、1又は複数のオペランドが、汎用レジスタ116、例えば、ユニファイドレジスタファイル148,150,152,154,156,158のうちの1つから検索され、命令の実行中に使用される。各命令実行ユニット108,110,112,114における結果は、汎用レジスタ116へ、すなわち、ユニファイドレジスタファイル148,150,152,154,156,158のうちの1つに書き込まれる。
図2に示すように、命令実行ユニットの典型的で限定しない実施形態が示され、それは一般に200で示される。特定の実施形態では、命令実行ユニット200は、図1に示すシステム100に組み込むことができる。例えば、図2に示す命令実行ユニット200は、第4の命令実行ユニット114と交換することができる。図2に示すように、命令実行ユニット200は、シフト/符号拡張ユニット204に接続されたベクトルブロック202を含んでいる。更に、第1の4:2コンプレッサ206及び第2の4:2コンプレッサ208が、シフト/符号拡張ユニット204に接続される。特定の実施形態では、第1の3:2コンプレッサ210は、第1の4:2コンプレッサ206に接続される。更に、特定の実施形態では、第2の3:2コンプレッサ212が、第2の4:2コンプレッサ208に接続される。
図2はまた、第1の循環型加算器(CPA)214が、第1の3:2コンプレッサ210に接続されうることを示す。また、第2のCPA216が、第2の3:2コンプレッサ212に接続される。図2に示すように、実例となる実施形態では、飽和/パック/ターンケート(truncate)ユニット218が、第1のCPA214及び第2のCPA216に接続される。制御モジュール220は、シフト/符号拡張ユニット204、第1の4:2コンプレッサ206、第2の4:2コンプレッサ208、第1の3:2コンプレッサ210、第2の3:2コンプレッサ212、第1のCPA214、及び第2のCPA216に接続される。また、図2に示すように、命令実行ユニット200は、レジスタ220に接続され、圧縮演算とCPA演算との結果が、レジスタ220に書き込まれる。図2は更に、制御モジュール222に接続されるインバータ224を示す。
図3は、図2に示す命令実行ユニット200のようなデジタルシグナルプロセッサの命令実行ユニット内で多数の2の補数演算を実行する方法の典型的で限定しない実施形態を示す。ブロック300で始まり、複数のサブワード差分が計算される。特定の実施形態では、複数のサブワード差分の各々は、8ビット幅である1バイトである。更に、サブワード差分はそれぞれ、第1のワードの第1の部分と、第2のワードの第1の部分との間の差分、あるいは、第1のワードの第2の部分と、第2のワードの第2の部分との間の差分を表す。判定ステップ304に移り、シフト/符号拡張ユニットが、各サブワード差分の符号が、正であるか負であるかを判定する。
ブロック304では、負のサブワード差分のそれぞれが反転される。その後、ブロック306では、反転された各サブワード差分が、例えば、シフト/符号拡張ユニットに接続されたベクトルブロックから、シフト/符号拡張ユニットへ渡される。その後、方法は、ブロック308へ進む。一方、判定ステップ302へ戻って、サブワード差分の符号が正であれば、方法はブロック310へ進み、オリジナルのサブワード差分が、シフト/符号拡張ユニットへ渡される。その後、ロジックは、ブロック308へ進む。
ブロック308では、シフト/符号拡張ユニットが、オリジナルの各サブワード差分と、反転された各サブワード差分とを32ビットに符号拡張する。ブロック312に移動して、符号/シフト拡張器は、符号拡張されたオリジナルのサブワード差分と、符号拡張された反転されたサブワード差分とを、1対の4:2コンプレッサ、1対の3:2コンプレッサ、及び1対の循環型加算器を含むリダクションツリーへ入力する。ブロック314では、反転された各サブワード差分のための2の補数演算を達成するために、反転された各サブワード差分について“スティッキー”な1を加えながら、リダクションツリーが、入力されたサブワード差分について32ビットバイトリダクションを実行する。次に、ブロック316では、リダクションツリーが、バイトリダクション結果をレジスタに書き込む。その後、方法は、状態318で終了する。
図4に、リダクションツリー内で最大8つの2の補数演算を達成するために最大8つのスティッキーな1を加える方法が示される。この方法は、ブロック400で開始される。ブロック400において、シフト/符号拡張ユニットは、複数のバイトを受け取る。特定の実施形態では、シフト/符号拡張ユニットは、8バイトを受け取る。また、各バイトはそれぞれ8ビットを含んでいる。特定の実施形態では、バイトはそれぞれ、2つのワード間のサブワード差分に相当する。ブロック402では、シフト/符号拡張ユニットが、第1の部分及び第2の部分へ各バイトを分割する。特定の実施形態では、第1の部分は、例えばバイト0からバイト3までの4ビットからなる第1のグループを含み、第2の部分は、例えばバイト4からバイト7までの4ビットからなる第2のグループを含む。
ブロック404へ移動して、シフト/符号拡張ユニットは、バイト値の第1の部分を、第1の4:2コンプレッサへ入力する。特定の実施形態では、第1の4:2コンプレッサは、例えば、0から63までの64ビットからなる4つのロウを含む64ビットコンプレッサである。更に、特定の実施形態では、シフト/符号拡張ユニットは、例えば、第1の4:2コンプレッサの下位ビットのようなバイト値の第1の部分を、第1の4:2コンプレッサの第1のセグメントへ入力する。特定の実施形態では、第1の4:2コンプレッサの下位ビットは、例えば、各ロウについてビット0からビット31のような第1の4:2コンプレッサの各ロウの下位32ビットを含む。
ブロック406に進み、シフト/符号拡張ユニットは、バイト値の第2の部分を第2の4:2コンプレッサへ入力する。特定の実施形態では、第2の4:2コンプレッサは、64ビットコンプレッサであり、シフト/符号拡張ユニットは、例えば、第2の4:2コンプレッサの上位ビットのようなバイト値の第2の部分を、第2の4:2コンプレッサの第2の部分へ入力する。第2の4:2コンプレッサの上位ビットは、例えば各ロウのビット32からビット64のように、第2の4:2コンプレッサの各ロウの上位32ビットを含む。
ブロック408では、第1の4:2コンプレッサが、第1の4:2圧縮を行い、第1の4:2コンプレッサに接続された制御モジュールによって提供された第1のスティッキーな1ビットをキャリーインする。特定の実施形態では、第1のスティッキーな1ビットは、第1の2の補数演算を達成する。次に、ブロック410において、第2の4:2コンプレッサが、第2の4:2圧縮を行い、第2のスティッキーな1ビットをその中に生成する。特定の実施形態では、第2のスティッキーな1ビットが、例えば、ロウ1のビット31及びロウ2のビット31内のように、第2の4:2コンプレッサ内のバイト値の2の始まりに直ぐ隣接した2つの1を加えることによって生成される。そのため、第2のスティッキーな1ビットは、4:2圧縮の結果へ繰り越される。第2のスティッキーは、第2の2の補数演算を達成する。
ブロック412に進んで、第1の4:2コンプレッサは、第1の結果のセットを生成する。特定の実施形態では、第1の結果のセットは、第1のロウと第2のロウとを含む。更に、特定の実施形態では、第2のロウは、第1のロウから1ビットオフセットされる。つまり、第1の結果のセット内の第2のロウは、1ビット左にオフセットしている。そのため、第2のロウは、第2のロウのビット0の前のオフセットビットを含み、このオフセットビットは、第2のロウ内の最下位ビットである。ブロック414へ進み、第2の4:2コンプレッサが、第2の結果のセットを生成する。特定の実施形態では、第2の結果のセットは、第1のロウと第2のロウとを含んでいる。更に、特定の実施形態では、第2のロウが、第1のロウから1ビットオフセットされる。すなわち、第2の結果のセット内の第2のロウは、左に1ビットオフセットされる。
ブロック416へ進み、制御モジュールが、第3の2の補数演算を達成するために、第3のスティッキーな1ビットを、第1の結果のセットの第2のロウ、例えば、第1の結果のセットの第2のロウ内のオフセットビットに入力する。ブロック418では、制御モジュールが、第4の2の補数演算を達成するために、第4のスティッキーな1ビットを、第2の結果のセットの第2のロウ、例えば、第2の結果のセットの第2のロウ内のオフセットビットに入力する。ブロック420に進んで、第1の4:2コンプレッサが、第3のスティッキーな1ビットを含む第1の結果のセットを、第1の3:2コンプレッサへ入力する。ブロック422において、第2の4:2コンプレッサが、第4のスティッキーな1ビットを含む第2の結果のセットを、第2の3:2コンプレッサへ入力する。
ブロック424では、第1の3:2コンプレッサは、制御モジュールから入力された第1の累積値と第1の結果のセットとを用いて、第1の3:2圧縮を実行する。更に、ブロック426において、第2の3:2コンプレッサが、制御モジュールから入力された第2の累積値と第2の結果のセットとを用いて第2の3:2圧縮を実行する。更にブロック428に進んで、第1の3:2コンプレッサは、特定の実施形態において、第1のロウと、第1のロウの左へ1ビットオフセットしている第2のロウとを含む第3の結果のセットを生成する。ブロック430では、第2の3:2コンプレッサが、特定の実施形態において、第1のロウと、第1のロウの左へ1ビットオフセットしている第2のロウとを含む第4の結果のセットを生成する。
ブロック432に進んで、制御モジュールは、第5の2の補数演算を達成するために、第5のスティッキーな1ビットを、第2の結果のセットの第2のロウに加える。その後、ブロック434では、制御モジュールが、第6の2の補数演算を達成するために、第6のスティッキーな1ビットを、第4の結果のセットの第2のロウに加える。ブロック436へ進んで、第1の3:2コンプレッサは、第3の結果のセットを、第1の循環型加算器(CPA)へ入力する。ブロック438では、第2の3:2コンプレッサが、第4の結果のセットを第2のCPAへ入力する。
ブロック440に進み、第1のCPAは、第3の結果のセットについて第1のCPA演算を実行し、第6の2の補数演算を達成するために、制御モジュールによって提供される第7のスティッキーな1ビットをキャリーインする。ブロック442では、第2のCPAが、第4の結果のセットについて第2のCPA演算を実行し、第8の2の補数演算を達成するために、第8のスティッキーな1ビットをキャリーインする。次に、ブロック444では、第1のCPAが、第5の結果のセットを生成する。ブロック446では、第2のCPAが、第6の結果のセットを生成する。ブロック448に進み、第1のCPAが、第5の結果のセットを、例えば、64ビットレジスタの最初の32ビット、すなわち、64ビットレジスタの下半分である64ビットレジスタの第1の部分に書き込む。ブロック450では、第2のCPAが、例えば、64ビットレジスタの次の32ビット、すなわち、64ビットレジスタの上半分である64ビットレジスタの第2の部分に書き込む。その後、方法は、状態452で終了する。
図5は、一般に520で示されるポータブル通信デバイスの典型的で限定しない実施形態を例示する。図5に例示するように、ポータブル通信デバイスは、デジタルシグナルプロセッサ524を含むオンチップシステム522を含んでいる。特定の実施形態では、デジタルシグナルプロセッサ524は、図1に示され、本明細書で説明されるデジタルシグナルプロセッサである。更に、特定の実施形態では、デジタルシグナルプロセッサ524は、図2に例示するような命令実行ユニットを含むことができる。図5はまた、デジタルシグナルプロセッサ524及びディスプレイ528に接続されたディスプレイコントローラ526を示す。更に、入力デバイス530も、デジタルシグナルプロセッサ524に接続される。図示するように、メモリ532は、デジタルシグナルプロセッサ524に接続される。更に、コーダ/デコーダ(コデック)534が、デジタルシグナルプロセッサ524に接続されうる。スピーカ536及びマイクロホン538が、コデック534に接続される。
図5はまた、無線コントローラ540が、デジタルシグナルプロセッサ524及び無線アンテナ542に接続されうることを示す。特定の実施形態では、電源544が、オンチップシステム522に接続される。更に、特定の実施形態では、図5に例示するように、ディスプレイ528、入力デバイス530、スピーカ536、マイクロホン538、無線アンテナ542、及び電源544は、オンチップシステム522の外部にある。しかしながら、それぞれは、オンチップシステム522の構成要素に接続されている。
特定の実施形態では、デジタルシグナルプロセッサ524は、ポータブル通信デバイス520の様々な構成要素によって必要とされる機能及び動作を実行するために必要なプログラムスレッドに関連した命令を処理するために、インタリーブマルチスレッディングを利用する。例えば、無線通信セッションが無線アンテナによって確立された場合、ユーザは、マイクロホン538に向かってしゃべることができる。ユーザの音声を表わす電子信号がコデック534に送られ、そこで符号化される。デジタルシグナルプロセッサ524は、マイクロホンからの電子信号を符号化するコデック534のためのデータ処理を行なうことができる。更に、無線アンテナ542を介して受信された到来信号は、無線コントローラ540によってコデック534へ送られ、そこで復号されて、スピーカ536へ送られる。デジタルシグナルプロセッサ524は、無線アンテナ542を介して受信した信号が復号されると、コデック534のためのデータ処理を行うこともできる。
無線通信セッション中、無線通信セッション前あるいは後に、デジタルシグナルプロセッサ524は、入力デバイス530から受信された入力を処理することができる。例えば、無線通信セッション中、ユーザは、ポータブル通信デバイス520のメモリ532内に組み込まれたウェブブラウザを介してインターネットをサーフィンするために入力デバイス530及びディスプレイ528を使用するかもしれない。デジタルシグナルプロセッサ524は、本明細書で説明したような入力デバイス530、ディスプレイコントローラ526、ディスプレイ528、コデック534、及び無線コントローラ540によって使用される様々なプログラムスレッドをインタリーブして、ポータブル通信デバイス520及びその中の様々な構成要素の動作を効率的に制御する。様々なプログラムスレッドに関連した命令の多くは、1又は複数のクロックサイクル中に同時に実行される。そのため、浪費されるクロックサイクルによる電力及びエネルギーの使用量が、実質的に減少する。
図6を参照して、セルラ電話の典型的で限定しない実施形態が示される。これは、一般に620で示される。図示するように、セルラ電話620は、共に接続されているデジタルベースバンドプロセッサ624及びアナログベースバンドプロセッサ626を含むオンチップシステム622を含む。特定の実施形態では、デジタルベースバンドプロセッサ624は、例えば図1に示され本明細書で説明するようなデジタルシグナルプロセッサである。更に、特定の実施形態では、アナログベースバンドプロセッサ626も、例えば図1に示すデジタルシグナルプロセッサでありうる。特定の実施形態では、デジタルシグナルプロセッサの各々は、図2に例示するような命令実行ユニットを含むことができる。図6に例示するように、ディスプレイコントローラ628及びタッチスクリーンコントローラ630が、デジタルベースバンドプロセッサ624に接続される。一方、オンチップシステム622の外部にあるタッチスクリーンディスプレイ632は、ディスプレイコントーら628及びタッチスクリーンコントローラ630に接続されている。
図6は更に、例えば、位相交互ライン(PAL:phase alternating line)符号器、セカム(SECAM:sequential couleur a memoire)符号器、又は、全国テレビジョン方式委員会(NTSC)符号器のようなビデオ符号器634が、デジタルベースバンドプロセッサ624に接続される。更に、ビデオ増幅器636が、ビデオ符号器634及びタッチスクリーンディスプレイ632に接続される。また、ビデオポート638が、ビデオ増幅器636に接続される。図6に示すように、ユニバーサルシリアルバス(USB)コントローラ640が、デジタルベースバンドプロセッサ624に接続される。USBポート642は更にUSBコントローラ640に接続される。メモリ644及び加入者アイデンティティモジュール(SIM)カード646も、デジタルベースバンドプロセッサ624に接続される。更に、図6に示すように、デジタルカメラ648もデジタルベースバンドプロセッサ624に接続される。典型的な実施形態では、デジタルカメラ648は、電荷結合素子(CCD)カメラ又は相補性金属酸化膜半導体(CMOS)カメラである。
更に図6に例示するように、ステレオオーディオコデック650が、アナログベースバンドプロセッサ626に接続される。更に、オーディオ増幅器652も、ステレオオーディオコデック650に接続される。典型的な実施形態では、第1のステレオスピーカ654及び第2のステレオスピーカ656が、オーディオ増幅器652に接続される。図6は、マイクロホン増幅器658が、ステレオオーディオコデック650に接続されていることを示している。更に、マイクロホン660をマイクロホン増幅器658に接続することもできる。特定の実施形態では、周波数変調(FM)ラジオチューナ662が、ステレオオーディオコデック650に接続される。また、FMアンテナ664がFMラジオチューナ662に接続される。更に、ステレオヘッドホン666がステレオオーディオコデック650に接続される。
図6は更に、ラジオ周波数(RF)トランシーバ668が、アナログベースバンドプロセッサ626に接続されていることを示す。RFスイッチ670が、RFトランシーバ668及びRFアンテナ672に接続される。図6に示すように、キーパッド674が、アナログベースバンドプロセッサ626に接続される。また、マイクロホン676を備えたモノラルヘッドホンが、アナログベースバンドプロセッサ626に接続される。更に、バイブレータ678が、アナログベースバンドプロセッサ626に接続される。図6はまた、電源680が、オンチップシステム622に接続されることを示す。特定の実施形態では、電源680は、電力を必要とするセルラ電話620の様々な構成要素に電力を供給する直流(DC)電源である。更に、特定の実施形態では、電源は、充電可能なDCバッテリであるか、あるいは、交流(AC)から、AC電源に接続されたDC変圧器へ導かれるDC電源である。
特定の実施形態では、図6に示すように、タッチスクリーンディスプレイ632、ビデオポート638、USBポート642、カメラ648、第1のステレオスピーカ654、第2のステレオスピーカ656、マイクロホン660、FMアンテナ664、ステレオヘッドホン666、RFスイッチ670、RFアンテナ672、キーパッド674、モノヘッドホン676、バイブレータ678、及び電源680が、オンチップシステム622の外側に存在する。更に、特定の実施形態では、セルラ電話620に関連する別の構成要素のうちの1又は複数に関連付けられた様々なプログラムスレッドを処理するために、本明細書で説明したように、デジタルベースバンドプロセッサ624及びアナログベースバンドプロセッサ626が、インタリーブされたマルチスレッドを用いることができる。
図7を参照して、無線インターネットプロトコル(IP)電話の典型的で限定しない実施形態が示される。これは、一般に、700で示される。図示するように、無線IP電話700は、デジタルシグナルプロセッサ(DSP)704を含むオンチップシステム702を含む。特定の実施形態では、DSP704は、図1に示され、本明細書に記載のデジタルシグナルプロセッサである。更に、特定の実施形態では、デジタルシグナルプロセッサ704は、図2に例示するような命令実行ユニットを含むことができる。図7に例示するように、ディスプレイコントローラ706は、DSP704に接続され、ディスプレイ708は、ディスプレイコントローラ706に接続される。典型的な実施形態では、ディスプレイ708は液晶ディスプレイ(LCD)である。図7は更に、DSP704に接続されるキーパッド710を示す。
図7に示すように、更に、フラッシュメモリ712がDSP704に接続される。同期型DRAM(SDRAM)714、スタティックRAM(SRAM)716、及び電気的消去可能ROM(EEPROM)718も、DSP704に接続される。図7はまた、発光ダイオード(LED)720がDSP704に接続されることを示す。更に、特定の実施形態では、音声コデック722が、DSP704に接続される。増幅器724が音声コデック722に接続され、モノラルスピーカ726が増幅器724に接続される。図7は更に、モノラルヘッドホン728が音声コデック722に接続されることを示す。特定の実施形態では、モノラルヘッドホン728は、マイクロホンを含んでいる。
図7はまた、無線ローカルエリアネットワーク(WLAN)ベースバンドプロセッサ730が、DSP704に接続されることを例示している。RFトランシーバ732は、WLANベースバンドプロセッサ730に接続され、RFアンテナ734は、RFトランシーバ732に接続される。特定の実施形態では、Bluetooth(登録商標)コントローラ736もDSP704に接続され、Bluetoothアンテナ738がコントローラ736に接続される。図7は更に、USBポート740が、DSP704に接続されることを示す。更に、電源742がオンチップシステム702に接続され、オンチップシステム702を経由して、無線IP電話700の様々な構成要素に電力を供給する。
特定の実施形態では、図7に示すように、ディスプレイ708、キーパッド710、LED720、モノスピーカ726、モノヘッドホン728、RFアンテナ734、Bluetoothアンテナ738、USBポート740、及び電源742が、オンチップシステム702の外部に存在する。しかしながら、これらの構成要素の各々は、オンチップシステムの1又は複数の構成要素に接続される。更に、特定の実施形態では、IP電話700に関連する異なる構成要素の1又は複数の関連した様々なプログラムスレッドを処理するために、デジタルシグナルプロセッサ704は、本明細書に記載するように、インタリーブされたマルチスレッドを用いることができる。
図8は、一般に800で示されるポータブルデジタルアシスタント(PDA)の典型的で限定しない実施形態を例示する。図示するように、PDA800は、デジタルシグナルプロセッサ(DSP)804を含むオンチップシステム802を含んでいる。特定の実施形態では、DSP804は、図1で示され、本明細書で説明されているデジタルシグナルプロセッサである。更に、特定の実施形態では、デジタルシグナルプロセッサ804は、図2で例示するような命令実行ユニットを含むことができる。図8に示すように、タッチスクリーンコントローラ806及びディスプレイコントローラ808が、DSP804に接続される。更に、タッチスクリーンディスプレイ810は、タッチスクリーンコントローラ806及びディスプレイコントローラ808に接続される。図8はまた、キーパッド812がDSP804に接続されることを示す。
図8において更に示すように、フラッシュメモリ814がDSP804に接続される。更に、読取専用メモリ(ROM)816、DRAM(DRAM)818、及びEEPROM(EEPROM)820がDSP804に接続される。図8はまた、赤外線データ結合(IrDA)ポート822をDSP804に接続できることを示す。更に、特定の実施形態では、デジタルカメラ824がDSP804に接続される。
図8に示すように、特定の実施形態では、ステレオオーディオコデック826がDSP804に接続される。第1のステレオ増幅器828が、ステレオオーディオコデック826に接続され、第1のステレオスピーカ830が、第1のステレオ増幅器828に接続される。更に、マクロフォン増幅器832が、ステレオオーディオコデック826に接続され、マイクロホン834が、マイクロホン増幅器832に接続される。図8は更に、第2のステレオ増幅器836が、ステレオオーディオコデック826に接続され、第2のステレオスピーカ838が、第2のステレオ増幅器836に接続されることを示す。特定の実施形態では、ステレオヘッドホン840はまた、ステレオオーディオコデック826に接続される。
図8はまた、802.11コントローラ842が、DSP804に接続され、802.11アンテナ844が、802.11コントローラ842に接続されることを例示する。更に、Bluetoothコントローラ846が、DSP804に接続され、Bluetoothアンテナ848が、Bluetoothコントローラ846に接続される。図8に示すように、USBコントローラ850がDSP804に接続され、USBポート852がUSBコントローラ850に接続される。更に、例えば、マルチメディアカード(MMC)又はセキュアデジタルカード(SD)のようなスマートカード854が、DSP804に接続される。更に、図8に示されるように、電源856がオンチップシステム802に接続され、オンチップシステム802を経由してPDA800の様々な構成要素に電力を供給することができる。
特定の実施形態では、図8に示すように、ディスプレイ810、キーパッド812、IrDAポート822、デジタルカメラ824、第1のステレオスピーカ830、マイクロホン834、第2のステレオスピーカ838、ステレオヘッドホン840、802.11アンテナ844、Bluetoothアンテナ848、USBポート852、及び電源850が、オンチップシステム802の外部に存在する。しかしながら、これらの構成要素の各々は、オンチップシステム802上の1又は複数の構成要素に接続される。更に、特定の実施形態では、デジタルシグナルプロセッサ804が、ポータブルデジタルアシスタント800に関連した異なる構成要素の1又は複数に関連した様々なプログラムスレッドを処理するために、本明細書に記載されたインタリーブされたマルチスレッドを使用することができる。
図9を参照して、例えばMP3プレーヤのようなオーディオファイルプレーヤの典型的で限定しない実施形態が示される。これは一般に900として示される。図示するように、オーディオファイルプレーヤ900は、デジタルシグナルプロセッサ(DSP)904を含むオンチップシステム902を含む。特定の実施形態では、DSP904は、図1で示され、本明細書に記載されたデジタルシグナルプロセッサである。更に、特定の実施形態では、デジタルシグナルプロセッサ904は、図2に例示するような命令実行ユニットを含むことができる。図9に例示するように、ディスプレイコントローラ906はDSP904に接続され、ディスプレイ908はディスプレイコントローラ906に接続される。典型的な実施形態では、ディスプレイ908は液晶ディスプレイ(LCD)である。図9は更に、DSP904に接続されるキーパッド910を示す。
図9に更に示すように、フラッシュメモリ912及び読取専用メモリ(ROM)914が、DSP904に接続される。更に、特定の実施形態では、オーディオコデック916が、DSP904に接続される。増幅器918が、オーディオコデック916に接続され、モノスピーカ920が増幅器918に接続される。図9は更に、オーディオコデック916に接続されるマイク端子922及びステレオ入力924を示す。特定の実施形態では、ステレオヘッドホン926もまたオーディオコデック916に接続される。
図9は更に、USBポート928とスマートカード930とがDSP904に接続できることを示す。更に、電源932がオンチップシステム902に接続され、オンチップシステム902を経由してオーディオファイルプレーヤ900の様々な構成要素に電力を供給することができる。
特定の実施形態では、図9に示すように、ディスプレイ908、キーパッド910、モノスピーカ920、マイク端子922、ステレオ入力924、ステレオヘッドホン926、USBポート928、及び電源932が、オンチップシステム902の外部に存在する。しかしながら、これら構成要素の各々は、オンチップシステム902上の1又は複数の構成要素に接続される。さらに、特定の実施形態では、デジタルシグナルプロセッサ904は、オーディオファイルプレーヤ900に関連した異なる構成要素の1又は複数に関連した様々なプログラムスレッドを処理するために本明細書に記載のインタリーブされたマルチスレッドを使用することができる。
本明細書に記載の構造の構成によって、本明細書に記載の方法及びシステムは、多数のバイトリダクション演算を同時に行いながら、最大8つの2の補数演算を達成する方法を提供する。そのため、2の補数演算を達成するための追加ハードウェアに対する要求が取り除かれる。
当業者であれば、更に、ここで開示された実施形態に関連して記載された様々な説明的論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子工学ハードウェア、コンピュータソフトウェア、あるいはこれらの組み合わせとして実現されることを理解するであろう。ハードウェアとソフトウェアとの相互互換性を明確に説明するために、様々に例示された部品、ブロック、モジュール、回路、およびステップが、それらの機能に関して一般的に記述された。それら機能がハードウェアとして又はソフトウェアとして実現されているかは、特定のアプリケーション及びシステム全体に課せられている設計制約に依存する。当業者であれば、各特定のアプリケーションに応じて変更した方法で上述した機能を実施しうる。しかしながら、この適用判断は、本発明の範囲から逸脱したものと解釈されるべきではない。
ここで開示された実施形態に関連して記述された方法やアルゴリズムのステップは、ハードウェアや、プロセッサによって実行されるソフトウェアモジュールや、これらの組み合わせによって直接的に具現化される。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、あるいは当該技術分野で知られているその他の型式の記憶媒体に収納されうる。典型的な記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合される。または、記憶媒体はプロセッサに統合されうる。このプロセッサと記憶媒体は、ASIC内に存在することができる。ASICは、ユーザ端末内に存在することもできる。あるいはこのプロセッサと記憶媒体は、ユーザ端末内のディスクリート部品として存在しうる。
開示された実施形態における上述の記載は、当該技術分野におけるいかなる人であっても、本発明の活用または利用を可能とするように提供される。これらの実施形態への様々な変形例もまた、当業者に対しては明らかであって、ここで定義された一般的な原理は、本発明の主旨または範囲を逸脱せずに他の実施形態にも適用されうる。このように、本発明は、ここで示された実施形態に制限されるものではなく、ここで記載された原理と新規の特徴に一致した最も広い範囲に相当するものを意図している。

Claims (29)

  1. 2の補数演算を達成する方法であって、
    複数のバイト値を受け取ることと、
    前記複数のバイト値を第1の部分及び第2の部分に分割することと、
    前記第1の部分を、第1の4対2コンプレッサの第1のセグメントに入力することと、
    前記第1の部分について第1の4対2圧縮演算を行い、第1のロウと、前記第1のロウから1ビットオフセットした第2のロウとを有する第1の結果のセットを生成することと、
    1からなる第1の値を送り、第1の2の補数演算を達成することと
    を備える方法。
  2. 前記第2の部分を、第2の4対2コンプレッサの第2のセグメントに入力することと、
    1からなる第2の値を、前記第2の部分に送り、第2の2の補数演算を達成するために、1からなる2つの値を、前記第2の部分のすぐ右側に加えることと、
    前記第2の部分について第2の4対2圧縮演算を行い、第1のロウと、前記第1のロウから1ビットオフセットした第2のロウとを有する第2の結果のセットを生成することと
    を更に備える請求項1に記載の方法。
  3. 第3の2の補数演算を達成するために、1からなる第3の値を、前記第1の結果のセットの前記第2のロウのオフセットビットに入力することを更に備える請求項1に記載の方法。
  4. 第4の2の補数演算を達成するために、1からなる第4の値を、前記第2の結果のセットの第2のロウのオフセットビットに入力することを更に備える請求項3に記載の方法。
  5. 前記第1の結果のセットを、第1の累積値とともに、第1の3対2コンプレッサに入力することと、
    前記第1の結果のセットと前記累積値とについての第1の3対2圧縮演算を行い、第1のロウと、前記第1のロウから1ビットオフセットした第2のロウとを有する第3の結果のセットを生成することと
    を更に備える請求項4に記載の方法。
  6. 前記第2の結果のセットを、第2の累積値とともに、第2の3対2コンプレッサに入力することと、
    前記第2の結果のセットと前記累積値とについて第2の3対2圧縮演算を行い、第1のロウと、前記第1のロウから1ビットオフセットした第2のロウとを有する第4の結果のセットを生成することと
    を更に備える請求項5に記載の方法。
  7. 第5の2の補数演算を達成するために、1からなる第5の値を、前記第3の結果のセットの第2のロウのオフセットビットに挿入することを更に備える請求項6に記載の方法。
  8. 第6の2の補数演算を達成するために、1からなる第6の値を、前記第4の結果のセットの前記第2のロウのオフセットビットに挿入することを更に備える請求項7に記載の方法。
  9. 前記第3の結果のセットを、第1の循環型加算器(CPA)に入力することと、
    前記第3の結果のセットについて第1のCPA演算を実行することと
    を更に備える請求項8に記載の方法。
  10. 第7の2の補数演算を達成するために、1からなる第7の値を送ることと、
    第5の結果のセットを生成することと
    を更に備える請求項9に記載の方法。
  11. 前記第4の結果のセットを、第2の循環型加算器(CPA)に入力することと、
    前記第4の結果のセットについて第2のCPA演算を実行することと
    を更に備える請求項10に記載の方法。
  12. 第8の2の補数演算を達成するために、1からなる第8の値を送ることと、
    第6の結果のセットを生成することと
    を更に備える請求項11に記載の方法。
  13. 前記第5の結果のセットを、レジスタの第1の部分に書き込むことと、
    前記第6の結果のセットを、前記レジスタの第2の部分に書き込むことと
    を更に備える請求項12に記載の方法。
  14. 1又は複数の2の補数演算を達成する方法であって、
    8つのサブワード差分バイト値を判定することと、
    サブワード差分バイト値の各々の符号を判定することと、
    負である前記8つのサブワード差分バイト値の各々を反転し、反転されたサブワード差分バイト値のセットを生成することと、
    正である前記8つのサブワード差分バイト値の各々を、リダクションツリーに入力することと、
    前記反転されたサブワード差分バイト値の各々を、前記リダクションツリーに入力することと
    を備える方法。
  15. 前記8つのサブワード差分バイト値に関する複数のリダクション演算を実行しながら、最大8つの1を入力することによって、最大8つの2の補数演算を達成することを更に備える請求項14に記載の方法。
  16. 反転されたサブワード差分バイト値のセットのうちの少なくとも1つに関するリダクション演算を実行しながら、1からなる値を送ることを更に備える請求項15に記載の方法。
  17. 前記複数のリダクション演算のうちの少なくとも1つによって生成された結果のセットのオフセットビットに、1からなる値を入力することを更に備える請求項15に記載の方法。
  18. 前記複数のリダクション演算のうちの少なくとも1つの間、互いに2つの1を加え、前記リダクション演算によって生成された結果に、1からなる値を送ることを更に備える請求項15に記載の方法。
  19. 命令実行ユニットであって、
    第1の4対2コンプレッサと、
    前記第1の4対2コンプレッサに接続された制御モジュールとを備え、
    前記制御モジュールは、
    8バイト値を、4バイト値からなる第1のグループと、4バイト値からなる第2のグループとに分割するロジックと、
    前記第1の4対2コンプレッサを用いて、4バイト値からなる前記第1のグループを、第1のロウと第2のロウとを有する第1の結果のセットへ圧縮するロジックと、
    第1の2の補数演算を達成するために、4バイト値からなる前記第1のグループを圧縮しながら、1からなる第1の値を送るロジックと、
    第2の2の補数演算を達成するために、前記第1の結果のセット内の前記第2のロウのオフセットビットへ、1からなる第2の値を入力するロジックと
    を備える命令実行ユニット。
  20. 前記制御モジュールに接続された第2の4対2コンプレッサを更に備え、
    前記制御モジュールは、
    前記第2の4対2コンプレッサを用いて、4バイト値からなる前記第2のグループを、第1のロウと第2のロウとを有する第2の結果のセットに圧縮するロジックと、
    第3の2の補数演算を達成するために、4バイト値からなる前記第2のグループを圧縮しながら、1からなる第3の値を、4バイト値からなる前記第2のグループへ送るために、前記第2の4対2コンプレッサ内で互いに2つの1を加えるロジックと、
    第4の2の補数演算を達成するために、前記第2の結果のセット内で前記第2のロウのオフセットビットへ、1からなる第4の値を入力するロジックと
    を更に備える請求項19に記載の命令実行ユニット。
  21. 前記制御モジュールに接続された第1の3対2コンプレッサと、
    前記制御モジュールに接続された第2の3対2コンプレッサとを更に備え、
    前記制御モジュールは、
    前記第1の3対2コンプレッサを用い、前記第1の結果のセットと、第1の累積値とを圧縮して、第1のロウと第2のロウとを有する第3の結果のセットを生成するロジックと、
    前記第2の3対2コンプレッサを用い、前記第2の結果のセットと、第2の累積値とを圧縮して、第1のロウと第2のロウとを有する第4の結果のセットを生成するロジックと、
    第5の2の補数演算を達成するために、1からなる第5の値を、前記第3の結果のセット内の前記第2のロウのオフセットビットに入力するロジックと、
    第6の2の補数演算を達成するために、1からなる第6の値を、前記第4の結果のセット内の前記第2のロウのオフセットビットに入力するロジックと
    を更に備える請求項20に記載の命令実行ユニット。
  22. 第1の循環型加算器と、
    第2の循環型加算器とを更に備え、
    前記制御モジュールは、
    前記第1の循環型加算器を用いて、前記第3の結果のセットの第1のロウ及び第2のロウを加えるロジックと、
    第7の2の補数演算を達成するために、前記第3の結果のセットの前記第1のロウと前記第2のロウとを加えながら、1からなる第7の値を送るロジックと、
    前記第2の循環型加算器を用いて、前記第4の結果のセットの前記第1のロウと前記第2のロウとを加えるロジックと、
    第8の2の補数演算を達成するために、前記第4の結果のセットの前記第1のロウと前記第2のロウとを加えながら、1からなる第8の値を送るロジックと
    を更に備える請求項21に記載の命令実行ユニット。
  23. デジタルシグナルプロセッサであって、
    メモリと、
    前記メモリに反応するシーケンサと、
    前記メモリに接続されたレジスタファイルと、
    前記シーケンサに反応する命令実行ユニットとを備え、
    前記命令実行ユニットは、
    第1の4対2コンプレッサと、
    第2の4対2コンプレッサと、
    前記第1の4対2コンプレッサに接続された第1の3対2コンプレッサと、
    前記第2の4対2コンプレッサに接続された第2の3対2コンプレッサと、
    前記第1の3対2コンプレッサに接続された第1の循環型加算器と、
    前記第2の3対2コンプレッサに接続された第2の循環型加算器と、
    前記第1の4対2コンプレッサ、前記第2の4対2コンプレッサ、前記第1の3対2コンプレッサ、前記2の3対2コンプレッサ、前記第1の循環型加算器、及び、前記第2の循環型加算器に接続された制御モジュールとを備え、
    前記制御モジュールは、
    8バイト値を、4バイト値からなる第1のグループと、4バイト値からなる第2のグループとに分割するロジックと、
    前記第1の4対2コンプレッサを用い、4バイト値からなる前記第1のグループを、第1のロウと第2のロウとを有する第1の結果のセットに圧縮するロジックと、
    第1の2の補数演算を達成するために、4バイト値からなる前記第1のグループを圧縮しながら、1からなる第1の値を送るロジックと、
    第2の2の補数演算を達成するために、前記第1の結果のセット内の前記第2のロウのオフセットビットへ、1からなる第2の値を入力するロジックと
    を備えるデジタルシグナルプロセッサ。
  24. 前記制御モジュールは、
    前記第2の4対2コンプレッサを用い、4バイト値からなる前記第2のグループを、第1のロウと、前記第1のロウから1ビットオフセットした第2のロウとを有する第2の結果のセットに圧縮するロジックと、
    第3の2の補数演算を達成するために、4バイト値からなる前記第2のグループを圧縮しながら、1からなる第3の値を、4バイト値からなる前記第2のグループへ送るために、前記第2の4対2コンプレッサ内で互いに2つの1を加えるロジックと、
    第4の2の補数演算を達成するために、1からなる第4の値を、前記第2の結果のセット内の前記第2のロウのオフセットビットに入力するロジックと
    を更に備える請求項23に記載のデジタルシグナルプロセッサ。
  25. 前記制御モジュールは、
    前記第1の3対2コンプレッサを用い、前記第1の結果のセットと、第1の累積値とを圧縮して、第1のロウと第2のロウとを有する第3の結果のセットを生成するロジックと、
    前記第2の3対2コンプレッサを用い、前記第2の結果のセットと、第2の累積値とを圧縮して、第1のロウと第2のロウとを有する第4の結果のセットを生成するロジックと、
    第5の2の補数演算を達成するために、1からなる第5の値を、前記第3の結果のセット内の前記第2のロウのオフセットビットに入力するロジックと、
    第6の2の補数演算を達成するために、1からなる第6の値を、前記第4の結果のセット内の前記第2のロウのオフセットビットに入力するロジックと
    を更に備える請求項24に記載のデジタルシグナルプロセッサ。
  26. 前記制御モジュールは、
    前記第1の循環型加算器を用いて、前記第3の結果のセットの第1のロウ及び第2のロウを加えるロジックと、
    第7の2の補数演算を達成するために、前記第3の結果のセットの前記第1のロウと前記第2のロウとを加えながら、1からなる第7の値を送るロジックと、
    前記第2の循環型加算器を用いて、前記第4の結果のセットの前記第1のロウと前記第2のロウとを加えるロジックと、
    第8の2の補数演算を達成するために、前記第4の結果のセットの前記第1のロウと前記第2のロウとを加えながら、1からなる第8の値を送るロジックと
    を更に備える請求項25に記載のデジタルシグナルプロセッサ。
  27. ポータブル通信デバイスであって、
    デジタルシグナルプロセッサを備え、
    前記デジタルシグナルプロセッサは、
    メモリと、
    前記メモリに反応するシーケンサと、
    前記メモリに接続されたレジスタファイルと、
    前記シーケンサに反応する命令実行ユニットとを備え、
    前記命令実行ユニットは、
    第1の4対2コンプレッサと、
    第2の4対2コンプレッサと、
    前記第1の4対2コンプレッサに接続された第1の3対2コンプレッサと、
    前記第2の4対2コンプレッサに接続された第2の3対2コンプレッサと、
    前記第1の3対2コンプレッサに接続された第1の循環型加算器と、
    前記第2の3対2コンプレッサに接続された第2の循環型加算器と、
    前記第1の4対2コンプレッサ、前記第2の4対2コンプレッサ、前記第1の3対2コンプレッサ、前記2の3対2コンプレッサ、前記第1の循環型加算器、及び、前記第2の循環型加算器に接続された制御モジュールとを備え、
    前記制御モジュールは、
    前記第1の4対2コンプレッサ、前記第2の4対2コンプレッサ、前記第1の3対2コンプレッサ、前記第2の3対2コンプレッサ、前記第1の循環型加算器、及び、第2の循環型加算器を用いて8バイト値を処理しながら、最大8つの2の補数演算を達成するロジックを備えるポータブル通信デバイス。
  28. プロセッサデバイスであって、
    複数のバイト値を受け取る手段と、
    前記複数のバイト値を、第1の部分のバイト値と、第2の部分のバイト値とに分割する手段と、
    前記第1の部分のバイト値を、第1の4対2コンプレッサの下半分に入力する手段と、
    前記第1の部分のバイト値について第1の4対2圧縮演算を行い、第1のロウと、前記第1のロウから1ビットオフセットした第2のロウとを有する第1の結果のセットを生成する手段と、
    1からなる値を送り、第1の2の補数演算を達成する手段と
    を備えるプロセッサデバイス。
  29. プロセッサデバイスであって、
    8つのサブワード差分バイト値を判定する手段と、
    サブワード差分バイト値の各々の符号を判定する手段と、
    負である各サブワード差分バイト値を反転し、反転されたサブワード差分バイト値を生成する手段と、
    正である各サブワード差分バイト値を、リダクションツリーに入力する手段と、
    前記反転された各サブワード差分バイト値を、前記リダクションツリーに入力する手段と、
    前記8つのサブワード差分バイト値に関する複数のリダクション演算を実行しながら、最大8つの1を加えることによって、最大8つの2の補数演算を達成する手段と
    を備えるプロセッサデバイス。
JP2010172404A 2005-05-25 2010-07-30 デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法 Pending JP2011023013A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/137,070 US8234319B2 (en) 2005-05-25 2005-05-25 System and method of performing two's complement operations in a digital signal processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2008513790A Division JP2008542885A (ja) 2005-05-25 2006-05-25 デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法

Publications (1)

Publication Number Publication Date
JP2011023013A true JP2011023013A (ja) 2011-02-03

Family

ID=37054742

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008513790A Pending JP2008542885A (ja) 2005-05-25 2006-05-25 デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法
JP2010172404A Pending JP2011023013A (ja) 2005-05-25 2010-07-30 デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2008513790A Pending JP2008542885A (ja) 2005-05-25 2006-05-25 デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法

Country Status (7)

Country Link
US (1) US8234319B2 (ja)
EP (1) EP1886253A1 (ja)
JP (2) JP2008542885A (ja)
KR (1) KR100955555B1 (ja)
CN (1) CN101223501A (ja)
TW (1) TWI329835B (ja)
WO (1) WO2006128074A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819513B (zh) * 2010-02-11 2012-05-23 华南理工大学 一种由补码求原码绝对值的方法
CN101976241B (zh) * 2010-09-26 2013-01-09 用友软件股份有限公司 识别码生成方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02115929A (ja) * 1988-10-25 1990-04-27 Nec Corp 乗算器
JPH0651956A (ja) * 1992-06-01 1994-02-25 Sharp Corp 差分絶対値累積加算回路
JPH09269891A (ja) * 1996-04-01 1997-10-14 Hitachi Ltd 部分積加算方法および装置、浮動小数点乗算方法および装置、浮動小数点積和演算方法および装置
JPH10124484A (ja) * 1996-10-16 1998-05-15 Hitachi Ltd データプロセッサ及びデータ処理システム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63182738A (ja) 1987-01-26 1988-07-28 Matsushita Electric Ind Co Ltd 乗算回路
US4926371A (en) * 1988-12-28 1990-05-15 International Business Machines Corporation Two's complement multiplication with a sign magnitude multiplier
TW421757B (en) * 1996-06-06 2001-02-11 Matsushita Electric Ind Co Ltd Arithmetic processor
TW396321B (en) 1998-08-05 2000-07-01 Nat Science Council Lower-error fixed-width two's complement parallel multiplier
JP3139466B2 (ja) * 1998-08-28 2001-02-26 日本電気株式会社 乗算器及び積和演算器
US6523050B1 (en) * 1999-08-19 2003-02-18 National Semiconductor Corporation Integer to floating point conversion using one's complement with subsequent correction to eliminate two's complement in critical path
US6629115B1 (en) 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US7054895B2 (en) * 2001-06-21 2006-05-30 Ligos Corporation System and method for parallel computing multiple packed-sum absolute differences (PSAD) in response to a single instruction
US7313585B2 (en) * 2003-08-30 2007-12-25 Hewlett-Packard Development Company, L.P. Multiplier circuit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02115929A (ja) * 1988-10-25 1990-04-27 Nec Corp 乗算器
JPH0651956A (ja) * 1992-06-01 1994-02-25 Sharp Corp 差分絶対値累積加算回路
JPH09269891A (ja) * 1996-04-01 1997-10-14 Hitachi Ltd 部分積加算方法および装置、浮動小数点乗算方法および装置、浮動小数点積和演算方法および装置
JPH10124484A (ja) * 1996-10-16 1998-05-15 Hitachi Ltd データプロセッサ及びデータ処理システム

Also Published As

Publication number Publication date
EP1886253A1 (en) 2008-02-13
TWI329835B (en) 2010-09-01
JP2008542885A (ja) 2008-11-27
WO2006128074A1 (en) 2006-11-30
US8234319B2 (en) 2012-07-31
CN101223501A (zh) 2008-07-16
KR20080015450A (ko) 2008-02-19
US20060282238A1 (en) 2006-12-14
TW200713023A (en) 2007-04-01
KR100955555B1 (ko) 2010-04-30

Similar Documents

Publication Publication Date Title
JP6073385B2 (ja) スカラー/ベクトル命令を使用したデータ処理システムおよび方法
RU2409837C2 (ru) Система и способ подсчета начальных нулевых разрядов и подсчета начальных единичных разрядов в цифровом процессоре сигналов
US9235418B2 (en) Register files for a digital signal processor operating in an interleaved multi-threaded environment
MX2007012584A (es) Archivos de registro no divididos unificados para un procesador de senales digital que opera en un ambiente intercalado de multi-ejecucion.
US8688761B2 (en) Arithmetic logic and shifting device for use in a processor
JP2011023013A (ja) デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法
US20060230257A1 (en) System and method of using a predicate value to access a register file

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120508