JP2014160393A - マイクロプロセッサ及び演算処理方法 - Google Patents
マイクロプロセッサ及び演算処理方法 Download PDFInfo
- Publication number
- JP2014160393A JP2014160393A JP2013031095A JP2013031095A JP2014160393A JP 2014160393 A JP2014160393 A JP 2014160393A JP 2013031095 A JP2013031095 A JP 2013031095A JP 2013031095 A JP2013031095 A JP 2013031095A JP 2014160393 A JP2014160393 A JP 2014160393A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- instruction
- arithmetic
- register
- cycle
- 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
- 238000003672 processing method Methods 0.000 title description 3
- 230000003111 delayed effect Effects 0.000 claims description 5
- 230000001934 delay Effects 0.000 claims description 3
- 239000000470 constituent Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
【課題】1命令の動作処理サイクル数を可変できるようにして、CPUの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現する。
【解決手段】多段配置された複数の演算器31,34,37と、演算器31,34夫々に対して設けられ、各演算結果を1サイクル遅延させる遅延器32,35と、演算器31,34夫々に対して設けられ、各演算結果と、1サイクル遅延させた演算結果との一方を選択して次段の演算器34,37に出力するセレクタ33,36とを含む演算部28を備え、セレクタ33,36での選択状態を制御することで当該演算部により複数の演算を集約して処理する。
【選択図】図3
【解決手段】多段配置された複数の演算器31,34,37と、演算器31,34夫々に対して設けられ、各演算結果を1サイクル遅延させる遅延器32,35と、演算器31,34夫々に対して設けられ、各演算結果と、1サイクル遅延させた演算結果との一方を選択して次段の演算器34,37に出力するセレクタ33,36とを含む演算部28を備え、セレクタ33,36での選択状態を制御することで当該演算部により複数の演算を集約して処理する。
【選択図】図3
Description
本発明は、拡張命令をパイプライン処理で実行する場合に好適なマイクロプロセッサに関する。
従来のマイクロプロセッサでは、四則演算や論理演算を1命令で処理していた。近年のマイクロプロセッサでは、複数の演算を集約して1命令で処理することができるようになっている。これにより、1サイクルで実行できる処理量を増やすことで、全体の処理サイクル数を少なくできる。ただし、1命令を1サイクルで処理できない動作周波数の場合、すなわち演算回路の構成によって1サイクルの周期内に処理時間が収まらない場合などには、図11に示す如くプロセッサの実行サイクルを一時的にストールさせて、複数サイクルで処理を行なう。
図11において、図11(A)はCPUの動作クロックであり、図11(B)に示すように1命令を、命令フェッチステージ「IF」、命令デコードステージ「ID」、命令実行ステージ「EX1」〜「EX3」、メモリアクセスステージ「MEM」、及びレジスタバックステージ「WB」の計7ステージ、7サイクルで実行している場合を例示する。
全ステージ中、上記命令実行ステージ「EX1」〜「EX3」の3サイクルが命令を実行するステージであり、図11(C)〜図11(E)に示すように、レジスタr1、r2、r3にロードされている値により演算を実行し、その演算結果をレジスタr3に格納している。
プロセッサの動作周波数を変化させて使用するような電子機器の場合、最高周波数で使用する場合を想定し、最高周波数に合わせて実行サイクル数を決定する必要がある。
図12(A)は、上記図11(A)で示した動作クロックよりも大幅に低い周波数のCPUクロックを示し、図12(B)は、そのクロックでパイプライン処理による演算を行なう場合を示す。周波数に反比例して、上記図11(A)で示した1サイクル時間t11より長い1サイクル時間t12となるため、演算回路において例えば上記図11では3サイクル時間必要であった演算処理が2サイクルで実行できる場合であっても、CPUの動作制御上、上述した如く3サイクルをかけて処理を実行することになる。
このように、プロセッサが低いクロック周波数で動作する場合、実際には少ないサイクル数で処理できる時間があっても、高いクロック周波数で動作する場合と同じサイクル数で処理しなければならず、結果的に処理サイクル数が増加して処理速度が低下する。
ところで、上記不具合とは目的が異なるが、複雑度を増大させることなく、信頼性を向上可能なパイプラインプロセッサを提供するための技術が提案されている。(例えば、特許文献1)
この特許技術では、命令実行サイクル数が固定であるコア命令及びユーザにより定義された拡張命令のいずれかを選択的に発行する命令デコーダユニットと、発行されたコア命令を実行するコア命令時ユニットと、発行された拡張命令を実行する拡張命令実行ユニットと、コア命令実行ユニット及び拡張命令実行ユニットのそれぞれの命令実行結果を一時的に記憶して、コア命令及び拡張命令の発行された順に命令実行結果を並べ替えて出力するリオーダバッファとを備えている。
この特許技術では、命令実行サイクル数が固定であるコア命令及びユーザにより定義された拡張命令のいずれかを選択的に発行する命令デコーダユニットと、発行されたコア命令を実行するコア命令時ユニットと、発行された拡張命令を実行する拡張命令実行ユニットと、コア命令実行ユニット及び拡張命令実行ユニットのそれぞれの命令実行結果を一時的に記憶して、コア命令及び拡張命令の発行された順に命令実行結果を並べ替えて出力するリオーダバッファとを備えている。
上記特許文献に記載された技術は、命令実行サイクル数が固定であるコア命令と、ユーザにより定義された拡張命令とを元のプログラムの発行順に従って出力できる。しかしながら、1命令の動作処理サイクル数を動作周波数によって変更することはできない。
本発明は上記のような実情に鑑みてなされたもので、その目的とするところは、1命令の動作処理サイクル数を可変できるようにして、CPUの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能なマイクロプロセッサを提供することにある。
本発明の一態様は、多段配置された複数の演算器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を1サイクル遅延させる遅延器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で1サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段とを含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とする。
本発明によれば、1命令の動作処理サイクル数を可変できるようにして、CPUの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能となる。
以下、本発明の一実施形態に係るマイクロプロセッサについて図面を参照して説明する。
図1は、同実施形態に係るマイクロプロセッサ10の機能回路構成を示すブロック図である。同図で、処理を実行するマイクロプロセッサであるCPU11が、命令コードを記憶したプログラムメモリであるROM12、及びワークメモリであるRAM13と接続される。
図1は、同実施形態に係るマイクロプロセッサ10の機能回路構成を示すブロック図である。同図で、処理を実行するマイクロプロセッサであるCPU11が、命令コードを記憶したプログラムメモリであるROM12、及びワークメモリであるRAM13と接続される。
CPU11には、システムクロックCLKとリセット信号RESETとが外部から与えられる。またCPU11は、ROM12にチップセレクト信号ROMCSを出力すると共に、ROMアドレスバスを介してROM12のアドレスを指定することで、当該アドレスに格納されていたプログラム命令をROMデータバスを介して読出す。
さらにCPU11は、RAM13に対してチップセレクト信号RAMCS、読出し信号RAMOE、書込み信号RAMWEを出力すると共に、RAMアドレスバスを介してアドレスを指定し、当該アドレスへのデータの書込みと読出しとをRAMデータバスを介して行なう。
図2は、上記CPU11内でプログラムを実行するためのブロック構成を示す図である。同図で、ROM12からROMデータバスを介して読出されてきた命令は、命令レジスタ(IR)部21に入力されて保持される。
命令レジスタ部21の保持する命令は、命令デコーダ(ID)部22が読出してデコードし、デコード結果をROM制御部23へ出力する共に、デコード結果に応じて適宜RAM制御部24、ロードメモリデータレジスタ(LMDR)部25、レジスタファイル(RF)部26、第1算術演算ユニット(ALU1)部27、及び第2算術演算ユニット(ALU2)部28をそれぞれ制御する。
ROM制御部23は、上記ROM12にチップセレクト信号とROMアドレスとを出力する。
ROM制御部23は、上記ROM12にチップセレクト信号とROMアドレスとを出力する。
RAM制御部24は、RAMアドレスバスを介して上記RAM13のアドレス指定を行なうと共に、RAM13に対して上記チップセレクト信号RAMCS、読出し信号RAMOE、書込み信号RAMWEを出力する。
上記ロードメモリデータレジスタ部25及びレジスタファイル部26は、RAMデータバスを介して上記RAM13と接続され、保持しているデータをRAM13へ出力し、またRAM13から出力されてきたデータを保持する。
第1算術演算ユニット部27は、命令デコーダ部22からの制御に基づいてレジスタファイル部26とデータを送受しながら、通常の四則演算及び論理演算等、指定された演算を実行し、演算結果をレジスタファイル部26へ出力する。
第2算術演算ユニット部28は、命令デコーダ部22からの制御に基づいてレジスタファイル部26とデータを送受しながら、拡張命令によって追加された演算を実行し、演算結果をレジスタファイル部26へ出力する。
次いで図3により上記第2算術演算ユニット部28内の具体的な構成例について説明する。ここでは、第2算術演算ユニット部28が、演算
「(a−b)*(a−b)+c」 …(1)
を行なう回路である場合を例にとって説明する。
上記の演算を行なう場合、必要な演算器は減算器、乗算器、及び加算器であるため、図3に示す如くこれら減算器(SUB)31、乗算器(MUL)34、及び加算器(ADD)37を多段配置する。
「(a−b)*(a−b)+c」 …(1)
を行なう回路である場合を例にとって説明する。
上記の演算を行なう場合、必要な演算器は減算器、乗算器、及び加算器であるため、図3に示す如くこれら減算器(SUB)31、乗算器(MUL)34、及び加算器(ADD)37を多段配置する。
上記減算器31は、上記レジスタファイル部26から上記(1)式の変数a,bに相当する数値を入力し、減算「a−b」を実行する。そして得られた差Taを、テンポラリレジスタ(TempReg)32及びセレクタ(Sel)33へ出力する。テンポラリレジスタ32は、遅延器として機能し、1サイクル分保持した内容Taを上記セレクタ33へ読出す。
上記セレクタ33は、上記レジスタファイル部26から与えられるセレクト信号Aに従い、減算器31が出力する差Taとテンポラリレジスタ32が保持した内容Taのいずれか一方を選択して、次段の上記乗算器34へ並列に出力する。
上記乗算器34は、上記セレクタ33からの出力により乗算「Ta*Ta」を実行する。そして得られた積Tbを、テンポラリレジスタ(TempReg)35及びセレクタ(Sel)36へ出力する。テンポラリレジスタ35は、遅延器として機能し、1サイクル分保持した内容Tbを上記セレクタ36へ読出す。
上記セレクタ36は、上記レジスタファイル部26から与えられるセレクト信号Bに従い、乗算器34が出力する積Tbとテンポラリレジスタ35が保持した内容Tbのいずれか一方を選択して、次段の上記加算器37に出力する。
上記加算器37は、上記レジスタファイル部26から上記(1)式の変数cに相当する数値を入力し、上記セレクタ36からの出力Tbと合わせて上記(1)式に相当する演算「Tb+c」を実行する。そして得られた演算結果Paを、バイパスA出力として直接出力する一方で、パイプラインレジスタ(PipeReg)38に出力する。
パイプラインレジスタ38は、パイプライン処理の命令実行ステージ(上記図11のEX1〜3)で計算された結果を、次のレジスタライトバックステージ(上記図11のWB)で保持して遅延させるためのレジスタであり、加算器37の出力する演算結果Paを保持した後、バイパスB出力として直接出力する一方で、同様の構成となるパイプラインレジスタ(PipeReg)39に出力する。
パイプラインレジスタ39は、上記パイプラインレジスタ38の出力する演算結果Paを保持した後、上記レジスタファイル部26に出力する。
上記バイパスA,Bの各出力は、レジスタライトバックステージ(上記図11のWB)でのパイプラインレジスタ38,39の書込み後では次命令で計算結果を使用することができないために、レジスタ書込み前の計算結果データをバイパス出力させるものであり、バイパスA出力で次ぎ命令、バイパスB出力で次々命令の命令実行ステージ(上記図11のEX)で使用できるようにしている。
次に上記実施形態の動作として、マイクロプロセッサ10の特に第2算術演算ユニット部28内での動作について説明する。
図4は、上記第2算術演算ユニット部28における、セレクト信号A,Bの各“L”レベルと“H”レベルに応じた処理内容を示す。セレクタ33は、セレクト信号Aが“L”レベルであれば減算器31の出力Taを選択し、“H”レベルであればテンポラリレジスタ32で1サイクル遅延された演算結果Taを選択して乗算器34に出力する。
図4は、上記第2算術演算ユニット部28における、セレクト信号A,Bの各“L”レベルと“H”レベルに応じた処理内容を示す。セレクタ33は、セレクト信号Aが“L”レベルであれば減算器31の出力Taを選択し、“H”レベルであればテンポラリレジスタ32で1サイクル遅延された演算結果Taを選択して乗算器34に出力する。
同様に、セレクタ36はセレクト信号Bが“L”レベルであれば乗算器34の出力Tbを選択し、“H”レベルであればテンポラリレジスタ35で1サイクル遅延された演算結果Tbを選択して加算器37に出力する。
したがって、図4に示すように上記セレクト信号A,Bの“L”/“H”を切り換えることにより、この第2算術演算ユニット部28での処理サイクル数を「1」〜「3」の間で変化させることができる。
したがって、図4に示すように上記セレクト信号A,Bの“L”/“H”を切り換えることにより、この第2算術演算ユニット部28での処理サイクル数を「1」〜「3」の間で変化させることができる。
以下、処理サイクル数を可変制御する場合の動作例について説明する。
(動作例1)
図5は、第1のプログラム例を示す。
同プログラム中、「SELAH」は上記セレクタ33へのセレクト信号Aを“H”レベルにする命令、「SELBH」は上記セレクタ36へのセレクト信号Bを“H”レベルにする命令である。
(動作例1)
図5は、第1のプログラム例を示す。
同プログラム中、「SELAH」は上記セレクタ33へのセレクト信号Aを“H”レベルにする命令、「SELBH」は上記セレクタ36へのセレクト信号Bを“H”レベルにする命令である。
「LW」命令は、レジスタへの直値ロード命令であり、ここではレジスタr1,r2,r3にそれぞれ「256」「128」「2560」の値をロードする。
「ZZZ」命令は、追加命令で、上記第2算術演算ユニット部28で実行する命令を示す。「ZZZ r3,r1,r2,r3」である場合、上記(1)式に代入して
「r3=(r1−r2)*(r1−r2)+r3」
なる演算を実行する。
「ZZZ」命令は、追加命令で、上記第2算術演算ユニット部28で実行する命令を示す。「ZZZ r3,r1,r2,r3」である場合、上記(1)式に代入して
「r3=(r1−r2)*(r1−r2)+r3」
なる演算を実行する。
「MUL」命令は、単純な乗算命令であり、上記第1算術演算ユニット部27で実行する。「MUL r1,r2,r3」である場合、「r1=r2*r3」を実行する。
このプログラムの場合、上述した如くセレクト信号Aが“H”レベル、セレクト信号Bが“H”レベルと指定されているため、上記図4で示したように「ZZZ」命令の命令実行ステージ「EX」は3サイクルとなる。
図6は、この第1のプログラム実行時の第2算術演算ユニット部28内での処理内容を示すタイミングチャートである。図6(B1)で示す第1の命令実行ステージ「EX1」で減算器31が図6(C),(D)に示すレジスタr1,r2の値「0x00000100(=256)」「0x00000080(=128)」を入力し、減算「r1−r2」を実行する。その差「0x00000080」は図6(F)に示すようにテンポラリレジスタ32に保持される。
続く第2の命令実行ステージ「EX2」で、セレクト信号Aが“H”レベルであるためにセレクタ33がテンポラリレジスタ32に保持されているデータを選択して乗算器34に出力する。乗算器34では、与えられたデータによる乗算を行ない、その積「0x00004000」が図6(G)に示すようにテンポラリレジスタ35に保持される。
そして第3の命令実行ステージ「EX3」で、セレクト信号Bが“H”レベルであるためにセレクタ36がテンポラリレジスタ35に保持されているデータを選択して加算器37に出力する。加算器37では、与えられたデータとレジスタファイル部26からのr3の値「0x00000a00(=2560)」とによる加算を行ない、その和「0x00004a00」がパイプラインレジスタ38,39を介して、レジスタバックステージ「WB」でレジスタr3に保存されると共に、図6(H)に示すようにバイパスA出力として上記第1算術演算ユニット部27に送出され、図6(B2)に示すように次命令の命令実行ステージ「EX1」での演算処理に使用される。
このように3サイクルの命令実行ステージ「EX1」〜「EX3」によって、追加命令である「ZZZ」命令を実行し、図6(B2)に示すように次命令の命令実行ステージ「ID」が2ステージ停止される。
このように3サイクルの命令実行ステージ「EX1」〜「EX3」によって、追加命令である「ZZZ」命令を実行し、図6(B2)に示すように次命令の命令実行ステージ「ID」が2ステージ停止される。
(動作例2)
図7は、第2のプログラム例を示す。
同プログラム中、「SELAL」は上記セレクタ33へのセレクト信号Aを“L”レベルにする命令、「SELBH」は上記セレクタ36へのセレクト信号Bを“H”レベルにする命令である。
図7は、第2のプログラム例を示す。
同プログラム中、「SELAL」は上記セレクタ33へのセレクト信号Aを“L”レベルにする命令、「SELBH」は上記セレクタ36へのセレクト信号Bを“H”レベルにする命令である。
「LW」命令以下は上記図5の第1のプログラム例と同様である。
このプログラムの場合、上述した如くセレクト信号Aが“L”レベル、セレクト信号Bが“H”レベルと指定されているため、上記図4で示したように「ZZZ」命令の命令実行ステージ「EX」は2サイクルとなる。
図8は、この第2のプログラム実行時の第2算術演算ユニット部28内での処理内容を示すタイミングチャートである。図8(B1)で示す第1の命令実行ステージ「EX1」で減算器31が図8(C),(D)に示すレジスタr1,r2の値「0x00000100(=256)」「0x00000080(=128)」を入力し、減算「r1−r2」を実行する。その差「0x00000080」は、セレクト信号Aが“L”レベルであるためにセレクタ33が直接選択して乗算器34に出力する。乗算器34では、与えられたデータによる乗算を行ない、その積「0x00004000」が図8(G)に示すようにテンポラリレジスタ35に保持される。
続く第2の命令実行ステージ「EX2」で、セレクト信号Bが“H”レベルであるためにセレクタ36がテンポラリレジスタ35に保持されているデータを選択して加算器37に出力する。加算器37では、与えられたデータとレジスタファイル部26からのr3の値「0x00000a00(=2560)」とによる加算を行ない、その和「0x00004a00」がパイプラインレジスタ38,39を介して、レジスタバックステージ「WB」でレジスタr3に保存されると共に、図8(H)に示すようにバイパスA出力として上記第1算術演算ユニット部27に送出され、図8(B2)に示すように次命令の命令実行ステージ「EX1」での演算処理に使用される。
このように2サイクルの命令実行ステージ「EX1」,「EX2」によって、追加命令である「ZZZ」命令を実行し、図8(B2)に示すように次命令の命令実行ステージ「ID」が1ステージ停止される。
このように2サイクルの命令実行ステージ「EX1」,「EX2」によって、追加命令である「ZZZ」命令を実行し、図8(B2)に示すように次命令の命令実行ステージ「ID」が1ステージ停止される。
(動作例3)
図9は、第3のプログラム例を示す。
同プログラム中、「SELAL」は上記セレクタ33へのセレクト信号Aを“L”レベルにする命令、「SELBL」は上記セレクタ36へのセレクト信号Bを“L”レベルにする命令である。
図9は、第3のプログラム例を示す。
同プログラム中、「SELAL」は上記セレクタ33へのセレクト信号Aを“L”レベルにする命令、「SELBL」は上記セレクタ36へのセレクト信号Bを“L”レベルにする命令である。
「LW」命令以下は上記図5の第1のプログラム例と同様である。
このプログラムの場合、上述した如くセレクト信号A,Bが共に“L”レベルと指定されているため、上記図4で示したように「ZZZ」命令の命令実行ステージ「EX」は1サイクルとなる。
図10は、この第3のプログラム実行時の第2算術演算ユニット部28内での処理内容を示すタイミングチャートである。図10(B1)で示す第1の命令実行ステージ「EX1」で減算器31が図10(C),(D)に示すレジスタr1,r2の値「0x00000100(=256)」「0x00000080(=128)」を入力し、減算「r1−r2」を実行する。その差「0x00000080」は、セレクト信号Aが“L”レベルであるためにセレクタ33が直接選択して乗算器34に出力する。乗算器34では、与えられたデータによる乗算を行ない、その積「0x00004000」がセレクタ36に直接出力される。
セレクト信号Bが“L”レベルであるためにセレクタ36が乗算器34の出力を選択して加算器37に出力する。加算器37では、与えられたデータとレジスタファイル部26からのr3の値「0x00000a00(=2560)」とによる加算を行ない、その和「0x00004a00」がパイプラインレジスタ38,39を介して、レジスタバックステージ「WB」でレジスタr3に保存されると共に、図10(H)に示すようにバイパスA出力として上記第1算術演算ユニット部27に送出され、図10(B2)に示すように次命令の命令実行ステージ「EX1」での演算処理に使用される。
このように1サイクルの命令実行ステージ「EX1」のみで、追加命令である「ZZZ」命令を実行しているため、図10(B2)に示すように次命令での停止は行われない。
このように1サイクルの命令実行ステージ「EX1」のみで、追加命令である「ZZZ」命令を実行しているため、図10(B2)に示すように次命令での停止は行われない。
以上詳述した如く本実施形態によれば、第2算術演算ユニット部28で実行する、追加命令に対する動作処理サイクル数を可変できるようにして、CPUの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能となる。
なお上記実施形態では、第2算術演算ユニット部28が特定の演算
「(a−b)*(a−b)+c」
を実行する専用の算術演算ユニット部であるものとして説明したが、単純な四則演算や論理演算などを行なう第1算術演算ユニット部27とは別に設けた第2算術演算ユニット部28が実行する特定の演算に関して、本発明ではその内容を限定するものではなく、複数の演算器を組み合わせて実行するものであればもいずれにも適用可能であることは勿論である。
「(a−b)*(a−b)+c」
を実行する専用の算術演算ユニット部であるものとして説明したが、単純な四則演算や論理演算などを行なう第1算術演算ユニット部27とは別に設けた第2算術演算ユニット部28が実行する特定の演算に関して、本発明ではその内容を限定するものではなく、複数の演算器を組み合わせて実行するものであればもいずれにも適用可能であることは勿論である。
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
請求項1記載の発明は、多段配置された複数の演算器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を1サイクル遅延させる遅延器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で1サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段とを含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とする。
請求項1記載の発明は、多段配置された複数の演算器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を1サイクル遅延させる遅延器と、上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で1サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段とを含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とする。
10…マイクロプロセッサ、11…CPU、12…ROM、13…RAM、21…命令レジスタ(IR)部、22…命令デコーダ(ID)部、23…ROM制御部、24…RAM制御部、25…ロードメモリデータレジスタ(LMDR)部、26…レジスタファイル(RF)部、27…第1算術演算ユニット(ALU1)部、28…第2算術演算ユニット(ALU2)部、31…減算器(SUB)、32…テンポラリレジスタ(TempReg)、33…セレクタ(Sel)、34…乗算器(MUL)、35…テンポラリレジスタ(TempReg)、36…セレクタ(Sel)、37…加算器(ADD)、38,39…パイプラインレジスタ(PipeReg)。
本発明は、拡張命令をパイプライン処理で実行する場合に好適なマイクロプロセッサ及び演算処理方法に関する。
本発明は上記のような実情に鑑みてなされたもので、その目的とするところは、1命令の動作処理サイクル数を可変できるようにして、CPUの動作クロック周波数を変更する場合に各周波数で最適な処理サイクルを実現することが可能なマイクロプロセッサ及び演算処理方法を提供することにある。
Claims (1)
- 多段配置された複数の演算器と、
上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果を1サイクル遅延させる遅延器と、
上記複数の演算器中の最終段を除くそれぞれに対して設けられ、演算器の演算結果と、上記遅延器で1サイクル遅延させた演算結果との一方を選択して次段の演算器に出力する選択手段と
を含む演算部を備え、上記選択手段での選択状態を制御することで、当該演算部により複数の演算を集約して処理することを特徴とするマイクロプロセッサ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013031095A JP2014160393A (ja) | 2013-02-20 | 2013-02-20 | マイクロプロセッサ及び演算処理方法 |
US14/158,491 US20140237216A1 (en) | 2013-02-20 | 2014-01-17 | Microprocessor |
CN201410052733.XA CN103995798A (zh) | 2013-02-20 | 2014-02-17 | 微处理器和运算处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013031095A JP2014160393A (ja) | 2013-02-20 | 2013-02-20 | マイクロプロセッサ及び演算処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014160393A true JP2014160393A (ja) | 2014-09-04 |
Family
ID=51309968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013031095A Pending JP2014160393A (ja) | 2013-02-20 | 2013-02-20 | マイクロプロセッサ及び演算処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140237216A1 (ja) |
JP (1) | JP2014160393A (ja) |
CN (1) | CN103995798A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116005A (zh) * | 2021-11-29 | 2022-03-01 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943756B (zh) * | 2017-12-15 | 2021-03-23 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09319578A (ja) * | 1996-03-29 | 1997-12-12 | Matsushita Electric Ind Co Ltd | 可変パイプライン段数のデータ処理装置 |
JP2003316566A (ja) * | 2002-04-24 | 2003-11-07 | Matsushita Electric Ind Co Ltd | パイプラインプロセッサ |
US20030226000A1 (en) * | 2002-05-30 | 2003-12-04 | Mike Rhoades | Collapsible pipeline structure and method used in a microprocessor |
JP2004062281A (ja) * | 2002-07-25 | 2004-02-26 | Nec Micro Systems Ltd | パイプライン演算処理装置及びパイプライン演算制御方法 |
WO2008012874A1 (fr) * | 2006-07-25 | 2008-01-31 | National University Corporation Nagoya University | Dispositif de traitement d'opération |
JP2008192124A (ja) * | 2006-07-25 | 2008-08-21 | Univ Nagoya | 演算処理装置 |
JP2009506466A (ja) * | 2005-09-28 | 2009-02-12 | インテル・コーポレーション | 拡張関数を持つ混合モード浮動小数点パイプライン |
JP2011108020A (ja) * | 2009-11-18 | 2011-06-02 | Mitsubishi Electric Corp | 信号処理装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049860A (en) * | 1998-02-19 | 2000-04-11 | International Business Machines Corporation | Pipelined floating point stores |
TWI269228B (en) * | 2003-01-07 | 2006-12-21 | Ibm | Floating point unit, processor chip, and computer system to resolve data dependencies |
US7496779B2 (en) * | 2006-06-13 | 2009-02-24 | Via Technologies, Inc. | Dynamically synchronizing a processor clock with the leading edge of a bus clock |
CN100581069C (zh) * | 2007-06-27 | 2010-01-13 | 哈尔滨工程大学 | Pn序列码型盲估计方法与装置 |
CN100505650C (zh) * | 2007-07-18 | 2009-06-24 | 哈尔滨工业大学 | Modbus RTU帧内与帧间字符间隔时间设置和检测显示的方法 |
-
2013
- 2013-02-20 JP JP2013031095A patent/JP2014160393A/ja active Pending
-
2014
- 2014-01-17 US US14/158,491 patent/US20140237216A1/en not_active Abandoned
- 2014-02-17 CN CN201410052733.XA patent/CN103995798A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09319578A (ja) * | 1996-03-29 | 1997-12-12 | Matsushita Electric Ind Co Ltd | 可変パイプライン段数のデータ処理装置 |
JP2003316566A (ja) * | 2002-04-24 | 2003-11-07 | Matsushita Electric Ind Co Ltd | パイプラインプロセッサ |
US20030226000A1 (en) * | 2002-05-30 | 2003-12-04 | Mike Rhoades | Collapsible pipeline structure and method used in a microprocessor |
JP2004062281A (ja) * | 2002-07-25 | 2004-02-26 | Nec Micro Systems Ltd | パイプライン演算処理装置及びパイプライン演算制御方法 |
JP2009506466A (ja) * | 2005-09-28 | 2009-02-12 | インテル・コーポレーション | 拡張関数を持つ混合モード浮動小数点パイプライン |
WO2008012874A1 (fr) * | 2006-07-25 | 2008-01-31 | National University Corporation Nagoya University | Dispositif de traitement d'opération |
JP2008192124A (ja) * | 2006-07-25 | 2008-08-21 | Univ Nagoya | 演算処理装置 |
JP2011108020A (ja) * | 2009-11-18 | 2011-06-02 | Mitsubishi Electric Corp | 信号処理装置 |
Non-Patent Citations (12)
Title |
---|
CSNG200401704028; 嶋田創,安藤秀樹,島田俊夫: 'パイプラインステージ統合:将来のモバイルプロセッサのための消費エネルギー削減技術' 先進的計算基盤システムシンポジウムSACSIS2003論文集 , 20030528, Pages:283〜290, 社団法人情報処理学会 * |
CSNG200500867002; 市川裕二,佐々木敬泰,弘中哲夫,北村俊明,近藤利夫: '可変パイプライン手法によるプロトタイプ低消費エネルギープロセッサの設計' 電子情報通信学会技術研究報告 第104巻,第241号,(CPSY2004-20〜24), 20040725, Pages:7〜12, 社団法人電子情報通信学会 * |
CSNG200800573026; 尾形幸亮,姚駿,嶋田創,三輪忍,富田眞治: 'ALU Cascadingのための動的命令スケジューラ' 先進的計算基盤システムシンポジウムSACSIS2008論文集 , 20080604, Pages:105〜104, 社団法人情報処理学会 * |
CSNG201000079003; 野村和正,佐々木敬泰,大野和彦,近藤利夫: '可変パイプライン段数プロセッサのためのメモリアクセスに着目した細粒度なモード切換えコントローラ' 電子情報通信学会技術研究報告 第109巻,第319号,, 20091126, Pages13〜18, 社団法人電子情報通信学会 * |
JPN6014055196; T. Sasaki, Y. Ichikawa, T. Hironaka, T. Kitamura, T. Kondo: 'Evaluation of low-energy and high-performance processor using variable stages pipeline technique' IET Computers and Digital Techniques Vol:2, No:3, 20080418, Pages:230-238, The Institution of Engineering and * |
JPN6014055197; 市川裕二,佐々木敬泰,弘中哲夫,北村俊明,近藤利夫: '可変パイプライン手法によるプロトタイプ低消費エネルギープロセッサの設計' 電子情報通信学会技術研究報告 第104巻,第241号,(CPSY2004-20〜24), 20040725, Pages:7〜12, 社団法人電子情報通信学会 * |
JPN6014055198; 野村和正,佐々木敬泰,大野和彦,近藤利夫: '可変パイプライン段数プロセッサのためのメモリアクセスに着目した細粒度なモード切換えコントローラ' 電子情報通信学会技術研究報告 第109巻,第319号,, 20091126, Pages13〜18, 社団法人電子情報通信学会 * |
JPN6014055199; 田中将輝: '修士論文 可変パイプライン段数アーキテクチャへのパワーゲーティング適用に関する研究' [online] , 2011, 三重大学大学院工学研究科博士前期課程情報工学専攻, * |
JPN6014055200; Hajime Shimada, Hideki Ando, Toshio Shimada: '"Pipeline Stage Unification : A Low-Energy Consumption Technique for Future Mobile Processors' Proceedings of the 2003 International Symposium on Low Power Electronics and Design (ISLPED'03) , 20030825, Pages:326-329, IEEE * |
JPN6014055201; 嶋田創,安藤秀樹,島田俊夫: 'パイプラインステージ統合:将来のモバイルプロセッサのための消費エネルギー削減技術' 先進的計算基盤システムシンポジウムSACSIS2003論文集 , 20030528, Pages:283〜290, 社団法人情報処理学会 * |
JPN6014055202; 嶋田創,安藤秀樹,島田俊夫: '低消費電力のための可変パイプライン' 情報処理学会研究報告 vol:2001,no:116, 20011128, Pages:57〜62, 社団法人情報処理学会 * |
JPN6014055203; 尾形幸亮,姚駿,嶋田創,三輪忍,富田眞治: 'ALU Cascadingのための動的命令スケジューラ' 先進的計算基盤システムシンポジウムSACSIS2008論文集 , 20080604, Pages:105〜104, 社団法人情報処理学会 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116005A (zh) * | 2021-11-29 | 2022-03-01 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
CN114116005B (zh) * | 2021-11-29 | 2022-12-23 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103995798A (zh) | 2014-08-20 |
US20140237216A1 (en) | 2014-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8612726B2 (en) | Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type | |
US8443170B2 (en) | Apparatus and method for performing SIMD multiply-accumulate operations | |
US8473880B1 (en) | Synchronization of parallel memory accesses in a dataflow circuit | |
US6304955B1 (en) | Method and apparatus for performing latency based hazard detection | |
US20020169942A1 (en) | VLIW processor | |
GB2503438A (en) | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions | |
JP2011096254A (ja) | 乗累算演算を実行するための装置および方法 | |
KR100471794B1 (ko) | 가변파이프라인단수의데이터처리장치 | |
US20070260857A1 (en) | Electronic Circuit | |
KR20080028410A (ko) | 파이프라인 마이크로프로세서에서의 전력 절감을 위한시스템 및 방법 | |
JP2014160393A (ja) | マイクロプロセッサ及び演算処理方法 | |
WO2019023910A1 (zh) | 数据处理方法和设备 | |
JP2011034189A (ja) | ストリームプロセッサ及びそのタスク管理方法 | |
KR100960148B1 (ko) | 데이터 프로세싱 회로 | |
CN113986354A (zh) | 基于risc-v指令集的六级流水线cpu | |
JP2003263313A (ja) | デジタルプロセッサおよび命令の選択方法 | |
JP2006018411A (ja) | プロセッサ | |
JP2006293741A (ja) | プロセッサ | |
JP2584156B2 (ja) | プログラム制御型プロセッサ | |
JP2014164659A (ja) | プロセッサ | |
JP7384374B2 (ja) | 中央演算処理装置 | |
JP5786719B2 (ja) | ベクトルプロセッサ | |
JP3795449B2 (ja) | 制御フローコードの分離によるプロセッサの実現方法及びそれを用いたマイクロプロセッサ | |
US20140281368A1 (en) | Cycle sliced vectors and slot execution on a shared datapath | |
JP2001092658A (ja) | データ処理回路及びデータ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141224 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150106 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150512 |