JP2007299279A - 演算装置、プロセッサシステム、及び映像処理装置 - Google Patents
演算装置、プロセッサシステム、及び映像処理装置 Download PDFInfo
- Publication number
- JP2007299279A JP2007299279A JP2006127761A JP2006127761A JP2007299279A JP 2007299279 A JP2007299279 A JP 2007299279A JP 2006127761 A JP2006127761 A JP 2006127761A JP 2006127761 A JP2006127761 A JP 2006127761A JP 2007299279 A JP2007299279 A JP 2007299279A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- operation mode
- address
- unit
- 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
Links
- 238000004364 calculation method Methods 0.000 claims description 32
- 238000007906 compression Methods 0.000 claims description 12
- 230000006835 compression Effects 0.000 claims description 12
- 230000006837 decompression Effects 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 abstract 1
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 29
- 238000000034 method Methods 0.000 description 20
- 238000001514 detection method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 239000000470 constituent Substances 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】プロセッサからコプロセッサへのデータ転送の効率を向上出来る演算装置、プロセッサシステム、及び映像処理装置を提供する。
【解決手段】データ保持可能な第1領域と、第2動作モードにおいて設けられ、データ保持を禁止された第2領域とを備えたレジスタ22と、前記第2動作モードにおいてアクセスされた前記第2領域に対応するデータのアドレスを生成し、該アドレスに対応するデータをメインプロセッサ2の第1メモリ11から直接読み出す制御部21と、前記第1動作モードにおいて、前記アクセスされた前記第1領域に保持されるデータを用いて演算を行い、前記第2動作モードにおいて、前記制御部21で読み出された前記データを用いて演算を行う演算部23とを具備する。
【選択図】 図1
【解決手段】データ保持可能な第1領域と、第2動作モードにおいて設けられ、データ保持を禁止された第2領域とを備えたレジスタ22と、前記第2動作モードにおいてアクセスされた前記第2領域に対応するデータのアドレスを生成し、該アドレスに対応するデータをメインプロセッサ2の第1メモリ11から直接読み出す制御部21と、前記第1動作モードにおいて、前記アクセスされた前記第1領域に保持されるデータを用いて演算を行い、前記第2動作モードにおいて、前記制御部21で読み出された前記データを用いて演算を行う演算部23とを具備する。
【選択図】 図1
Description
この発明は、演算装置、プロセッサシステム、及び映像処理装置に関する。例えば、プロセッサとコプロセッサとを有する構成において、プロセッサからコプロセッサへのデータ転送方法に関する。
従来、音声コーデックなどのマルチメディア処理においては、積和(MAC)処理が多用されている。積和処理とは、ある時刻において入力信号の乗算を行ってこれを蓄積し、次の時刻において次の入力信号の乗算を行い、更にその乗算結果と蓄積されている前の時刻の乗算結果とを加算して蓄積する処理のことを言う。
また、マルチメディア処理用LSIにおいてはプロセッサとコプロセッサを設けた構成が知られている。この場合、必要なデータをプロセッサがコプロセッサへ転送し、コプロセッサにおいて積和処理が行われる(例えば特許文献1参照)。
しかしながら上記従来の構成であると、プロセッサからコプロセッサへのデータの転送に時間がかかり、演算処理の効率が悪いという問題があった。
特開2001−075804号公報
この発明は、演算処理の効率を向上出来る演算装置、プロセッサシステム、及び映像処理装置を提供する。
この発明の一態様に係る演算装置は、レジスタの第1領域に対してアクセスされる第1動作モードと、前記レジスタの第2領域に対してアクセスされる第2動作モードとを備えた演算装置であって、データ保持可能な前記第1領域と、前記第2動作モードにおいて設けられ、データ保持を禁止された前記第2領域とを備えた前記レジスタと、前記第2動作モードにおいて、アクセスされた前記第2領域に対応するデータのアドレスを生成し、該アドレスに対応するデータを読み出す制御部と、前記第1動作モードにおいては、前記アクセスされた前記第1領域に保持されるデータを用いて演算を行い、前記第2動作モードにおいては、前記制御部で読み出された前記データを用いて演算を行う演算部とを具備する。
また、この発明の一態様に係るプロセッサシステムは、データを保持するメモリ装置を備える第1演算装置と、第1レジスタを備え且つ前記第1演算装置から与えられる演算命令に応じて前記データの演算を行う第2演算装置とを具備するプロセッサシステムであって、前記演算命令は、第1動作モードにおいて前記第1レジスタの第1領域に対するアクセス命令を含み、第2動作モードにおいて前記第1レジスタの第2領域に対するアクセス命令を含み、前記第2演算装置は、データ保持可能な前記第1領域と、前記第2動作モードにおいて設けられ、データ保持を禁止された前記第2領域とを備えた前記第1レジスタと、前記第2動作モードにおいて、アクセスされた前記第2領域に対応する前記メモリ装置におけるアドレスを生成し、該アドレスに対応するデータを前記メモリ装置から読み出す制御部と、前記第1動作モードにおいては、前記アクセスされた前記第1領域に保持されるデータを用いて演算を行い、前記第2動作モードにおいては、前記制御部で読み出された前記データを用いて演算を行う演算部とを具備する。
更に、この発明の一態様に係る映像処理装置は、音声の圧縮処理及び伸張処理を行う音声処理回路と、映像の圧縮処理及び伸張処理を行う映像処理回路とを具備し、前記音声処理回路は、データを保持するメモリ装置を備える第1演算装置と、レジスタを備え、且つ前記第1演算装置から与えられる演算命令に応じて前記データの演算を行う第2演算装置とを備え、前記演算命令は、第1動作モードにおいて前記レジスタの第1領域に対するアクセス命令を含み、第2動作モードにおいて前記レジスタの第2領域に対するアクセス命令を含み、前記第2演算装置は、データ保持可能な前記第1領域と、前記第2動作モードにおいて設けられ、データ保持を禁止された前記第2領域とを備えた前記レジスタと、前記第2動作モードにおいて、アクセスされた前記第2領域に対応する前記メモリ装置におけるアドレスを生成し、該アドレスに対応するデータを前記メモリ装置から読み出す制御部と、前記第1動作モードにおいては、前記アクセスされた前記第1領域に保持されるデータを用い、前記第2動作モードにおいては、前記制御部で読み出された前記データを用いて、前記音声の圧縮処理及び伸張処理に必要な演算を行う演算部とを備える。
この発明によれば、演算処理の効率を向上出来る演算装置、プロセッサシステム、及び映像処理装置を提供出来る。
以下、この発明の実施形態を図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
この発明の第1の実施形態に係る演算装置及びプロセッサシステムについて、図1を用いて説明する。図1は、本実施形態に係るシステムLSIのブロック図である。
図示するように、本実施形態に係るシステムLSI1は、メインプロセッサ2及びコプロセッサ(coprocessor)3を備えている。メインプロセッサ2は、プロセッサコア10、第1メモリ11、第2メモリ12、及びデータ転送部13を備えている。第1メモリ11は、プロセッサコア10及びコプロセッサ3において用いられるデータを保持する。第2メモリ12は、プロセッサコア10において用いられる演算命令を保持する。データ転送部13は、第1メモリ11及びコアプロセッサ3に対するデータのロードまたはストアを行う。プロセッサコア10は、データ転送部13により第1メモリ11から読み出されたデータについて、第2メモリ12から読み出された演算命令を実行する。そして、演算結果を第1メモリ11にストアするようにデータ転送部13に命令する。またプロセッサコア10は、コプロセッサ3に対して演算を命令する。
コプロセッサ3は、プロセッサコア10の命令に従って演算を行う。コプロセッサ3は、データ制御部20、メモリアクセス部21、レジスタ群22、及び演算部23を備えている。データ制御部20は、プロセッサコア10により与えられる演算命令に応答して、レジスタ群22からデータを演算部23に転送し、またメモリアクセス部21に対して第1メモリ11からデータを読み出すよう命令する。メモリアクセス部21は、データ制御部20の命令に応答して、第1メモリ11からデータを読み出し、演算部23へ出力する。メモリアクセス部21の詳細については後述する。レジスタ群22は、各々がデータ保持可能な複数のレジスタを備えている。本実施形態では、レジスタ群22が16個のレジスタを備える場合を例に挙げて説明し、それぞれのレジスタをレジスタ0〜レジスタ15と呼ぶことにする。勿論、レジスタの数は16個に限られず、例えば8個や32個などであっても良い。レジスタ0〜レジスタ15には、第1メモリ11内のデータが、メインプロセッサ2におけるデータ転送部13によってロードされる。演算部23は、レジスタ群22または/及びメモリアクセス部21から与えられるデータに基づいて演算を行う。
図2は演算部23のブロック図である。図示するように演算部23は、乗算器30、加算器31、及び蓄積部32を備えている。乗算器30は、レジスタ群22または/及びメモリアクセス部21から与えられるデータの乗算を行う。加算器31は、乗算器30における乗算結果と、蓄積部32に蓄積されるデータとの加算を行う。蓄積部32は、加算器における加算結果を蓄積する。すなわち、演算部23は積和(MAC)処理を行う。勿論、演算部23の行う演算は積和処理に限らず、その他の演算処理であっても良い。
図3は、メモリアクセス部21のブロック図である。図示するようにメモリアクセス部21は、情報レジスタ40、アドレス発生部50、及び読み出し部60を備えている。情報レジスタ40は、設定情報保持部41及びベースアドレス保持部42を有している。設定情報保持部41は、アドレスオフセット値、メモリマップトレジスタ数、及びデータ形式の情報を保持する。ベースアドレス保持部42は、ベースアドレスを保持する。なおアドレスオフセット値、メモリマップトレジスタ数、及びベースアドレスについては後述する。データ形式とは、扱われるデータの形式に関する情報であり、例えば負の値を使用するか否かの情報等である。
アドレス発生部50は、乗算器51及び加算器52を備えている。乗算器51は、データ制御部20から与えられるレジスタ順位nと、設定情報保持部41に保持されるアドレスオフセット値とを乗算する。レジスタ順位nについては後に説明する。加算器52は、乗算器51における乗算結果と、ベースアドレス保持部42に保持されるベースアドレスとを加算する。
読み出し部60は、メインプロセッサ2の第1メモリ11において、加算器52における加算結果に対応するアドレスに保持されているデータを読み出す。そして読み出したデータを演算部23へ出力する。
上記構成のシステムLSI1は、2つの動作モードを有している。以下、2つの動作モードを第1動作モード及び第2動作モードと呼ぶことにする。第1動作モード及び第2動作モード、並びに上記のアドレスオフセット値、メモリマップトレジスタ数、ベースアドレス、及びレジスタ順位nについて説明する。
図4は、プロセッサコア10からデータ制御部20に与えられる演算命令の内容を示す概念図である。図示するように、演算命令は例えば16ビットの固定長の命令であり、演算内容及び2つのレジスタ番号を含んでいる。レジスタ番号は、レジスタ群22におけるレジスタ0〜15のいずれかを指定する。レジスタ番号の各々は4ビットの固定長のデータである。例えば演算内容が積和処理であり、レジスタ番号がそれぞれ“0”、“1”であった場合、この演算命令は、レジスタ0に保持されているデータとレジスタ1に保持されているデータを用いて積和処理をせよ、との意味である。
図5は、第1動作モードにおけるレジスタ群22及び演算部23のブロック図である。第1動作モードとは、レジスタ群22に含まれる全てのレジスタ0〜15に対して、データの保持が許可された動作モードである。図中では全てのレジスタ0〜15にデータが保持されている場合を示しているが、勿論、レジスタ0〜15の一部にのみデータが保持されている場合もあり得る。そしてデータ制御部20は、レジスタ群22において、プロセッサコア10から与えられる演算命令に含まれるレジスタ番号に応じたレジスタのデータを演算部23へ出力する。例えばレジスタ番号=“0000”、“0011”であったとすると、データ制御部20はレジスタ0及びレジスタ3に保持されるデータを演算部23へ出力し(図5参照)、これらのデータに基づいて演算部23が積和処理を行う。
次に第2動作モードについて図6を用いて説明する。図6は、第2動作モードにおけるレジスタ群22、演算部23、及びメモリアクセス部21のブロック図である。第2動作モードとは、レジスタ群22に含まれるレジスタ0〜15のいずれかにつき、データの保持を禁止される動作モードである。図6では、レジスタ8〜15がデータ保持を禁止された場合を示している。以下、データ保持を禁止されたレジスタをメモリマップトレジスタ(memory mapped register)と呼ぶことにし、図面においては図6に示すように斜線を付して図示する。プロセッサコア10から与えられる演算命令により選択されるレジスタがメモリマップトレジスタでない場合には、第1動作モードと同様、選択されたレジスタからデータが読み出される。他方、メモリマップトレジスタが選択された場合には、メモリマップトレジスタからデータは読み出されない。図6はこのような場合について示している。例えば演算命令におけるレジスタ番号が“0000”、“1010”であったとする。すると、レジスタ番号=“1010”に対応するレジスタ10はメモリマップトレジスタである。従ってデータ制御部20は、レジスタ10からデータを読み出さない。その代わりにデータ制御部20は、メモリアクセス部21に対してメインプロセッサ2における第1メモリ11からデータを読み出すように命令する。そして、メモリアクセス部21で読み出されたデータと、レジスタ0に保持されるデータとを用いて、演算部23は積和処理を行う。メモリマップトレジスタとして使用されるレジスタの各々は、第1メモリ11におけるいずれかのアドレスに対応づけられている。この対応関係をメモリアクセス部21は保持している。
メモリマップトレジスタと第1メモリ11との対応関係の一例について、図7を用いて説明する。図7は、レジスタ8〜15のブロック図と、それに対応する第1メモリ11のメモリ空間の概念図である。
図示するように、レジスタ8から順に第1メモリ11のメモリ空間が割り当てられている。レジスタ8〜15の各々が32ビットのビット長を有し、第1メモリ11においてレジスタ8に相当する領域の先頭アドレスが“0x201000”であったと仮定する。すると、レジスタ8は第1メモリ11におけるアドレス“0x201000”〜“0x201003”の領域に対応する。レジスタ9はアドレス“0x201004”〜“0x201007”に対応する。レジスタ10はアドレス“0x201008”〜“0x20100B”に対応する。以下レジスタ15まで同様である。なお、アドレスの最初に記載する“0x”とは、当該アドレスが16進数で表現されていることを示す。
前述のベースアドレスとは、メモリマップトレジスタとして使用されるレジスタのうち、最もレジスタ番号の若いレジスタの、第1メモリ11における先頭アドレスのことである。従って図7の例であると、レジスタ8に対応する先頭アドレス“0x201000”がベースアドレスである。
また前述のアドレスオフセット値とは、メモリマップトレジスタとして使用されるレジスタのレジスタ番号が“+1”した場合の、第1メモリ11におけるアドレスの変化量を示す。従って図7の例であると、“0x000004”がアドレスオフセット値である。なお、アドレスオフセット値は、アドレスの変化量そのものでなく、例えばデータのビット長で表されていても良い。すなわち、“0x000004”の代わりにデータ幅=“32ビット”で表現しても良い。アドレスオフセット値とデータ幅との関係は次のようになる。データ幅=“8ビット”の場合、アドレスの変化量は“0x000001”である。データ幅=“16ビット”の場合、アドレスの変化量は“0x000002”である。データ幅=“64ビット”の場合、アドレスの変化量は“0x000008”である。
更に前述のレジスタ順位nとは、演算命令によって選択されたレジスタがメモリマップトレジスタとして使用されるものであった場合、それが最も若いレジスタ番号のレジスタから何番目であるかを示す。例えば図7の例であると、レジスタ8はメモリマップトレジスタにおいて最も若いレジスタ番号を有するので、n=0である。レジスタ9はn=1である。レジスタ10はn=2である。以下レジスタ15まで同様である。
更に前述のメモリマップトレジスタ数とは、レジスタ群22内においてメモリマップトレジスタとして使用されるレジスタの数のことである。従って図7の例であると、メモリマップトレジスタ数は“8”である。より具体的には、設定情報保持部41は、メモリマップトレジスタ数を示す情報として、データMASK=(メモリマップトレジスタ数−1)の値を保持する。例えばメモリマップトレジスタ数が8個の場合、MASK=“2b1000”−“2b0001”=“2b0111”を保持する。メモリマップトレジスタ数が0、2、4、8の場合のレジスタ群22の様子について図8に示す。図8はレジスタ群22のブロック図である。なお、MASKの最初に記載する“2b”とは、2進数で表現されていることを示す。
図示するように、レジスタ0〜15のいずれもメモリマップトレジスタとして使用しない場合、メモリマップトレジスタ数はゼロであり、MASK=“2b1111”である。レジスタ14、15をメモリマップトレジスタとして使用する場合、メモリマップトレジスタ数は“2”であるから、MASK=“2b0001”である。レジスタ12〜15をメモリマップトレジスタとして使用する場合、メモリマップトレジスタ数は“4”であるから、MASK=“2b0011”である。レジスタ8〜15をメモリマップトレジスタとして使用する場合、メモリマップトレジスタ数は“8”であるから、MASK=“2b0111”である。上記のように、メモリマップトレジスタとしてのレジスタは、レジスタ番号の遅い順から使用される。
次に、上記構成のシステムLSI1の動作について、特にコプロセッサ3の動作に着目して説明する。図9はシステムLSI1において積和処理を行う際のフローチャートである。
図示するように、処理に先立ってまずデータ制御部20は、情報レジスタ40に各種情報を設定する(ステップS10)。すなわち、上記説明したアドレスオフセット値、マップトレジスタ数、データ形式、及びベースアドレスが情報レジスタ40に保持される。
次に、メインプロセッサ2のプロセッサコア10から、図4で説明した構成を有する積和処理を行う旨の演算命令が、コプロセッサ3のデータ制御部20に与えられる(ステップS11)。データ制御部20は、設定値情報保持部41に保持されるマップトレジスタ数を参照して、演算命令におけるレジスタ番号に対応するレジスタがメモリマップトレジスタとして使用されているか否かを判定する(ステップS12)。
ステップS12において、使用されていないと判定された場合(ステップS13、NO)、データ制御部20はレジスタ番号に対応するレジスタからデータを読み出し、演算部23へ出力する(ステップS14)。またはレジスタ番号に対応するレジスタに対して、データを演算部23へ出力するように命令する。
ステップS12において、使用されていると判定された場合(ステップS13、YES)、データ制御部20は、第1メモリ11において選択されたレジスタに対応する領域のアドレスを計算する(ステップS15)。ステップS15の詳細について図10を用いて説明する。図10はステップS15の詳細を示すフローチャートである。
まずメモリアクセス部21のアドレス発生部50が、情報レジスタ40のベースアドレス保持部42及び設定情報保持部41にそれぞれ保持されているベースアドレス及びアドレスオフセット値を読み出す(ステップS20)。またデータ制御部20は、情報レジスタ40の設定情報保持部41に保持されているメモリマップトレジスタ数を読み出す(ステップS21)。
次にデータ制御部20は、メモリマップトレジスタ数と、演算命令におけるレジスタ番号とから、当該レジスタがメモリマップトレジスタにおいて何番目のレジスタであるかを判定する(ステップS22)。そしてレジスタ順位nをアドレス発生部50へ出力する。
そしてアドレス発生部は、アドレスオフセット値とレジスタ順位nとを乗算し、乗算結果にベースアドレスを加算する(ステップS23)。この加算結果が、第1メモリ11におけるアドレスとなる。
図9に戻って説明を続ける。ステップS15の後、メモリアクセス部21の読み出し部60は、第1メモリ11においてステップS15で得られたアドレスが割り当てられた領域からデータを読み出し、読み出したデータを演算部23へ出力する(ステップS16)。そして、演算部23が与えられたデータについて積和処理を行う(ステップS17)。
上記の処理の具体例を以下に説明する。例えばレジスタ群22が図11のとおりであったとする。図11はレジスタ群22のブロック図である。図示するように、16個のレジスタのうち、レジスタ8〜15がメモリマップトレジスタとして使用される。そして各レジスタのビット長は32ビットであり、各レジスタと第1メモリ11におけるアドレスとの対応関係は図7と同様であったとする。図11においてレジスタ8〜15の横に付記した数字は、当該レジスタが対応する第1メモリ11の領域の先頭アドレスである。
まずデータ制御部20は、情報レジスタ40に各種情報を設定する(ステップS10)。すなわち、設定情報保持部41にアドレスオフセット値(OFST)として“0x000004”を格納し、マップトレジスタ数として8個、すなわちMASK=“2b0111”を格納する。更にベースアドレス保持部42にベースアドレス(BASE)として“0x201000”を格納する。ステップS10の処理が行われた際の情報レジスタの概念図を図12に示す。
次に、メインプロセッサ2のプロセッサコア10から、積和処理を行う旨の演算命令がコプロセッサ3のデータ制御部20に与えられる(ステップS11)。演算命令の一例を図13に示す。図13は演算命令の概念図である。図示するように演算命令では、レジスタ番号“0001”、“1010”が選択されている。すなわち、当該演算命令は、レジスタ0内のデータとレジスタ10内のデータとの積和処理の命令である。
演算命令を受け取ったデータ制御部20は、設定値情報保持部41からメモリマップトレジスタ数を読み出す。すると、メモリマップトレジスタ数は8個であるから、レジスタ8〜15はメモリマップトレジスタとして使用されていることが分かる。その結果データ制御部20は、選択されたレジスタ0はメモリマップトレジスタではなく、レジスタ10はメモリマップトレジスタであることを把握する(ステップS12)。
従ってデータ制御部20は、レジスタ0からデータを読み出して演算部23へ出力する(ステップS14)。他方、レジスタ10に関しては、対応する第1メモリ11における領域のアドレスを計算する(ステップS15)。アドレス計算時のメモリアクセス部21の様子を図14に示す。図14はメモリアクセス部21のブロック図である。
まずアドレス発生部50の加算器52が、ベースアドレス保持部42からベースアドレスBASE=“0x201000”を読み出す。また乗算器51が、設定情報保持部41からアドレスオフセット値OFST=“0x000004”を読み出す(ステップS20)。またデータ制御部20は、設定情報保持部41からメモリマップトレジスタ数MASK=“2b0111”を読み出す(ステップS21)。なおステップS12の処理においてすでにデータ制御部20はメモリマップトレジスタ数を参照しているので、それを記憶していればステップS21は省略することも出来る。前述のとおり、メモリマップトレジスタ数から、当該レジスタ10がメモリマップトレジスタにおいて何番目のレジスタであるかを判定することが出来る(ステップS22)。すると、図11から明らかなように、レジスタ8を0番目とすると、レジスタ10は2番目である。従ってデータ制御部20は、レジスタ順位n=2を乗算器51へ出力する。そしてアドレス発生部50がアドレスを計算する(ステップS23)。すなわち、乗算器51が(OFST×n)=“0x000004”×2=“0x000008”を計算する。引き続き加算器52が(BASE+“0x000008”)=“0x201008”を計算する。これにより、レジスタ10に対応する第1メモリ11におけるアドレスが算出される。
加算器52における加算結果は読み出し部60に与えられる。読み出し部60は、第1メモリ11におけるアドレス“0x201008”に保持されるデータを読み出し、演算部23へ出力する(ステップS16)。そして演算部23にて積和処理が行われる。
以上のように、この発明の第1の実施形態に係るシステムLSIであると、システムLSIの処理効率を向上出来る。本実施形態に係るシステムLSIは、コプロセッサ3において、メモリマップトレジスタ及びメモリアクセス部21を設けている。そして、メモリマップトレジスタに対してアクセスがなされた場合には、メモリアクセス部21がメインプロセッサ2の第1メモリ11から直接データを読み出す。従って、データの読み出し時間を縮小出来、システムLSIの処理効率を向上出来る。この点につき、図15を用いて説明する。図15は、メモリアクセス部21を有しない従来の構成の場合と、本実施形態に係る構成の場合の、1回の積和処理に必要な処理のタイミングチャートである。
まず従来の構成の場合について説明する。まず、積和処理に必要な2つのデータのうち、一方はレジスタ内に保持され、他方は保持されていなかったとする。すると、まずレジスタから一方のデータについて読み出す。他方のデータはレジスタに保持されていないので、次のサイクルにてメインプロセッサからコプロセッサのレジスタにデータがロードされる。そして次のサイクルで、メインプロセッサからコプロセッサにロードされたデータをレジスタから読み出す。その後、ようやく積和処理が行われる。これらの処理を行うのに要した時間がΔt1であったとする。
これに対して本実施形態であると、まず演算命令を受けた際にデータ制御部20がメモリマップトレジスタに対するアクセスか否かを判定する。そして、メモリマップトレジスタに対するものでない場合にはレジスタ群22のいずれかからデータを読み出し、メモリマップトレジスタに対するものである場合にはメモリアクセス部21が第1メモリ11からデータを読み出す。この処理は同一サイクルにて行うことが出来、次のサイクルには積和処理を行うことが出来る。そのため、これらの処理に必要な時間Δt2は、時間Δt1に比べて大幅に短い。
音声コーデックなどのマルチメディア処理においてコプロセッサ3に対して与えられる命令は、演算命令よりもデータのロード命令の方が圧倒的に多いことが通常である。従って、演算器を豊富に用い、且つ複雑に配置したとしても、データの供給が間に合わないことが頻発する。しかし本実施形態であると、データロードの速度を従来に比べて飛躍的に短縮出来る。従って、特にマルチメディア処理用LSIにおいて処理効率を大幅に向上出来る。
また、マルチメディア処理用LSIにおいては、メインプロセッサ2及びコプロセッサ3はパイプライン処理を行うのが通常である。図16は、メインプロセッサ2及びコプロセッサ3の処理の流れを示すタイミングチャートである。図示するように、メインプロセッサ2はAステージからEステージまでの5つの処理ステージを有している。またコプロセッサ3はFステージからJステージまでの5つの処理ステージを有している。各処理サイクルにおいて、AステージからEステージまでの処理ステージとFステージからJステージまでの処理ステージは同時に行われる。そして、最初の処理ステージ(Aステージ及びFステージ)が終了すると、次のサイクルにてAステージ及びFステージの処理が再び開始される。
従来構成であると、例えば第3のサイクルにおいてコプロセッサで積和処理を行う場合、遅くとも直前の第2のサイクルにおいてデータがコプロセッサにロードされていなければならない。もしロードが間に合わなければ、第3のサイクルにおけるコプロセッサのパイプライン処理はストール(stall)する。一旦発生したストールは、後のサイクルに対しても悪影響を及ぼし、処理速度が遅延する。
しかし本実施形態に係る構成であると、直前のサイクルにおいてデータがロードされていなくても、当該サイクルにおいて直接メインプロセッサからデータをロードするため、パイプライン処理がストールすることを防止できる。
次に、この発明の第2の実施形態に係る演算装置及びプロセッサシステムについて説明する。本実施形態は、上記第1の実施形態において説明したコプロセッサ3を複数有するプロセッサシステムに関するものである。図17は、本実施形態に係るシステムLSIのブロック図である。
図示するように本実施形態に係るシステムLSI1は、メインプロセッサ2、4つのコプロセッサ3、及びバス4を備えている。メインプロセッサ2及びコプロセッサ3の構成及び動作は上記第1の実施形態で説明したとおりである。メインプロセッサ2とコプロセッサ3との間の命令及びデータはバス4を介して送受信される。勿論、コプロセッサ3の数は4個に限定されず、例えば2個、または8個以上であっても良い。
上記のように、複数のコプロセッサ3を有するLSIであっても、上記第1の実施形態は適用出来る。また、コプロセッサ3の数が増えるほどメインプロセッサ2との間のデータロード命令は増えるため、上記第1の実施形態で説明した効果が顕著に得られる。
次に、この発明の第3の実施形態に係る映像処理装置について説明する。本実施形態は、上記第1または第2の実施形態に係るシステムLSI1を備えた映像処理用LSIに関するものである。図18は本実施形態に係る映像処理用LSIのブロック図である。
図示するようにLSI70は、全体制御用モジュール80、ビデオ圧縮/伸張モジュール90、オーディオ圧縮/伸張モジュール100、動き検出モジュール110、ビットストリーム処理用モジュール120、インターフェース130、及びバス140を備えている。
全体制御用モジュール80は、ビデオ圧縮/伸張モジュール90、オーディオ圧縮/伸張モジュール100、動き検出モジュール110、ビットストリーム処理用モジュール120、及びインターフェース130の動作を、バス140を介して制御する。
ビデオ圧縮/伸張モジュール90は、映像データの圧縮及び伸張処理を行う。モジュール90は、ビデオ処理用プロセッサ91、VLC/VLD(Variable Length Coder/Decoder)ハードウェアエンジン92、DCT/Q/IDCT/IQハードウェアエンジン93、及びME/MCハードウェアエンジン94を備えている。なお、DCTは離散コサイン変換、Qは量子化、IDCTは逆離散コサイン変換、IQは逆量子化、MEは動き検出、MCは動き補償の意味である。ビデオ処理用プロセッサ91は、ハードウェアエンジン92〜94の動作を制御する。ハードウェアエンジン92は、映像データのデコード及びエンコードを行う。ハードウェアエンジン93は、特に離散コサイン変換、量子化、逆離散コサイン変換、及び逆量子化処理を行う。ハードウェアエンジン94は、動き検出及び動き補償に関する処理を行う。
オーディオ圧縮/伸張モジュール100は、音声データの圧縮及び伸張処理を行う。モジュール100は、オーディオ処理用メインプロセッサ101、オーディオ処理用コプロセッサ102、及び入出力用ハードウェアエンジン103を備えている。メインプロセッサ101は、オーディオ処理用コプロセッサ102、及び入出力用ハードウェアエンジン103の動作を制御する。コプロセッサ102は、メインプロセッサ101から演算命令及びデータを受け取り、音声処理に必要な演算を行う。音声処理に必要な演算とは、例えば加算、減算、論理演算、シフト演算、連結シフト演算、積和演算、乗算等である。ハードウェアエンジン103は、音声データの入出力処理を司る。
動き検出モジュール110は、動き検出用プロセッサ111及びブロックマッチハードウェアエンジン112を備えている。動き検出用プロセッサ111はハードウェアエンジン112の動作を制御する。ハードウェアエンジン112は、例えば(8×8)ピクセルのブロックマッチング演算を行う。これにより映像中における物体の動きを検出し、その結果をハードウェアエンジン94へ出力する。
ビットストリーム処理用モジュール120は、ビットストリーム処理用プロセッサ121及び入出力用ハードウェアエンジン121を備えている。プロセッサ121は、外部からストリーミングにより与えられるデータを処理し、また外部へストリーミングにより出力すべきデータを処理する。ハードウェアエンジン122はデータの入出力を司る。
インターフェース130は、LSI70と外部との間のデータの授受を司る。
上記構成において、オーディオ処理用メインプロセッサ101及びオーディオ処理用コプロセッサ102内に、上記第1または第2の実施形態で説明したメインプロセッサ2及びコプロセッサ3が設けられる。すなわち、音声の圧縮または伸張に必要なデータが第1メモリ11及びレジスタ群22に保持される。そして演算部23において、上記の加算、減算、論理演算、シフト演算、連結シフト演算、積和演算、乗算等の演算処理が行われる。
以上のように、上記第1、第2の実施形態で説明した構成は、映像処理用LSIに適用することが出来る。そして、特に音声処理の処理効率を向上出来る。
上記説明したように、この発明の第1乃至第3の実施形態に係る構成であると、演算器に投入されるデータのスループットが上がり、コプロセッサの演算性能を向上出来る。また、演算に必要なデータがコプロセッサのレジスタに保持されていない場合であっても、演算命令内においてメモリマップトレジスタを指定することで、命令密度を向上出来る。すなわち、従来構成であると、必要なデータがレジスタに保持されていない場合には、必要なデータがレジスタにロードされてから改めて演算命令を発行する必要がある。しかし本実施形態であると、メモリマップトレジスタを指定することで、第1メモリ11からデータを直接読み出して演算を行うことが出来る。
なお、上記実施形態ではレジスタ群22に含まれるレジスタ数が16個の場合について説明した。しかし、これは演算命令におけるレジスタ番号指定フィールドが4ビットであるからであり、例えば5ビットであればレジスタ数を32個に出来、6ビットであれば64個にすることが出来る。
また上記実施形態では、図6において一方のみがメモリマップトレジスタに対応している場合について説明したが、勿論、2つのデータの両方がメモリマップトレジスタに対応していても良いし、逆に両方がメモリマップトレジスタに対応していない場合であっても良い。また演算命令によって選択されるレジスタ数は2個に限らず、3個以上で有っても良い。
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
1…システムLSI、2…メインプロセッサ、3…コプロセッサ、4…バス、10…プロセッサコア、11…第1メモリ、12…第2メモリ、13…データ転送部、20…データ制御部、21…メモリアクセス部、22…レジスタ群、23…演算部、30、51…乗算器、31、52…加算器、32…蓄積部、40…情報レジスタ、41…設定情報保持部、42…ベースアドレス保持部、50…アドレス発生部、60…読み出し部
Claims (5)
- レジスタの第1領域に対してアクセスされる第1動作モードと、前記レジスタの第2領域に対してアクセスされる第2動作モードとを備えた演算装置であって、
データ保持可能な前記第1領域と、前記第2動作モードにおいて設けられ、データ保持を禁止された前記第2領域とを備えた前記レジスタと、
前記第2動作モードにおいて、アクセスされた前記第2領域に対応するデータのアドレスを生成し、該アドレスに対応するデータを読み出す制御部と、
前記第1動作モードにおいては、前記アクセスされた前記第1領域に保持されるデータを用いて演算を行い、前記第2動作モードにおいては、前記制御部で読み出された前記データを用いて演算を行う演算部と
を具備することを特徴とする演算装置。 - データを保持するメモリ装置を備える第1演算装置と、第1レジスタを備え且つ前記第1演算装置から与えられる演算命令に応じて前記データの演算を行う第2演算装置とを具備するプロセッサシステムであって、
前記演算命令は、第1動作モードにおいて前記第1レジスタの第1領域に対するアクセス命令を含み、第2動作モードにおいて前記第1レジスタの第2領域に対するアクセス命令を含み、
前記第2演算装置は、データ保持可能な前記第1領域と、前記第2動作モードにおいて設けられ、データ保持を禁止された前記第2領域とを備えた前記第1レジスタと、
前記第2動作モードにおいて、アクセスされた前記第2領域に対応する前記メモリ装置におけるアドレスを生成し、該アドレスに対応するデータを前記メモリ装置から読み出す制御部と、
前記第1動作モードにおいては、前記アクセスされた前記第1領域に保持されるデータを用いて演算を行い、前記第2動作モードにおいては、前記制御部で読み出された前記データを用いて演算を行う演算部と
を具備することを特徴とするプロセッサシステム。 - 前記第1レジスタは、各々が前記データ保持可能な複数の第2レジスタを含み、前記第2動作モードにおいては前記第2レジスタのいずれかが前記第2領域として機能し、残りが前記第1領域として機能し、
前記演算命令は、前記演算部における演算内容と、いずれかの前記第2レジスタを選択する旨の選択命令とを含み、
前記制御部は、前記第2領域として機能する前記第2レジスタの数、及び前記第2領域として機能する前記第2レジスタと前記メモリ装置内の前記アドレスとの関係を保持する設定値保持部と、
前記選択命令により選択される前記第2レジスタが前記第2領域として機能する場合、前記設定値保持部に保持される前記関係を用いて、該第2レジスタの前記メモリ装置内における前記アドレスを発生するアドレス発生部と、
前記アドレス発生部で発生された前記アドレスに基づいて、前記メモリ装置から前記データを読み出し、前記演算部へ出力する読み出し部と
を備えることを特徴とする請求項2記載のプロセッサシステム。 - 前記設定値保持部は、複数の前記第2レジスタが前記第2領域として機能する場合に、先頭の前記第2レジスタに対応する前記メモリ装置内の先頭アドレスと、前記第2レジスタ間における前記アドレスの差分情報とを保持し、
前記アドレス発生部は、前記選択命令に基づいて、前記設定値保持部に保持される前記先頭アドレスと、必要な前記差分情報とを加算することにより前記アドレスを算出する
ことを特徴とする請求項3記載のプロセッサシステム。 - 音声の圧縮処理及び伸張処理を行う音声処理回路と、
映像の圧縮処理及び伸張処理を行う映像処理回路と
を具備し、前記音声処理回路は、データを保持するメモリ装置を備える第1演算装置と、
レジスタを備え、且つ前記第1演算装置から与えられる演算命令に応じて前記データの演算を行う第2演算装置と
を備え、前記演算命令は、第1動作モードにおいて前記レジスタの第1領域に対するアクセス命令を含み、第2動作モードにおいて前記レジスタの第2領域に対するアクセス命令を含み、
前記第2演算装置は、データ保持可能な前記第1領域と、前記第2動作モードにおいて設けられ、データ保持を禁止された前記第2領域とを備えた前記レジスタと、
前記第2動作モードにおいて、アクセスされた前記第2領域に対応する前記メモリ装置におけるアドレスを生成し、該アドレスに対応するデータを前記メモリ装置から読み出す制御部と、
前記第1動作モードにおいては、前記アクセスされた前記第1領域に保持されるデータを用い、前記第2動作モードにおいては、前記制御部で読み出された前記データを用いて、前記音声の圧縮処理及び伸張処理に必要な演算を行う演算部と
を備えることを特徴とする映像処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006127761A JP2007299279A (ja) | 2006-05-01 | 2006-05-01 | 演算装置、プロセッサシステム、及び映像処理装置 |
US11/741,146 US7877428B2 (en) | 2006-05-01 | 2007-04-27 | Processor system including processor and coprocessor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006127761A JP2007299279A (ja) | 2006-05-01 | 2006-05-01 | 演算装置、プロセッサシステム、及び映像処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007299279A true JP2007299279A (ja) | 2007-11-15 |
Family
ID=38649574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006127761A Pending JP2007299279A (ja) | 2006-05-01 | 2006-05-01 | 演算装置、プロセッサシステム、及び映像処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7877428B2 (ja) |
JP (1) | JP2007299279A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021503119A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリベースの構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
JP2021503129A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 機能的類似性に基づいてグループ化された構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
US11579806B2 (en) | 2017-11-14 | 2023-02-14 | International Business Machines Corporation | Portions of configuration state registers in-memory |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011064961A (ja) * | 2009-09-17 | 2011-03-31 | Toshiba Corp | 音声再生装置および方法 |
US9721319B2 (en) * | 2011-10-14 | 2017-08-01 | Mastercard International Incorporated | Tap and wireless payment methods and devices |
US20130318119A1 (en) * | 2012-05-22 | 2013-11-28 | Xocketts IP, LLC | Processing structured and unstructured data using offload processors |
EP2946296A4 (en) * | 2013-01-17 | 2016-11-16 | Xockets Ip Llc | DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY |
US20150261535A1 (en) * | 2014-03-11 | 2015-09-17 | Cavium, Inc. | Method and apparatus for low latency exchange of data between a processor and coprocessor |
US10664276B2 (en) * | 2016-09-28 | 2020-05-26 | International Business Machines Corporation | Remote command invocation using a register for storing a command and an attention bit indicating command has been issued |
US20200349524A1 (en) | 2019-04-30 | 2020-11-05 | Michael J. Phillips | Compensation management system and method |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5212775A (en) * | 1990-01-04 | 1993-05-18 | National Semiconductor Corporation | Method and apparatus for observing internal memory-mapped registers |
JPH0744401A (ja) | 1993-08-03 | 1995-02-14 | Hitachi Ltd | 論理集積回路およびそのデータ処理システム |
TW243568B (en) * | 1993-11-16 | 1995-03-21 | At & T Corp | Digital signal processor with an embedded viterbi co-processor |
JP2000276352A (ja) | 1999-03-08 | 2000-10-06 | Texas Instr Inc <Ti> | パイプライン保護 |
JP3616556B2 (ja) * | 1999-06-29 | 2005-02-02 | 株式会社東芝 | 拡張命令を処理する並列プロセッサ |
US20020091826A1 (en) * | 2000-10-13 | 2002-07-11 | Guillaume Comeau | Method and apparatus for interprocessor communication and peripheral sharing |
-
2006
- 2006-05-01 JP JP2006127761A patent/JP2007299279A/ja active Pending
-
2007
- 2007-04-27 US US11/741,146 patent/US7877428B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021503119A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | メモリベースの構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
JP2021503129A (ja) * | 2017-11-14 | 2021-02-04 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 機能的類似性に基づいてグループ化された構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
JP7190798B2 (ja) | 2017-11-14 | 2022-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 機能的類似性に基づいてグループ化された構成状態レジスタを提供するコンピュータ・プログラム、コンピュータ・システム、およびコンピュータ実装方法 |
US11579806B2 (en) | 2017-11-14 | 2023-02-14 | International Business Machines Corporation | Portions of configuration state registers in-memory |
Also Published As
Publication number | Publication date |
---|---|
US7877428B2 (en) | 2011-01-25 |
US20070255776A1 (en) | 2007-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007299279A (ja) | 演算装置、プロセッサシステム、及び映像処理装置 | |
US8869147B2 (en) | Multi-threaded processor with deferred thread output control | |
JP5478068B2 (ja) | 改善されたパイプライン化デジタル信号プロセッサ | |
US8189935B2 (en) | Data processing device, image encoding/decoding device and data processing system | |
US7409607B2 (en) | Memory address generating apparatus, processor having the same, and memory address generating method | |
TW200521702A (en) | Parallel processing array | |
JP2002041285A (ja) | データ処理装置およびデータ処理方法 | |
JPH0984004A (ja) | 画像処理装置 | |
JP2008299648A (ja) | プログラムおよび情報処理装置 | |
US8093485B2 (en) | Method and system for prefetching sound data in a sound processing system | |
US6313767B1 (en) | Decoding apparatus and method | |
JP2008186345A (ja) | データ処理方法及びデータ処理装置 | |
US8688947B1 (en) | Aligned data access | |
JP2009093513A (ja) | 命令ビット長削減方法 | |
WO2020093968A1 (zh) | 卷积处理引擎及控制方法和相应的卷积神经网络加速器 | |
WO2000031658A1 (fr) | Processeur et dispositif de traitement d'image | |
JP2010182000A (ja) | 画像処理装置、プログラム | |
KR101239272B1 (ko) | 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기 | |
JP2003296724A5 (ja) | ||
CN112035167B (zh) | 使用可配置硬件流传输单元进行流传输的装置和方法 | |
JP7017542B2 (ja) | 映像復号装置および映像復号方法 | |
US20070153133A1 (en) | Address generation for video processing | |
JP4896839B2 (ja) | マイクロプロセッサおよびデータ処理方法 | |
US5978895A (en) | Method for speeding mathematical operations in a processor core | |
US7984204B2 (en) | Programmable direct memory access controller having pipelined and sequentially connected stages |