JP2005182659A - Vliw型dsp,及びその動作方法 - Google Patents

Vliw型dsp,及びその動作方法 Download PDF

Info

Publication number
JP2005182659A
JP2005182659A JP2003425838A JP2003425838A JP2005182659A JP 2005182659 A JP2005182659 A JP 2005182659A JP 2003425838 A JP2003425838 A JP 2003425838A JP 2003425838 A JP2003425838 A JP 2003425838A JP 2005182659 A JP2005182659 A JP 2005182659A
Authority
JP
Japan
Prior art keywords
execution
code
vliw
nth
dsp
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
JP2003425838A
Other languages
English (en)
Other versions
JP4202244B2 (ja
Inventor
Kazuhiko Tabei
和彦 田部井
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.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2003425838A priority Critical patent/JP4202244B2/ja
Priority to US11/008,927 priority patent/US7552313B2/en
Publication of JP2005182659A publication Critical patent/JP2005182659A/ja
Application granted granted Critical
Publication of JP4202244B2 publication Critical patent/JP4202244B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

【課題】 並列度が低いVLIW型DSPのために開発されたプログラムを並列度が高いVLIW型DSPの上で実行する場合に,並列度が高いVLIW型DSPの性能を有効に生かして,該プログラムを高速に実行するための技術を提供する。
【解決手段】本発明によるVLIW型DSPは,第1〜第nプログラムをそれぞれに記憶する第1〜第nバンク(2)を備えたプログラムメモリ(1)と,前記第1〜第nプログラムに含まれるコードのうち,実行されるべき実行コードが保存されているアドレスをそれぞれに指定する第1〜第nアドレスカウンタ(4)と,第1〜第nアドレスカウンタ(4)によってそれぞれに指定された前記アドレスに保存されている前記実行コードを,それぞれ第1〜第nバンク(2)から受け取り,受け取った前記実行コードを結合して一の再配置化コードを生成するフェッチブロック(5)と,フェッチブロック(5)から前記再配置化コードを受け取り,前記再配置化コードを,一の命令実行サイクルで実行するコード実行回路(6〜10)とを含む。
【選択図】 図1

Description

本発明は,VLIW型DSP(very long instruction word digital signal processor),及びその動作方法に関し,特に,VLIW型DSPにおいてバイナリトランスレーションを好適に実現するための技術に関する。
VLIW型DSPとは,一のコード(命令語)あたり,複数の要素命令(ロード、ストア、演算、分岐命令など)を含むコードで記述されているプログラムを実行可能なDSPである。VLSI型DSPは,複数の要素命令を一の命令実行サイクルで実行可能であり,データを高速に処理することができる。VLIW型DSPの並列度,即ち,一の命令実行サイクルで実行可能な複数の要素命令の数は,増加する傾向にある。
VLIW型DSPの開発においては,ある特定のDSP向けに作成されたソフトウェアを,他のDSPの上で実行可能にするバイナリトランスレーションが重要である。あるDSPの次世代のDSPを開発した場合に,開発された次世代のDSPのために新たなソフトウェアを開発することは,コストやTAT(turn around time)の面から好適でない。次世代のDSPは,古い世代のDSPのソフトウェアを実行可能に構成されていることが好適である。
かかるバイナリトランスレーションは,とりわけ,リアルタイムでマルチタスク的な信号処理を行うことが要求されるデジタルシグナルプロセッサ(DSP),例えば,音声データと映像データのデータ処理を同時に行うDSPにおいて重要である。このようなDSPは,実行効率を高めるために,それに用いられるソフトウェアの開発には,高度なプログラミングが要求される。このために,C言語などの高級言語を用いたプログラミングではなく,ハンドアセンブル(即ち,人手によるアセンブラ言語,又は機械語でのソフトウェア作成)が行われる。しかし,ハンドアセンブルによるソフトウェアの構築は,多くの工数が必要とされるため,DSPの開発ごとに行われることは好適でない。ハンドアセンブルによってソフトウェアを開発する必要があるDSPは,バイナリトランスレーションに対応していることが特に好適である。
バイナリトランスレーションには,静的バイナリトランスレーション(static dynamic binary translation)と,動的バイナリトランスレーション(dynamic binary translation)とがある。静的バイナリトランスレーションとは,プログラムの実行前に,該プログラムのコードを,該プログラムを実行するDSPに対応したコードに書き換える手法である。一方,動的バイナリトランスレーションとは,プログラムの実行中に,該プログラムに含まれるコードを,該プログラムを実行するDSPに対応したコードに書き換える,即ち,コードの最適化を行う手法である。
特許文献1は,動的バイナリトランスレーション方法を開示している。公知のそのバイナリトランスレーション方法は,複数の命令で資源を共有し,且つ,実行時に資源が競合した際にパイプラインのストール及び競合を回避するための機能を持たないプロセッサに,資源の競合を回避するような動作を行わせるためのバイナリトランスレーション方法である。公知のそのバイナリトランスレーション方法では,動的バイナリトランスレーションを行うプロセッサに,資源の競合が発生したか否かをだけを検出する機能と,資源が発生したことを表す資源競合チェックレジスタとが設けられる。バイナリトランスレーションが行われるときに,ハードウェアの資源の競合の有無のチェックが,実際にコードを実行することによって行われ,これにより,コードの最適化に必要な処理時間が抑制されている。
特開2003−140910号公報
DSPのバイナリトランスレーションにおける一つの課題は,並列度が低いVLIW型DSPのために開発されたプログラムを並列度が高いVLIW型DSPの上で実行する場合に,並列度が高いVLIW型DSPの性能が充分に発揮できないことである。並列度が低いVLIW型DSP用に開発されたプログラムは,一のコードに含まれる要素命令の数が少ないため,該プログラムをそのまま並列度が高いVLIW型DSPで実行しても,並列度の向上による処理速度の向上は期待できない。例えば,並列度が低いVLIW型DSPのために開発された2つのプログラムA,プログラムBを,並列度が高いVLIW型DSPで実行する場合を考える。並列度が高い(即ち,一のサイクルで実行可能な複数の要素命令の数が多い)VLIW型DSPでプログラムA及びプログラムBを実行しても,その実行速度は,プログラムA及びプログラムBの一のコードに含まれる要素命令の数によって制限され,並列度の向上による実行速度の向上は達成されない。
並列度が低いVLIW型DSPのために開発されたプログラムを並列度が高いVLIW型DSPの上で実行する場合に,並列度が高いVLIW型DSPの性能を有効に生かして,該プログラムを高速に実行するためのバイナリトランスレーション技術の提供が望まれる。
本発明の目的は,並列度が低いVLIW型DSPのために開発されたプログラムを並列度が高いVLIW型DSPの上で実行する場合に,並列度が高いVLIW型DSPの性能を有効に生かして,該プログラムを高速に実行するための技術を提供することにある。
以下に、上記の目的を達成するための手段を説明する。その手段に含まれる技術的事項には、[特許請求の範囲]の記載と[発明を実施するための最良の形態]の記載との対応関係を明らかにするために、[発明を実施するための最良の形態]で使用される番号・符号が付加されている。但し、付加された番号・符号は、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明によるVLIW型DSPは,第1〜第nプログラムをそれぞれに記憶する第1〜第nバンク(2)を備えたプログラムメモリ(1)と,前記第1〜第nプログラムに含まれるコードのうち,実行されるべき実行コードが保存されているアドレスをそれぞれに指定する第1〜第nアドレスカウンタ(4)と,第1〜第nアドレスカウンタ(4)によってそれぞれに指定された前記アドレスに保存されている前記実行コードを,それぞれ第1〜第nバンク(2)から受け取り,受け取った前記実行コードを結合して一の再配置化コードを生成するフェッチブロック(5)と,フェッチブロック(5)から前記再配置化コードを受け取り,前記再配置化コードを,一の命令実行サイクルで実行するコード実行回路(6〜10)とを含む。本発明によるVLIW型DSPは,第1〜第nプログラムの前記実行コードを結合して一の再配置化コードを生成し,その再配置化コードを一の命令実行サイクルで実行する。これにより,本発明によるVLIW型DSPは,第1〜第nプログラムの並列度が低くとも,それらを並列して実行することができる。かかる構成は,当該VLIW型DSPが並列度が高いプログラムに対応するように構成されている場合,例えば,デュアルMAC/ALUアーキテクチャに従って構成されている場合に,特に有用である。
好適には,当該VLIW型DSPは,第1〜第nレジスタファイル(11)を備え,且つ,フェッチブロック(5)は,前記第1〜第nプログラムの前記実行コードに記述されているレジスタが,それぞれ,前記第1〜第nレジスタファイル(11)のレジスタに割り当てられるように前記実行コードを書き換え,書き換えられた前記実行コードを結合して前記再配置化コードを生成する。これにより,前記第1〜第nプログラムのオリジナルの前記実行コードに同一のレジスタ名が含まれていても,それらの実行コードを同時に実行することができる。
当該VLIW型DSPは,更に,前記第1〜第nプログラムのプログラム開始アドレスを格納する第1〜第nプログラムカウンタレジスタ(3)を備えることが好適である。この場合,前記第1〜第nプログラムカウンタレジスタ(3)に記憶されている前記プログラム開始アドレスは,それぞれ,前記第1〜第nアドレスカウンタ(4)に転送される。
当該VLIW型DSPにおいて,前記コード実行回路(6〜10)は,デコードブロック(6)と,ディスパッチブロック(7)と,複数の実行ユニット(8,9,10)とを備えていることがある。この場合,デコードブロック(6)は,前記フェッチブロック(5)から前記再配置化コードを受け取り,前記再配置化コードから実行要素命令を生成する。ディスパッチブロック(7)は,前記実行要素命令に基づいて,複数の実行ユニット(8,9,10)のそれぞれに供給される実行制御信号を生成する。複数の実行ユニット(8,9,10)は,前記実行制御信号に応答して,前記実行要素命令に対応する動作を行う。実行ユニット(8,9,10)としては,例えば,MAC(積和演算ユニット),ALU(算術/論理演算ユニット),ロード/ストアユニットが挙げられる。
本発明によるVLIW型DSPの動作方法は,
第1〜第nバンク(2)に,第1〜第nプログラムをそれぞれに記憶するステップと,
前記第1〜第nプログラムに含まれるコードのうち,実行されるべき実行コードが保存されているアドレスをそれぞれに指定するステップと,
指定された前記アドレスに保存されている前記実行コードを,それぞれ前記第1〜第nバンク(2)から受け取るステップと,
受け取られた前記実行コードを結合して一の再配置化コードを生成するステップと,
前記再配置化コードを,一の命令実行サイクルで実行するステップ
とを含む。
前記再配置化コードを生成するステップは,
前記第1〜第nプログラムの前記実行コードに記述されているレジスタが,それぞれ,第1〜第nレジスタファイル(11)のレジスタに割り当てられるように前記実行コードを書き換えるステップと,
書き換えられた前記実行コードを結合して前記再配置化コードを生成するステップ
とを備えていることが好適である。
本発明により、並列度が低いVLIW型DSPのために開発されたプログラムを並列度が高いVLIW型DSPの上で実行する場合に,並列度が高いVLIW型DSPの性能を有効に生かして,該プログラムを高速に実行するための技術が提供される。
本発明の実施の一形態におけるVLIW型DSPは,図1に示されているように,複数のバンク2,2を備えたプログラムメモリ1と,複数のプログラムカウンタレジスタ(PCレジスタ)3と,複数のアドレスカウンタ4とを備えている。バンク2,2は,それぞれに,実行されるべきプログラムを格納する。プログラムは,VLIWコードによって記述されている。PCレジスタ3,3は,それぞれバンク2,2に保存されたプログラムのプログラム開始アドレスを格納する。アドレスカウンタ4,4は,それぞれバンク2,2に保存されているプログラムの,次に実行されるべきVLIWコードが格納されているアドレスを指定する。
フェッチブロック5は,次に実行されるべきVLIWコードを,バンク2,2のそれぞれからフェッチする。フェッチブロック5は,一のVLIWコードあたりの要素命令の数が少ないプログラムのVLIWコードをフェッチした場合,フェッチしたそれらのVLIWコードを結合して,VLIWコードを新たに生成することができるように設計されている。後に詳細に説明されるように,フェッチブロック5がこのような機能を有していることは,並列度が高くなるように構成されている本実施の形態のVLIW型DSPの性能を充分に発揮するために重要である。
本実施の形態のVLIW型DSPは,更に,デコードブロック6と,ディスパッチブロック7と,MAC8と,ALU9と,ロード/ストアユニット10とを備えている。これらは,フェッチブロック5から供給されるVLIWコードを実行するための回路である。デコードブロック6と,ディスパッチブロック7とは,フェッチブロック5から供給されるVLIWコードに応じてMAC8とALU9とロード/ストアユニット10とを制御する。MAC8と,ALU9と,ロード/ストアユニット10は,プログラムのVLIWコードに含まれる要素命令を現実に実行するユニットであり,総称的に実行ユニットと呼ばれる。
MAC8と,ALU9と,ロード/ストアユニット10の数は,VLIW型DSPの並列度に応じて決定される。MAC8とALU9とロード/ストアユニット10の数が多いほど,一のコードに含まれ得る要素命令の数が多くなる。本実施の形態では,複数のMAC8とALU9がVLIW型DSPに搭載されることにより,即ち,VLIW型DSPにデュアルMAC/ALUアーキテクチャが採用されることにより,VLIW型DSPに高い並列度が与えられている。
MAC8と,ALU9と,ロード/ストアユニット10は,バス13を介して,レジスタファイル11と,データメモリ12とに接続されている。レジスタファイル11は,MAC8とALU9とが演算を行う際に使用されるレジスタの集合体である。データメモリ12は,MAC8及びALU9によって演算されるべきデータ及び,演算によって生成されたデータを保存する。
デコードブロック6と,ディスパッチブロック7と,MAC8と,ALU9と,ロード/ストアユニット10の機能が以下に詳細に説明される。デコードブロック6は,フェッチブロック5から供給されたVLIWコードから各実行ユニットが実行すべき実行要素命令を生成し,その実行要素命令をディスパッチブロック7に供給する。ディスパッチブロック7は,その実行要素命令に従って,実行制御信号を適切な実行ユニットに送り,実行ユニットに実行要素命令を実行させる。更にディスパッチブロック7は,コードに分岐命令が存在した場合,分岐命令に示された分岐先アドレスをPCレジスタ3に転送する。MAC8は,ディスパッチブロック7に送られる実行要素命令のうち,積和演算を実行するためのユニットである。ALU9は,ディスパッチブロック7に送られる実行要素命令のうち,加算、減算といった算術演算の命令、及び論理和、論理積といった論理演算の命令,その他の命令を実行するユニットである。ロード/ストアユニット10は,MAC8及びALU9から,データメモリ12にアクセスするために使用される。ロード/ストアユニット10〜10は,それぞれデータメモリ12〜12からデータをロードし,ロードしたデータを,それぞれバス13〜13を通じてMAC8及びALU9に供給する。更に,ロード/ストアユニット10〜10は,MAC8及びALU9の演算結果をそれぞれバス13〜13を介して受け取り,その演算結果をそれぞれデータメモリ12〜12にストアする。
上述のバンク2と,PCレジスタ3と,アドレスカウンタ4と,レジスタファイル11とは,本実施の形態のVLIW型DSPが同時に実行しようとするプログラムの数だけ用意される。本実施の形態では,バンク2と,PCレジスタ3と,アドレスカウンタ4と,レジスタファイル11の数は,いずれも2である。ただし,バンク2と,PCレジスタ3と,アドレスカウンタ4と,レジスタファイル11の数は,2に限られないことに留意されたい。
以下に述べられるように,本実施の形態の本実施の形態のVLIW型DSPは,一のVLIWコードあたりの要素命令の数が少ないプログラムを複数本,並列に実行する場合に,これらのプログラムのVLIWコードを結合してVLIWコードを生成し,生成されたそのVLIWコードを実行する。これは,バンク2,2のそれぞれからフェッチされた複数のVLIWコードを一の命令実行サイクルで同時に実行することと等価である。これにより,本実施の形態の本実施の形態のVLIW型DSPは,その並列度の高さを有効に生かすことができる。以下では,並列度の低いDSPのために作成された複数のプログラムが,本実施の形態のVLIW型DSPによって並列に実行される過程が説明される。
まず,PCレジスタ3,3に格納されているプログラム開始アドレスが,それぞれ,アドレスカウンタ4,4に転送される(ステップS01)。
アドレスカウンタ4,4は,それぞれ,バンク2,2に記憶されているプログラムの,次に実行されるべきVLIWコードが記憶されているアドレスを指定する(ステップS02)。
フェッチブロック5は,バンク2,2それぞれの指定されたアドレスから,VLIWコードを読み出す(ステップS03)。
フェッチブロック5は,読み出したVLIWコードを再配置して,要素命令の数が多い新たなVLIWコードを生成し,生成した新たなVLIWコードをデコードブロック6に転送する(ステップS04)。
新たなVLIWコードの生成において考慮されるべきことは,バンク2,2から読み出された2つのVLIWコードに,同じレジスタ名が含まれ得ることである。バンク2,2に記憶されているプログラムが古い世代のDSP向けに開発されたものであるときには,それらのプログラムは,多くの場合,(時分割ではなく)並列に同時に実行されることが考慮されていない。このような場合,バンク2,2から読み出されたVLIWコードは,同一のレジスタ名を含む場合がある。読み出された2つのVLIWコードが同じレジスタ名を含むと,それらを同時に実行することはできない。
そこで,フェッチブロック5は,バンク2から読み出されたVLIWコードに記述されているレジスタと,バンク2から読み出されたVLIWコードに記述されているレジスタとが,別々のレジスタファイル11に含まれるレジスタに割り当てられるように,読み出されたVLIWコードを書き換える。フェッチブロック5は,書き換えられたVLIWコードを結合して実行されるべき新たなVLIWコードを生成する。
例えば,新たなVLIWコードは,下記のようにして生成される;レジスタファイル11に含まれる汎用レジスタ及びメモリポインタにそれぞれ”Rn”及び”DPn”というレジスタ名が与えられ,レジスタファイル11に含まれる汎用レジスタ及びメモリポインタにそれぞれ”Rn’”及び”DPn’”というレジスタ名が与えられる。ここにおいてnは,0以上の整数である。メモリポインタは,レジスタの一種であることに留意されたい。VLIWコードA及びVLIWコードBが,いずれも,レジスタ名”Rn”,”DPn”という記述を含んでいる場合,VLIWコードBに記述されているレジスタ名”Rn”が,それぞれ”Rn’”に書き換えられ,レジスタ名”DPn”が,それぞれ”DPn’”に書き換えられ,VLIWコードAと,書き換えられたVLIWコードBとが結合されて新たなVLIWコードが作成される。例えば,バンク2から読み出されるVLIWコードAが,
”R0=R1*R3+R3,R8=*DP0,R9=*DP1”
であり,バンク2から読み出されるVLIWコードBが,
”R3=R2*R1+R0,*DP0=R8,*DP1=R9”
である場合,フェッチブロック5は,下記のVLIWコード
”R0=R1*R3+R3,R8=*DP0,R9=*DP1,R3’=R2’*R1’+R0’,*DP0’=R8’,*DP1’=R9’”を生成する。これにより,バンク2から読み出されたVLIWコードには,レジスタファイル11のレジスタが割り当てられ,バンク2から読み出されたVLIWコードには,レジスタファイル11のレジスタが割り当てられ,これらのVLIWコードの同時的な実行が可能になる。
デコードブロック6は,フェッチブロック5から受け取ったVLIWコードを各実行ユニットが実行すべき実行要素命令に分解し,その実行要素命令をディスパッチブロック7に供給する(ステップS05)。
ディスパッチブロック7は,その実行要素命令に応答して,実行制御信号を対応する実行ユニットに送り,実行要素命令に対応する動作を該実行ユニットに実行させる(ステップS06−1)。更にディスパッチブロック7は,実行要素命令が分岐命令を含む場合,分岐命令に示された分岐先アドレスを,対応するPCレジスタ3に転送する(ステップS06−2)。
以上の過程により,本実施の形態の本実施の形態のVLIW型DSPは,バンク2にそれぞれに記憶されているプログラムのVLIWコードを結合して新たなVLIWコードを生成し,生成されたそのVLIWコードを一の命令実行サイクルで実行する。これにより,本実施の形態のVLIW型DSPは,並列度が低いDSP用に作成された複数のプログラムを並列に実行し,その並列度の高さを有効に生かすことができる。
図1は、本発明による実施の一形態のVLIW型DSPの構成を示すブロック図である。
符号の説明
1:プログラムメモリ
2:バンク
3:PCレジスタ
4:アドレスカウンタ
5:フェッチブロック
6:デコードブロック
7:ディスパッチブロック
8:MAC
9:ALU
10:ロード/ストアユニット
11:レジスタファイル
12:データメモリ

Claims (7)

  1. 第1〜第nプログラムをそれぞれに記憶する第1〜第nバンクを備えたプログラムメモリと,
    前記第1〜第nプログラムに含まれるコードのうち,実行されるべき実行コードが保存されているアドレスをそれぞれに指定する第1〜第nアドレスカウンタと,
    前記第1〜第nアドレスカウンタによってそれぞれに指定された前記アドレスに保存されている前記実行コードを,それぞれ前記第1〜第nバンクから受け取り,受け取った前記実行コードを結合して一の再配置化コードを生成するフェッチブロックと,
    前記フェッチブロックから前記再配置化コードを受け取り,前記再配置化コードを,一の命令実行サイクルで実行するコード実行回路
    とを含む
    VLIW型DSP。
  2. 請求項1に記載のVLIW型DSPにおいて,
    更に,
    第1〜第nレジスタファイルを備え,
    前記フェッチブロックは,前記第1〜第nプログラムの前記実行コードに記述されているレジスタが,それぞれ,前記第1〜第nレジスタファイルのレジスタに割り当てられるように前記実行コードを書き換え,書き換えられた前記実行コードを結合して前記再配置化コードを生成する
    VLIW型DSP。
  3. 請求項1又は請求項2に記載のVLIW型DSPにおいて,
    更に,
    前記第1〜第nプログラムのプログラム開始アドレスを格納する第1〜第nプログラムカウンタレジスタを備え,
    前記第1〜第nプログラムカウンタレジスタに記憶されている前記プログラム開始アドレスは,それぞれ,前記第1〜第nアドレスカウンタに転送される
    VLIW型DSP。
  4. 請求項1又は請求項2に記載のVLIW型DSPにおいて,
    前記コード実行回路は,
    前記フェッチブロックから前記再配置化コードを受け取り,前記再配置化コードから実行要素命令を生成するデコードブロックと,
    ディスパッチブロックと,
    複数の実行ユニット
    とを備え,
    前記ディスパッチブロックは,前記実行要素命令に基づいて,複数の実行ユニットのそれぞれに供給される実行制御信号を生成し,
    前記複数の実行ユニットは,前記実行制御信号に応答して,前記実行要素命令に対応する動作を行う
    VLIW型DSP。
  5. 請求項4に記載のVLIW型DSPにおいて,
    前記複数の実行ユニットは,
    複数の積和演算ユニットと,
    複数の算術論理演算ユニット
    とを含む
    VLIW型DSP。
  6. 第1〜第nバンクに,第1〜第nプログラムをそれぞれに記憶するステップと,
    前記第1〜第nプログラムに含まれるコードのうち,実行されるべき実行コードが保存されているアドレスをそれぞれに指定するステップと,
    指定された前記アドレスに保存されている前記実行コードを,それぞれ前記第1〜第nバンクから受け取るステップと,
    受け取られた前記実行コードを結合して一の再配置化コードを生成するステップと,
    前記再配置化コードを,一の命令実行サイクルで実行するステップ
    とを含む
    VLIW型DSPの動作方法。
  7. 前記再配置化コードを生成するステップは,
    前記第1〜第nプログラムの前記実行コードに記述されているレジスタが,それぞれ,第1〜第nレジスタファイルのレジスタに割り当てられるように前記実行コードを書き換えるステップと,
    書き換えられた前記実行コードを結合して前記再配置化コードを生成するステップ
    とを備えた
    VLIW型DSPの動作方法。
JP2003425838A 2003-12-22 2003-12-22 Vliw型dsp,及びその動作方法 Expired - Fee Related JP4202244B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003425838A JP4202244B2 (ja) 2003-12-22 2003-12-22 Vliw型dsp,及びその動作方法
US11/008,927 US7552313B2 (en) 2003-12-22 2004-12-13 VLIW digital signal processor for achieving improved binary translation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003425838A JP4202244B2 (ja) 2003-12-22 2003-12-22 Vliw型dsp,及びその動作方法

Publications (2)

Publication Number Publication Date
JP2005182659A true JP2005182659A (ja) 2005-07-07
JP4202244B2 JP4202244B2 (ja) 2008-12-24

Family

ID=34675440

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003425838A Expired - Fee Related JP4202244B2 (ja) 2003-12-22 2003-12-22 Vliw型dsp,及びその動作方法

Country Status (2)

Country Link
US (1) US7552313B2 (ja)
JP (1) JP4202244B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009545823A (ja) * 2006-08-02 2009-12-24 クゥアルコム・インコーポレイテッド マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739481B1 (en) * 2007-09-06 2010-06-15 Altera Corporation Parallelism with variable partitioning and threading
TWI432953B (zh) 2010-12-09 2014-04-01 Ind Tech Res Inst 具電源管理之超長指令處理器以及其電源管理裝置與方法
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
EP3640863B1 (en) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
US11620130B2 (en) 2018-02-13 2023-04-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991225A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
JP7053891B2 (ja) 2018-06-27 2022-04-12 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッド オンチップコードのブレークポイントによるデバッグ方法、オンチッププロセッサ及びブレークポイントによるチップデバッグシステム
JP6867518B2 (ja) 2018-08-28 2021-04-28 カンブリコン テクノロジーズ コーポレイション リミティド データ前処理方法、装置、コンピュータ機器及び記憶媒体
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN111383638A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN112085189B (zh) 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3311462B2 (ja) 1994-02-23 2002-08-05 富士通株式会社 コンパイル処理装置
US5880984A (en) * 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US20010052053A1 (en) * 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
JP2003140910A (ja) 2001-11-05 2003-05-16 Hitachi Ltd Vliwプロセッサにおけるバイナリトランスレーション方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009545823A (ja) * 2006-08-02 2009-12-24 クゥアルコム・インコーポレイテッド マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
US8417922B2 (en) 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
JP2013218709A (ja) * 2006-08-02 2013-10-24 Qualcomm Inc マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2013242879A (ja) * 2006-08-02 2013-12-05 Qualcomm Inc マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム

Also Published As

Publication number Publication date
US7552313B2 (en) 2009-06-23
JP4202244B2 (ja) 2008-12-24
US20050138327A1 (en) 2005-06-23

Similar Documents

Publication Publication Date Title
JP4202244B2 (ja) Vliw型dsp,及びその動作方法
JP3120152B2 (ja) コンピューターシステム
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
JP5611756B2 (ja) プログラム・フロー制御
US20020029333A1 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
KR20040016829A (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
JP2002024011A (ja) プロセッサにおける命令の叙述された実行
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
US6892295B2 (en) Processing architecture having an array bounds check capability
JP2001290658A (ja) マッピング回路及び方法
JP2004529405A (ja) 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US7065754B1 (en) Method and apparatus for switching between multiple implementations of a routine
JPH0748187B2 (ja) レジスタ間接モードを用いる汎用メモリ・アクセス方法およびコンピュータ・システム
KR102458467B1 (ko) 벡터 생성 명령
JP2006506727A (ja) コピーレジスタファイルを有するvliw
US8275978B1 (en) Execution of conditional branch instruction specifying branch point operand to be stored in jump stack with branch destination for jumping to upon matching program counter value
US5729729A (en) System for fast trap generation by creation of possible trap masks from early trap indicators and selecting one mask using late trap indicators
JP3325309B2 (ja) サブルーチンリターン命令処理装置
JP5311008B2 (ja) 信号処理プロセッサ及び半導体装置
JP4151497B2 (ja) パイプライン処理装置
US20100185834A1 (en) Data Storing Method and Processor Using the Same
US9164761B2 (en) Obtaining data in a pipelined processor
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080620

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080819

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: 20080912

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081008

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111017

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees