JPH1124929A - 演算処理装置およびその方法 - Google Patents

演算処理装置およびその方法

Info

Publication number
JPH1124929A
JPH1124929A JP9174407A JP17440797A JPH1124929A JP H1124929 A JPH1124929 A JP H1124929A JP 9174407 A JP9174407 A JP 9174407A JP 17440797 A JP17440797 A JP 17440797A JP H1124929 A JPH1124929 A JP H1124929A
Authority
JP
Japan
Prior art keywords
instruction
branch
address
storage unit
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
Application number
JP9174407A
Other languages
English (en)
Inventor
Hiroichi Hanaki
博一 花木
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP9174407A priority Critical patent/JPH1124929A/ja
Priority to US09/096,574 priority patent/US6269439B1/en
Publication of JPH1124929A publication Critical patent/JPH1124929A/ja
Pending legal-status Critical Current

Links

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/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Abstract

(57)【要約】 【課題】 パイプライン処理において、分岐命令による
処理効率の低下を効果的に抑制できる演算処理装置を提
供する。 【解決手段】 IDモジュール44において、命令をデ
コードした結果、分岐命令であると認識した場合に、次
のサイクルで、EXモジュール46において分岐の有無
を判定すると共に、IFモジュール42において分岐先
の命令と非分岐先の命令とを同時にフェッチする。そし
て、次のサイクルで、分岐の有無の判定結果に基づい
て、フェッチした分岐先の命令および非分岐先の命令の
いずれかを選択し、この選択した命令をIDモジュール
44においてデコードする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、演算処理装置およ
びその方法に関する。
【0002】
【従来の技術】DSP(Digital Signal Processor)など
に内蔵されるRISC(Reduced Instruction Set Compu
ter)プロセッサは、一般的に、以下に示すようにしてプ
ログラムに応じた演算処理を行う。すなわち、プロセッ
サでは、例えば、プログラムに含まれる命令のそれぞれ
について、インストラクションメモリから命令をフェッ
チする(IF)ステージ、フェッチした命令をデコード
(解読)する(ID)ステージ、デコードした命令を実
行する(EX)ステージ、メモリにアクセスする(ME
M)ステージおよびアクセスしたメモリに結果を書き込
む(WB)ステージを順に行うことで、その命令の演算
処理を行っている。この場合に、次の命令をフェッチす
るタイミングを、先の命令についてのWBステージが終
了したタイミングにすると、先の命令のフェッチを開始
するタイミングから、次の命令のWBステージが終了す
るタイミングまで、IFステージ、IDステージ、EX
ステージ、MEMステージおよびWBステージのそれぞ
れに費やされる時間の総和を2倍した時間が必要とな
る。図6は、従来のコンピュータのプロセッサ1のブロ
ック図である。図6に示すように、プロセッサ1は、I
Fモジュール2、レジスタ3、IDモジュール4、レジ
スタ5、EXモジュール6、レジスタ7、MEMモジュ
ール8、レジスタ9、WBモジュール10およびコント
ローラ11を有する。
【0003】IFモジュール2、IDモジュール4、E
Xモジュール6、MEMモジュール8およびWBモジュ
ール10は、それぞれIFステージ、IDステージ、E
Xステージ、MEMステージおよびWBステージを実行
する。
【0004】ここで、従来から、プロセッサ1では、単
位時間当たりの演算量を増やすために、複数の命令につ
いて、上述した各ステージの演算を並列的に行うパイプ
ライン処理が採用されている。パイプライン処理では、
図7に示すように、各ステージの処理を1サイクル内に
終了するようにし、命令を1サイクル毎に順にプロセッ
サに入力し、異なる命令のIFステージ、IDステー
ジ、EXステージ、MEMステージおよびWBステージ
を並列に実行する。
【0005】具体的には、プロセッサ1では、図7に示
すように、命令n〜n+4を、1サイクル間隔でプロセ
ッサ1に入力し、サイクル20において、命令nのWB
ステージと、命令n+1のMEMステージと、命令n+
2のEXステージと、命令n+3のIDステージと、命
令n+4のIFステージとを並列に行う。このように、
5段のパイプライン処理を採用すると、パイプライン処
理を採用しない場合に比べて、1サイクル単位の演算量
を5倍に高めることができる。
【0006】なお、上述したプロセッサ1では、5段の
パイプライン処理を採用した場合について例示したが、
命令の処理をさらに細分化して、各ステージの処理を単
純化することで、クロック周波数を高め、単位時間当た
りの演算量をさらに増やすことも可能である。
【0007】
【発明が解決しようとする課題】上述したように、プロ
セッサ1では、図7に示すように、命令nについてEX
ステージを開始したときに、命令n+1のIDステージ
および命令n+2のIFステージを開始する。ところ
で、命令nが分岐命令であった場合、命令nが分岐命令
であることはIDステージで認識されるが、分岐するか
否か、すなわち分岐条件が満たされているか否かは、E
Xステージにおいて命令nを処理して初めて判定され
る。従って、命令nが分岐命令であると判明したときに
は、命令nの後続の命令n+1,n+2は、既にフェッ
チされている。
【0008】このとき、そのままパイプラインに、命令
n+1,n+2を、流し続けると、非分岐先の命令(分
岐命令の直後に配置された命令)が実行されてしまい、
正しい動作を行うことができない。そのため、例えば、
図8に示すように、EXステージにおいて分岐すると判
定された時に、既にフェッチした後続の命令n+1,n
+2を廃棄して、次のサイクルから、分岐先の命令m,
m+1,..を順にフェッチする。しかしながら、この
ように既にフェッチした命令を破棄すると、処理効率が
低下してしまうという問題がある。例えば、図8に示す
場合には、分岐の発生によって、2サイクル遅延する。
このような問題を解決するために、分岐命令に後続する
命令のうち、分岐の有無の判定結果とは無関係に必ず実
行される命令を、分岐命令の直後に配置し、分岐の有無
によって実行の有無が決定される命令を遅延して行う遅
延分岐という手法を採用する場合がある。ここで、分岐
命令に後続する命令のうち、分岐の有無とは無関係に実
行される命令群を遅延スロットと呼ぶ。
【0009】このような遅延分岐を採用した場合に、遅
延スロットの命令の数が、分岐の発生によってフェッチ
された後に廃棄される可能性のある命令の数以上であれ
ば、遅延スロットを分岐命令の直後に埋め込むことがで
きるが、そうでない場合には、分岐命令の直後に、何も
行わないnop(no operation)命令を埋め込む必要があ
り、処理効率が低下してしまうという問題がある。例え
ば、図7に示す例では、遅延スロットの命令数が2以上
ないと、nop命令を埋め込む必要があり、処理効率が
低下してしまう。
【0010】また、IDステージにおいて、分岐命令を
認識したときにパイプラインを停止し、分岐するか否か
が決定してから分岐先もしくは非分岐先の命令をフェッ
チしてパイプラインを再始動させる方法などもある。
【0011】しかしながら、いずれの方法でも、分岐命
令を実行(分岐の判定)するまでの間は、次にフェッチ
すべき命令を特定できないので、フェッチすべき命令を
特定するまでの間、パイプラインが停止し、処理効率が
下がってしまう。このようにパイプライン処理を採用し
たプロセッサ1では、分岐命令よる、分岐ペナルティー
が存在し、これをいかに削減するかが、処理効率を高め
る上で重要である。
【0012】この分岐ペナルティーを少しでも削減する
ために、分岐するか否かを予め予測しておく方法もある
が、予測が外れた場合に大きなペナルティーが生じる。
また、予測するための回路を設けることで、プロセッサ
が大規模化してしまうという問題もある。また、分岐判
定をIDステージ中に行って即座に分岐させる方法もあ
るが、その際、判定の対象となるデータが分岐命令の前
の命令で演算中(EXステージ)であるなどの場合にク
リティカルパスとなり、高速実装が困難である。
【0013】本発明は、上述した従来技術に鑑みてなさ
れ、パイプライン処理において、分岐命令による処理効
率の低下を効果的に抑制できる演算処理装置およびその
方法を提供することを目的とする。
【0014】
【課題を解決するための手段】上述した従来技術の問題
点を解決し、上述した目的を達成するために、本発明の
演算処理装置は、少なくとも、フェッチ手段による命令
記憶部に記憶された命令のフェッチ処理と、デコード手
段による前記フェッチした命令のデコード処理と、演算
手段による前記デコード処理の結果に応じた演算処理
と、記憶処理手段による前記演算処理の結果の記憶処理
とをパイプライン方式で行う演算処理装置であって、前
記フェッチ手段は、前記命令記憶部上のアドレスを、順
次にインクリメントして指し示すプログラムカウンタ
と、デコードされた命令が、分岐命令である場合に、当
該分岐命令に含まれる分岐先のアドレスを記憶するアド
レス記憶部と、同時にアクセス可能な複数のバンク領域
に命令を記憶する命令記憶部と、デコードされた命令が
分岐命令である場合に、前記プログラムカウンタによっ
て指し示される前記命令記憶部上のアドレスに記憶され
た命令と、前記アドレス記憶部に記憶されたアドレスに
よって指し示される前記命令記憶部上のアドレスに記憶
された命令とを同時にフェッチするフェッチ部と、前記
分岐命令についての分岐条件の判定結果に基づいて、前
記同時にフェッチした命令のうち一方の命令を選択して
前記デコード手段に出力する選択部とを有する。ここ
で、前記命令記憶部には、分岐命令による分岐先の命令
と、非分岐先の命令とが、異なるバンクに記憶してあ
る。
【0015】また、本発明の演算処理方法は、少なくと
も、命令記憶部に記憶された命令のフェッチ処理と、前
記フェッチした命令のデコード処理と、前記デコード処
理の結果に応じた演算処理と、前記演算処理の結果の記
憶処理とをパイプライン方式で行う演算処理方法であっ
て、前記命令記憶部上のアドレスを順次にインクリメン
トして、非分岐先の命令のアドレスを指し示し、デコー
ドされた命令が、分岐命令である場合に、当該分岐命令
に含まれる分岐先のアドレスを記憶し、同時にアクセス
可能な複数のバンク領域を備えた命令記憶部に、分岐先
の命令と非分岐先の命令とを異なるバンク領域に記憶
し、デコードされた命令が分岐命令である場合に、前記
指し示された前記命令記憶部上のアドレスに記憶された
非分岐先の命令と、前記アドレス記憶部に記憶されたア
ドレスによって指し示される前記命令記憶部上のアドレ
スに記憶された分岐先の命令とを同時にフェッチし、前
記分岐命令についての分岐条件の判定結果に基づいて、
前記同時にフェッチした命令のうち一方の命令を選択し
てデコードする。
【0016】
【発明の実施の形態】以下、本発明の実施形態に係わる
プロセッサについて説明する。図1は、本実施形態のプ
ロセッサ41のブロック図である。図1に示すように、
プロセッサ41は、例えば、IFモジュール42、レジ
スタ43、IDモジュール44、レジスタ45、EXモ
ジュール46、レジスタ47、MEMモジュール48、
レジスタ49、WBモジュール50およびコントローラ
51を有する。
【0017】IFモジュール42、IDモジュール4
4、EXモジュール46、MEMモジュール48および
WBモジュール50は、それぞれIFステージ、IDス
テージ、EXステージ、MEMステージおよびWBステ
ージを実行する。プロセッサ41は、前述したプロセッ
サ1と同様に、パイプライン処理を行うが、分岐命令の
処理がプロセッサ1とは異なる。すなわち、プロセッサ
41では、プロセッサ1と同様に、図6に示すように、
各ステージの処理を1サイクル内に終了するようにし、
命令を順に1サイクル毎にプロセッサに入力し、5個の
命令のIFステージ、IDステージ、EXステージおよ
びMEMステージを並列に実行してパイプライン処理を
行う。また、プロセッサ41では、プロセッサ1とは異
なり、IDモジュール44において、命令をデコードし
た結果、分岐命令であると認識した場合に、次のサイク
ルで、EXモジュール46において分岐の有無を判定す
ると共に、IFモジュール42において分岐先の命令と
非分岐先の命令とを同時にフェッチする。そして、次の
サイクルで、分岐の有無の判定結果に基づいて、フェッ
チした分岐先の命令および非分岐先の命令のいずれかを
選択し、この選択した命令をIDモジュール44におい
てデコードする。
【0018】以下、図1に示すプロセッサ41の構成要
素について詳細に説明する。先ず、IFモジュール42
について説明する。図1に示すように、IFモジュール
42は、例えば、プログラムカウンタ60、インストラ
クションメモリ61および選択部としてのマルチプレク
サ62を有する。プログラムカウンタ60は、コントロ
ーラ51からの制御信号S51aに基づいて、次に読み
出しを行う命令のインストラクションメモリ61上のア
ドレスを指し示し、1サイクル毎にアドレスを順次にイ
ンクリメントする。
【0019】図2は、インストラクションメモリ61の
ブロック図である。図2に示すように、インストラクシ
ョンメモリ61は、命令記憶部としてのメモリ80、フ
ラグレジスタ81、アドレスレジスタ82,83、フェ
ッチ部としてのアクセス制御部841 〜848 、マルチ
プレクサ851 〜858 およびマルチプレクサ86,8
7を有する。メモリ80は、例えば、バンク801 〜8
8 の8個のバンクを有するシングルポートメモリであ
り、これら8個のバンクに同時にアクセスできるように
なっている。このように、メモリ80として、シングル
ポートメモリを用いることで、装置構成を小規模かつ安
価なものにすることができる。なお、メモリ80のバン
ク数は、2のべき乗にしておくのが好ましい。
【0020】バンク801 〜808 には、図3に示すよ
うに、プログラム中に命令1,2,3,4,5,6,
7,8を順に、それぞれバンク801 ,802 ,8
3 ,804 ,805 ,806 ,807 ,808 に記憶
し、次に、命令9,...を、バンク801 からバンク
808 に向かって順に記憶する。このようにすること
で、分岐命令があった場合に、分岐先の命令と非分岐先
の命令とが同一のバンクに記憶される確率は1/8にな
る。すなわち、分岐先の命令と非分岐先の命令とが同一
のバンクに記憶されると、これらの命令を同時にフェッ
チできなくなってしまう。このように、分岐先の命令と
非分岐先の命令とが同一のバンクに記憶されてしまった
場合には、分岐命令あるいは分岐先の命令の何れか一方
を、プログラムのセマンティクス(意味)が変わらない
ように、他の命令と入れ替える。それができない場合に
は、nop(空)命令を挿入して、分岐先の命令と非分
岐先の命令とが同一のバンクに記憶されないように、命
令の位置をずらす。その結果、分岐命令について、分岐
先の命令と非分岐先の命令とを、異なるバンクに記憶す
ることができ、これらの命令を同時に読み出すことが可
能になる。
【0021】このように、メモリ80を8バンク構成に
した場合、例えば、アドレスレジスタ82,83に記憶
されたアドレスの下位3ビットが、バンク番号を示し、
それより上位のビットが各バンクにおけるアドレスを示
すようにする。バンク801 〜808 は、アドレスレジ
スタ82あるいは83に記憶されたアドレスの下位3ビ
ットが、それぞれ「000」、「001」、「01
0」、「011」、「100」、「101」、「11
1」のときにアクティブになる。
【0022】アドレスレジスタ82は、プログラムカウ
ンタ60が指し示す非分岐先の命令が記憶されたメモリ
80上のアドレスを記憶する。アドレスレジスタ83
は、IDモジュール44から入力した、分岐先の命令が
記憶されたメモリ80上のアドレスを記憶する。このよ
うに、IFモジュール42では、メモリ80の2バンク
を同時にアクセスするために、2個のアドレスレジスタ
を備えている。フラグレジスタ81は、アドレスレジス
タ83に記憶された分岐先のアドレスが有効であるか否
かを示すフラグを記憶する。フラグレジスタ81には、
IDモジュール44からアドレスレジスタ83に分岐先
のアドレスを記憶するときに「1」を示すフラグが記憶
され、それ以外のときには、「0」を示すフラグが記憶
される。
【0023】マルチプレクサ851 〜858 は、例え
ば、コントローラ51からの制御信号S51aに基づい
て、アドレスレジスタ82に記憶された非分岐先の命令
のアドレスと、アドレスレジスタ83に記憶された分岐
先の命令のアドレスとのうち何れか一方を選択して、そ
れぞれアクセス制御部841 〜848 に出力する。アク
セス制御部841 〜848 は、それぞれ、マルチプレク
サ851 〜858からのアドレスに基づいて、そのアド
レスの下位3ビットが対応するバンク801 〜808
示している場合には、そのアドレスの残りの上位ビット
を用いて、バンク801 〜808 から命令を読み出す。
また、アクセス制御部841 〜848 は、フラグレジス
タ81に記憶されたフラグが「1」の場合には、アドレ
スレジスタ83に記憶されたアドレスによるバンク80
1 〜808 への読み出し動作は行わない。
【0024】マルチプレクサ86は、アクセス制御部8
1 〜848 からの読み出し結果のうち、アドレスレジ
スタ82に記憶されたアドレスの下位3ビットで指定さ
れるバンク801 〜808 からの読み出し結果を選択
し、この選択された分岐先命令S86をマルチプレクサ
62に出力する。マルチプレクサ86は、アクセス制御
部841 〜848 からの読み出し結果のうち、アドレス
レジスタ83に記憶されたアドレスの下位3ビットで指
定されるバンク801 〜808 からの読み出し結果を選
択し、この選択された非分岐先命令S87をマルチプレ
クサ62に出力する。
【0025】IFモジュール42では、アドレスレジス
タ82に記憶されたアドレスで指し示される非分岐先命
令のアドレスと、アドレスレジスタ82に記憶されたア
ドレスで指し示される分岐先命令とを同時に読み出して
おく。このとき、分岐命令はEXステージ上にあり分岐
するか否かを判定中である。この判定サイクルが終わる
前にはEXモジュール46から分岐判定結果S46がマ
ルチプレクサ62に返されるので、その結果により、同
時に読み出しておいた分岐先命令S86あるいは非分岐
先命令S87のいずれかをマルチプレクサ62において
選択し、IFモジュール42の処理を終了する。この選
択された命令S62は、図1に示すレジスタ43でラッ
チされた後に、IDモジュール44に出力される。
【0026】次に、図1に示すIDモジュール44につ
いて説明する。IDモジュール44は、図1に示すよう
に、デコーダ65およびレジスタファイル66を有す
る。デコーダ65は、制御信号S51bに基づいて、レ
ジスタ43を介してIFモジュール42から入力した命
令S62をデコードし、命令実行のための各種の制御信
号を作成し、この制御信号S65をコントローラ51に
出力すると共に、レジスタファイル66にアクセスし、
EXモジュール46における演算に用いるデータを読み
出し、この読み出したデータS66をレジスタ45でラ
ッチした後に、後段のEXモジュール46に出力する。
また、デコーダ65は、レジスタ43からの命令S62
をデコードした結果、分岐命令であった場合に、分岐先
のアドレスS44aを図2に示すIFモジュール42の
アドレスレジスタ83に出力して記憶させると共に、I
Fモジュール42のフラグレジスタ81に「1」を示す
フラグを記憶させる。これにより、次のサイクルでは、
この分岐命令がEXモジュール46において分岐判定さ
れると同時に、IFモジュール42において分岐先命令
と非分岐先命令とが同時に読み出される。
【0027】次に、図1に示すEXモジュール46につ
いて説明する。EXモジュール46は、演算処理を行う
ALU(Arithmetic and Logic Unit)67、分岐判定回
路68および図示しないアドレス生成回路を有する。A
LU67は、コントローラ51からのデコード結果に応
じた制御信号S51cに基づいて、データS66を用い
て、演算処理を行う。アドレス生成回路は、ALU67
の演算処理結果のデータを記憶するデータメモリ69上
のアドレスを生成する。なお、ALU67は、データメ
モリ69に記憶されたデータを、レジスタファイル66
に読み出した後に、レジスタファイル66にアクセスを
行なって、そのデータを演算処理に用いる。また、AL
U67は、レジスタファイル66を介して、演算処理結
果をデータメモリ69に記憶する。
【0028】EXモジュール46は、ALU67の演算
処理結果と、アドレス生成回路が生成したアドレスとを
レジスタ47を介してMEMモジュール48に出力す
る。分岐判定回路68は、ALU67において演算中の
命令が分岐命令であり、かつ、分岐条件を評価した結
果、分岐すると判定した場合に、分岐することを指示す
る分岐判定結果S46をIFモジュール42に出力す
る。IFモジュール42は、分岐判定結果S46に基づ
いて、同時にフェッチした分岐先命令もしくは非分岐命
令のいずれかを図2に示すマルチプレクサ62で選択し
て出力する。
【0029】次に、MEMモジュール48について説明
する。MEMモジュール48は、データメモリ69およ
び図示しない制御回路を有する。MEMモジュール48
は、書込命令の場合には、コントローラ51からの制御
信号S51dに基づいて、レジスタ47を介してEXモ
ジュール46から入力したデータメモリ69上のアドレ
スに、EXモジュール46から入力した演算処理結果の
データを記憶する(書き込む)。
【0030】MEMモジュール48は、読出命令の場合
には、コントローラ51からの制御信号S51dに基づ
いて、レジスタ47を介してEXモジュール46から入
力したデータメモリ69上のアドレスから、データを読
み出す。また、MEMモジュール48は、データメモリ
69にアクセスを行わない命令の場合には、レジスタ4
7を介してEXモジュール46から入力いた演算処理結
果のデータを、レジスタ49を介して、そのままWBモ
ジュール50に出力する。
【0031】さらに、MEMモジュール48は、データ
メモリ69から読み出したデータ、あるいは、EXモジ
ュール46からの演算結果のデータのいずれかを、コン
トローラ51からの制御信号に基づいて、マルチプレク
サで選択し、レジスタ49を介して、WBモジュール5
0に出力する。
【0032】次に、WBモジュール50について説明す
る。WBモジュール50は、制御信号S51eに基づい
て、レジスタ49を介して、MEMモジュール48から
入力したデータを、IDモジュール44のレジスタファ
イル66に記憶する。
【0033】以下、プロセッサ41の動作について説明
する。図4は、プロセッサ41において分岐命令による
分岐が発生した場合のパイプライン処理を説明するため
の図である。先ず、サイクル「1」において、図1に示
すIFモジュール42で命令nがフェッチされ、次のサ
イクル「2」において、IDモジュール44で命令nの
デコードが行われると共に、IFモジュール42で命令
n+1のフェッチが行われる。このとき、IFモジュー
ル42では、図2に示すフラグレジスタ81に「0」を
示すフラグが記憶されており、図2に示すアクセス制御
部841 〜848 は、アドレスレジスタ82に記憶され
たプログラムカウンタ60によって指し示されるアドレ
スに基づいて、メモリ80から命令を読み出し、この読
み出した命令をマルチプレクサ86,62を介して、レ
ジスタ43に出力する。また、IDモジュール44にお
いて、命令nが分岐命令であることが認識され、図1に
示すデコーダ65は、図2に示すインストラクションメ
モリ61のフラグレジスタ81に「1」を示すフラグを
記憶すると共に、アドレスレジスタ83に分岐先の命令
のアドレスを記憶する。
【0034】次に、図4に示すサイクル「3」におい
て、EXモジュール46の分岐判定回路68で、命令n
の分岐条件が満たされているか否かが判定され、例え
ば、分岐条件が満たされている場合に、そのことを示す
分岐判定結果S46を図1および図2に示すマルチプレ
クサ62に出力する。それと同時に、図2に示すインス
トラクションメモリ61において、アドレスレジスタ8
2およびアドレスレジスタ83に記憶されたアドレスに
基づいて、アクセス制御部841 〜848 において、メ
モリ80から分岐先命令mおよび非分岐先命令n+2が
読み出される。そして、非分岐先命令n+1(S86)
および分岐先命令m(S87)が、マルチプレクサ62
に出力され、マルチプレクサ62において、分岐判定結
果S46に基づいて、分岐先命令mが選択され、命令S
62としてレジスタ47を介して、MEMモジュール4
8に出力される。また、サイクル「2」においてIFモ
ジュール42でフェッチされた命令n+1は破棄され
る。
【0035】次に、サイクル「4」において、MEMモ
ジュール48、IDモジュール44およびIFモジュー
ル42で、それぞれ命令nのMEMステージ、命令mの
IDステージ、命令m+1のIFステージが行われる。
【0036】次に、サイクル「5」において、WBモジ
ュール50、EXモジュール46、IDモジュール44
およびIFモジュール42において、命令nのWBステ
ージ、命令mのEXステージ、命令m+1のIDステー
ジおよび命令m+2のIFステージがそれぞれ行われ
る。以下、同様に、分岐命令が存在しない限り、命令m
+3,m+4,..について、IFステージ、IDステ
ージ、EXステージ、MEMステージおよびWBステー
ジが順次に行われる。
【0037】図5は、プロセッサ41において分岐命令
による分岐が発生しない場合のパイプライン処理を説明
するための図である。この場合には、サイクル「1」,
「2」は、前述した図4に示す分岐命令による分岐が発
生する場合のパイプライン処理と同様の処理が行われ
る。
【0038】次に、サイクル「3」において、EXモジ
ュール46の分岐判定回路68で、命令nの分岐条件が
満たされているか否かが判定され、例えば、分岐条件が
満たされていない場合に、そのことを示す分岐判定結果
S46を図1および図2に示すマルチプレクサ62に出
力する。それと同時に、図2に示すインストラクション
メモリ61において、アドレスレジスタ82およびアド
レスレジスタ83に記憶されたアドレスに基づいて、ア
クセス制御部841 〜848 において、メモリ80から
分岐先命令mおよび非分岐先命令n+2が読み出され
る。そして、非分岐先命令n+2(S86)および分岐
先命令m(S87)が、マルチプレクサ62に出力さ
れ、マルチプレクサ62において、分岐判定結果S46
に基づいて、非分岐先命令n+2が選択され、命令S6
2としてレジスタ47を介して、MEMモジュール48
に出力される。また、サイクル2において、IFモジュ
ール42においてフェッチされた命令n+1は破棄され
る。
【0039】次に、サイクル「4」において、MEMモ
ジュール48、IDモジュール44およびIFモジュー
ル42で、それぞれ命令nのMEMステージ、命令n+
1のIDステージ、命令n+2のIFステージが行われ
る。
【0040】次に、サイクル「5」において、WBモジ
ュール50、EXモジュール46、IDモジュール44
およびIFモジュール42において、命令nのWBステ
ージ、命令n+1のEXステージ、命令n+2のIDス
テージおよび命令n+3のIFステージがそれぞれ行わ
れる。以下、同様に、分岐命令が存在しない限り、命令
n+4,n+5,..について、IFステージ、IDス
テージ、EXステージ、MEMステージおよびWBステ
ージが順次に行われる。
【0041】以上説明したように、プロセッサ41によ
れば、IDモジュール44において命令が分岐命令であ
ると認識された場合、次のサイクルで、EXモジュール
46において、この分岐命令が実行され分岐判定をして
いる間に、IFモジュール42では分岐先命令と非分岐
先命令の両方を同時に読み出してあり、分岐判定結果S
46が得られ次第、該当する命令を選択する。そのた
め、分岐判定結果S46が分岐および非分岐の何れであ
ろうと、その次のサイクルには分岐先命令あるいは非分
岐先命令をIDモジュール44に出力することができ
る。そのため、前述した従来の並列プロセッサ1に比べ
て、分岐発生による処理効率の低下を効果的に抑制でき
る。
【0042】具体的には、プロセッサ41によれば、従
来の分岐予測を行わない手法に比べると、分岐命令出現
回数に応じたサイクルだけ、処理時間を短縮することが
できる。また、プロセッサ41によれば、従来の分岐予
測を行う手法に比べると、分岐予測が外れた回数に応じ
たサイクルだけ、処理時間を短縮することができる。ま
た、プロセッサ41によれば、従来の遅延分岐手法と比
べると、遅延スロットを別の命令で埋められないために
挿入されたnop命令の数だけ分岐命令実行時の無駄な
クロック消費(分岐ペナルティー)を削減できることに
なり、処理時間を短縮できる。
【0043】本発明は上述した実施形態には限定されな
い。例えば、上述した実施形態では、図2に示すメモリ
80として、単数の読み出しポートを持つシングルポー
トメモリを例示したが、複数の読み出しポートを持つマ
ルチポートメモリを用いてもよい。また、上述した実施
形態では、図1に示すように、5段のパイプラン処理を
行う構成を例示したが、5段以上のパイプライン処理を
行う場合にも、本発明を適用できる。さらに、図1に示
すインストラクションメモリ61の構成は、同様の機能
を持つものであれば、特に図2に示す構成には限定され
ない。
【0044】
【発明の効果】以上説明したように、本発明によれば、
パイプライン処理において、分岐命令による処理効率の
低下を効果的に抑制できる。
【図面の簡単な説明】
【図1】図1は、本発明の実施形態に係わるのプロセッ
サのブロック図である。
【図2】図2は、図1に示すインストラクションメモリ
のブロック図である。
【図3】図3は、図2に示すメモリへの命令の記憶形態
を説明するための図である。
【図4】図4は、図1に示すプロセッサのパイプライン
処理において、分岐命令による分岐処理が実行される場
合の処理を説明するための図である。
【図5】図5は、図1に示すプロセッサのパイプライン
処理において、分岐命令による分岐処理が実行されない
場合の処理を説明するための図である。
【図6】図6は、従来のコンピュータのプロセッサのブ
ロック図である。
【図7】図7は、図6に示すプロセッサにおけるパイプ
ライン処理を説明するための図である。
【図8】図8は、図7に示すパイプライン処理において
分岐命令が実行された場合の処理を説明するための図で
ある。
【符号の説明】 41…プロセッサ、42…IFモジュール、43,4
5,47,49…レジスタ、46…EXモジュール、4
8…MEMモジュール、50…WBモジュール、60…
プログラムカウンタ、61…インストラクションメモ
リ、62…マルチプレクサ、65…デコーダ、66…レ
ジスタファイル、67…ALU、68…分岐判定回路、
69…データメモリ、80…メモリ、801 〜808
バンク、81…フラグレジスタ、82,83…アドレス
レジスタ、841 〜848 …アクセス制御部、851
858 ,86,87…マルチプレクサ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】少なくとも、フェッチ手段による命令記憶
    部に記憶された命令のフェッチ処理と、デコード手段に
    よる前記フェッチした命令のデコード処理と、演算手段
    による前記デコード処理の結果に応じた演算処理と、記
    憶処理手段による前記演算処理の結果の記憶処理とをパ
    イプライン方式で行う演算処理装置において、 前記フェッチ手段は、 前記命令記憶部上のアドレスを、順次にインクリメント
    して指し示すプログラムカウンタと、 デコードされた命令が、分岐命令である場合に、当該分
    岐命令に含まれる分岐先のアドレスを記憶するアドレス
    記憶部と、 同時にアクセス可能な複数のバンク領域に命令を記憶す
    る命令記憶部と、 デコードされた命令が分岐命令である場合に、前記プロ
    グラムカウンタによって指し示される前記命令記憶部上
    のアドレスに記憶された命令と、前記アドレス記憶部に
    記憶されたアドレスによって指し示される前記命令記憶
    部上のアドレスに記憶された命令とを同時にフェッチす
    るフェッチ部と、 前記分岐命令についての分岐条件の判定結果に基づい
    て、前記同時にフェッチした命令のうち一方の命令を選
    択して前記デコード手段に出力する選択部とを有する演
    算処理装置。
  2. 【請求項2】前記命令記憶部には、分岐命令による分岐
    先の命令と、非分岐先の命令とが、異なるバンクに記憶
    してある請求項1に記載の演算処理装置。
  3. 【請求項3】前記命令記憶部には、順次に連続して処理
    される前記バンク領域の数の命令が、異なるバンク領域
    に記憶してある請求項1に記載の演算処理装置。
  4. 【請求項4】前記命令記憶部は、単数の読み出しポート
    を持つシングルポートメモリである請求項1に記載の演
    算処理装置。
  5. 【請求項5】前記フェッチ手段は、 前記アドレス記憶部に記憶されているアドレスが有効で
    あるかを示すフラグを記憶するフラグ記憶部をさらに有
    し、 前記フェッチ部は、前記フラグ記憶部に記憶されたフラ
    グが有効であることを示す場合のみ、前記アドレス記憶
    部に記憶されたアドレスによって指し示される前記命令
    記憶部上のアドレスに記憶された命令をフェッチする請
    求項1に記載の演算処理装置。
  6. 【請求項6】前記フェッチ手段の前記フェッチ部は、 前記アドレスの第1の領域によって前記バンク領域を特
    定し、前記アドレスの第2の領域によってバンク領域内
    のアドレスを特定する請求項1に記載の演算処理装置。
  7. 【請求項7】前記デコード手段は、 前記選択部によって選択された命令を解読して、命令実
    行のための制御信号を生成するデコード部と、 演算手段において用いられるデータを記憶するデータ記
    憶部とを有する請求項1に記載の演算処理装置。
  8. 【請求項8】前記演算手段は、 算術論理部と、 分岐命令の分岐条件を判定する分岐判定部とを有する請
    求項1に記載の演算処理装置。
  9. 【請求項9】記憶処理手段は、 前記演算処理の結果を内蔵するデータ記憶部に記憶する
    処理と、前記演算処理の結果を前記デコード手段のデー
    タ記憶部に記憶する処理とを行う請求項1に記載の演算
    処理装置。
  10. 【請求項10】単数の前記フェッチ手段、デコード手
    段、演算手段および記憶処理手段を有する請求項1に記
    載の演算処理装置。
  11. 【請求項11】少なくとも、命令記憶部に記憶された命
    令のフェッチ処理と、前記フェッチした命令のデコード
    処理と、前記デコード処理の結果に応じた演算処理と、
    前記演算処理の結果の記憶処理とをパイプライン方式で
    行う演算処理方法において、 前記命令記憶部上のアドレスを順次にインクリメントし
    て、非分岐先の命令のアドレスを指し示し、 デコードされた命令が、分岐命令である場合に、当該分
    岐命令に含まれる分岐先のアドレスを記憶し、 同時にアクセス可能な複数のバンク領域を備えた命令記
    憶部に、分岐先の命令と非分岐先の命令とを異なるバン
    ク領域に記憶し、 デコードされた命令が分岐命令である場合に、前記指し
    示された前記命令記憶部上のアドレスに記憶された非分
    岐先の命令と、前記アドレス記憶部に記憶されたアドレ
    スによって指し示される前記命令記憶部上のアドレスに
    記憶された分岐先の命令とを同時にフェッチし、 前記分岐命令についての分岐条件の判定結果に基づい
    て、前記同時にフェッチした命令のうち一方の命令を選
    択してデコードする演算処理方法。
JP9174407A 1997-06-30 1997-06-30 演算処理装置およびその方法 Pending JPH1124929A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP9174407A JPH1124929A (ja) 1997-06-30 1997-06-30 演算処理装置およびその方法
US09/096,574 US6269439B1 (en) 1997-06-30 1998-06-12 Signal processor having pipeline processing that supresses the deterioration of processing efficiency and method of the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9174407A JPH1124929A (ja) 1997-06-30 1997-06-30 演算処理装置およびその方法

Publications (1)

Publication Number Publication Date
JPH1124929A true JPH1124929A (ja) 1999-01-29

Family

ID=15978026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9174407A Pending JPH1124929A (ja) 1997-06-30 1997-06-30 演算処理装置およびその方法

Country Status (2)

Country Link
US (1) US6269439B1 (ja)
JP (1) JPH1124929A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340589B2 (en) 2002-06-24 2008-03-04 Seiko Epson Corporation Shift prefix instruction decoder for modifying register information necessary for decoding the target instruction
US7340587B2 (en) 2004-06-15 2008-03-04 Seiko Epson Corporation Information processing apparatus, microcomputer, and electronic computer

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3473687B2 (ja) * 2000-03-29 2003-12-08 日本電気株式会社 分散パイプラインスケジューリング方法および方式
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US7003649B2 (en) * 2002-03-08 2006-02-21 Hitachi, Ltd. Control forwarding in a pipeline digital processor
US7594103B1 (en) 2002-11-15 2009-09-22 Via-Cyrix, Inc. Microprocessor and method of processing instructions for responding to interrupt condition
US7281120B2 (en) * 2004-03-26 2007-10-09 International Business Machines Corporation Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
CN1950797A (zh) * 2004-05-13 2007-04-18 皇家飞利浦电子股份有限公司 多指令字处理器中反馈连接的运行时间选择
TWI328771B (en) * 2005-07-15 2010-08-11 Nvidia Corp Pipelined central processing unit structure and method of processing a sequence of instructions
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
EP1978447B1 (en) * 2007-04-05 2011-02-16 STMicroelectronics (Research & Development) Limited Integrated circuit with restricted data access
US10228949B2 (en) 2010-09-17 2019-03-12 Intel Corporation Single cycle multi-branch prediction including shadow cache for early far branch prediction
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
US9940134B2 (en) 2011-05-20 2018-04-10 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
KR101842550B1 (ko) 2011-11-22 2018-03-28 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
EP2783281B1 (en) 2011-11-22 2020-05-13 Intel Corporation A microprocessor accelerated code optimizer
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) * 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
KR101963725B1 (ko) 2014-05-12 2019-04-01 인텔 코포레이션 자기 수정 코드에 하드웨어 지원을 제공하는 방법 및 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4439827A (en) * 1981-12-28 1984-03-27 Raytheon Company Dual fetch microsequencer
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US5165025A (en) * 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5696958A (en) * 1993-01-11 1997-12-09 Silicon Graphics, Inc. Method and apparatus for reducing delays following the execution of a branch instruction in an instruction pipeline

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340589B2 (en) 2002-06-24 2008-03-04 Seiko Epson Corporation Shift prefix instruction decoder for modifying register information necessary for decoding the target instruction
US7340587B2 (en) 2004-06-15 2008-03-04 Seiko Epson Corporation Information processing apparatus, microcomputer, and electronic computer

Also Published As

Publication number Publication date
US6269439B1 (en) 2001-07-31

Similar Documents

Publication Publication Date Title
JPH1124929A (ja) 演算処理装置およびその方法
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US6553488B2 (en) Method and apparatus for branch prediction using first and second level branch prediction tables
US9361110B2 (en) Cache-based pipline control method and system with non-prediction branch processing using a track table containing program information from both paths of a branch instruction
US5706459A (en) Processor having a variable number of stages in a pipeline
US20030061473A1 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US20020169942A1 (en) VLIW processor
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
US20070174592A1 (en) Early conditional selection of an operand
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
KR20100039121A (ko) 프로세서 및 그 명령어 번들 복원 방법
JP3802038B2 (ja) 情報処理装置
US7003649B2 (en) Control forwarding in a pipeline digital processor
US5928357A (en) Circuitry and method for performing branching without pipeline delay
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
JP2008299729A (ja) プロセッサ
JP2006053830A (ja) 分岐予測装置および分岐予測方法
US6266764B1 (en) Program controller for switching between first program and second program
JP3512707B2 (ja) マイクロコンピュータ
JP3765111B2 (ja) 分岐登録命令を有するプロセッサ
JPH06131180A (ja) 命令処理方式および命令処理装置
US20050114626A1 (en) Very long instruction word architecture
JP2883465B2 (ja) 電子計算機