JP2007102596A - Central processing unit - Google Patents
Central processing unit Download PDFInfo
- Publication number
- JP2007102596A JP2007102596A JP2005293242A JP2005293242A JP2007102596A JP 2007102596 A JP2007102596 A JP 2007102596A JP 2005293242 A JP2005293242 A JP 2005293242A JP 2005293242 A JP2005293242 A JP 2005293242A JP 2007102596 A JP2007102596 A JP 2007102596A
- Authority
- JP
- Japan
- Prior art keywords
- processing unit
- branch
- data
- program
- transfer
- 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
Images
Abstract
Description
本発明は中央処理装置に係り、特にプログラムの分岐予測手段を備えた中央処理装置に関する。 The present invention relates to a central processing unit, and more particularly, to a central processing unit including a program branch prediction unit.
年々パーソナルコンピュータ(以下、パソコン)や電子機器に用いられている中央処理装置(以下、CPU)への処理の負荷が増大し、処理能力の向上が望まれている。そのため、従来からCPUでは複数ステージのパイプライン処理を実行している(例えば、非特許文献1参照)。パイプライン処理ではCPUはプログラム分岐に係る処理時間を効率良く短縮することが処理能力向上に直結する。 The processing load on a central processing unit (hereinafter referred to as CPU) used in personal computers (hereinafter referred to as personal computers) and electronic devices is increasing year by year, and improvement in processing capacity is desired. Therefore, conventionally, a CPU executes a multi-stage pipeline process (see, for example, Non-Patent Document 1). In pipeline processing, the CPU can directly reduce the processing time related to program branching, which directly leads to improvement in processing capability.
図15はこの従来のパイプライン処理を実行するCPUの一例のブロック図を示す。同図において、CPUはプログラムを保存するプログラム保存領域(memory)1と、プログラム保存領域1からプログラムのロードを行うプログラムロード処理部(pre-fetch)2と、プログラムロード処理部2にロードされたプログラムを転送する転送処理部(Fetch stage)3と、転送処理部3から転送されたプログラムを復号する復号処理部(Decode stage)4と、復号処理部4から送られてきた復号データを実行する実行処理部(Execute stage)5と、実行処理部5から送られてきた実行結果を書き込む実行結果保存処理部(Writeback stage)とからなり、複数ステージのパイプライン処理を実行する。
FIG. 15 is a block diagram showing an example of a CPU that executes the conventional pipeline processing. In the figure, the CPU is loaded into a program storage area (memory) 1 for storing a program, a program load processing section (pre-fetch) 2 for loading a program from the
この従来のCPUでは、図16のタイミングチャートに示すように、最初の実行単位(サイクル)1Tでは、プログラムロード処理部2がプログラム保存領域1から読み出したプログラム(命令)を、転送処理部3が復号処理部4へ転送する処理F[0]を行い、次の実行単位2Tでは、転送処理部3が2番目のプログラムを復号処理部4へ転送する処理F[1}を行うと同時に、復号処理部4が転送された最初のプログラムを復号して復号データを出力する処理D[0]を行う。
In the conventional CPU, as shown in the timing chart of FIG. 16, in the first execution unit (cycle) 1T, the
次の実行単位3Tでは、復号データが入力された実行処理部5がその復号データを実行する処理E[0]を行うと同時に、転送処理部3が3番目のプログラムを復号処理部4へ転送する処理F[2}を行うと共に、復号処理部4が転送されてきた2番目のプログラムを復号して復号データを出力する処理D[1]を行う。次の実行単位4Tでは、実行処理部5で実行された実行結果を実行結果保存処理部6が書き込む処理W[0]を行うと共に、2番目の復号データが入力された実行処理部5がその復号データを実行する処理E[1]を行い、かつ、復号処理部4が転送されてきた3番目のプログラムを復号して復号データを出力する処理D[2]を行う。
In the
このとき、実行結果保存処理部6は、実行処理部5が次に実行すべきプログラムの実行順序を変更させる処理である分岐の発生があるかどうか判断するため、プログラムロード処理部2から転送処理部3へのプログラム転送、及び転送処理部3から復号処理部4へのプログラム転送は行わない。その後、実行結果保存処理部6は、実行処理部5で実行された2番目のプログラムの実行結果を実行単位5Tで書き込む処理W[1]を行った後、次の実行単位6Tの段階で、実行処理部5で実行された3番目のプログラムの実行結果を書き込む処理W[2]を行うと共に、分岐発生があるかどうかを決定し、その決定結果を示す分岐結果信号7をプログラムロード処理部2へ送出する。
At this time, the execution result
プログラムロード処理部2は、入力された分岐結果信号7が分岐発生無しを示すときは、次の実行単位7Tでプログラム保存領域1から4番目のプログラムを読み出してそれを転送処理部3が復号処理部4へ転送させる処理F[3]を行い、入力された分岐結果信号7が分岐発生有りを示すときは、次の実行単位7Tでプログラム保存領域1から分岐先の例えば7番目のプログラムを読み出してそれを転送処理部3が復号処理部4へ転送させる処理F[6]を行う。以下、同様の動作が繰り返される。
When the input
従って、従来のCPUにおけるプログラムの分岐は、図15の実行結果保存処理部6にて分岐があることを判断し、プログラムロード処理部2がその結果を用いて分岐先のプログラムをプログラム格納領域1より読み出しを行うことで、分岐処理を行っており、プログラムの分岐は、図16に示すように分岐判断が行えるまで、遅延スロットを挿入している。このため、図16の場合、従来のCPUでは、分岐処理が発生する度に、4T〜6Tに示したような3CPUサイクルの遅延が生じ、プログラムの量が多くなるほど分岐が増え、CPU動作に膨大な実行時間のロスが発生することが課題であった。
Therefore, the branch of the program in the conventional CPU is determined by the execution result
そこで、従来は上記の分岐処理にかかるオーバーヘッドを軽減するために、分岐発生頻度から分岐先を予測する機能を有することを特徴とするCPU(例えば、特許文献1参照)や、分岐予測のためにパイプライン処理を複数持つCPU(例えば、特許文献2参照)などが提案されている。 Therefore, conventionally, in order to reduce the overhead of the above branch processing, a CPU (for example, see Patent Document 1) having a function of predicting a branch destination from the branch occurrence frequency, for branch prediction A CPU having a plurality of pipeline processes (see, for example, Patent Document 2) has been proposed.
図17は上記の特許文献1記載の従来のCPUの一例のブロック図を示す。同図中、図15と同一構成部分には同一符号を付し、その説明を省略する。図17に示す従来のCPUでは、プログラムロード処理部8が、分岐命令のアドレスに対応した分岐先のアドレスと、アクセスした回数及び分岐予測結果をテーブルとしてバッファ9へ登録することで、分岐発生パターンから分岐予測の精度を上げるものである。
FIG. 17 is a block diagram showing an example of a conventional CPU described in
図18は上記の特許文献2記載の従来のCPUの一例のブロック図を示す。同図中、図15と同一構成部分には同一符号を付し、その説明を省略する。図18に示す従来のCPUは、分岐予測を行わずに遅延スロットを利用するタイプであるが、プログラム保存領域1から取得したデータをパイプラインへ導入する前に、予め分岐判断命令であるか否かをプログラムロード処理部10で判定し、分岐判断命令無しの非分岐命令はバッファ11aに格納し、分岐判断命令有りの分岐命令はバッファ11bに格納し、バッファ11aからの非分岐命令は転送処理部3a、復号処理部4a、実行処理部5aによりパイプライン処理すると共に、バッファ11bからの分岐命令は転送処理部3b、復号処理部4b、実行処理部5bによりパイプライン処理し、最終段の処理を実行結果保存処理部12で処理するものである。
FIG. 18 shows a block diagram of an example of a conventional CPU described in
しかしながら、図17に示した従来のCPUでは、分岐を発生させるアドレスへのアクセス回数が多くなければ、そのアドレスからの分岐先の予測精度が上げられないという問題があり、また、全ての分岐パターンを登録しておくことが必要であるため、回路規模が予測できず、プログラムの内容に左右され回路が大規模化する可能性があることが課題である。 However, the conventional CPU shown in FIG. 17 has a problem that the prediction accuracy of the branch destination from the address cannot be increased unless the number of accesses to the address causing the branch is large, and all the branch patterns. Therefore, the circuit size cannot be predicted, and there is a possibility that the circuit may be enlarged depending on the contents of the program.
また、図18に示した従来のCPUは、最終段の処理ステージ以外の処理ステージが、2系統のパイプライン処理ステージを形成する構成であるため、通常のパイプライン回路規模が単純に2倍近く増大することが課題である。 Further, the conventional CPU shown in FIG. 18 has a configuration in which the processing stages other than the final processing stage form two pipeline processing stages, so that the normal pipeline circuit scale is simply nearly double. Increasing is a challenge.
本発明は以上の点に鑑みなされたもので、より少ない回路規模で、かつ、遅延スロットを利用せずに分岐処理にかかるロスを取り除き得る分岐予測手段を備えた中央処理装置を提供することを目的とする。 The present invention has been made in view of the above points, and provides a central processing unit having a branch prediction unit capable of removing a loss associated with branch processing without using a delay slot with a smaller circuit scale. Objective.
上記目的を達成するため、本発明は、プログラムデータを格納しているプログラム保存領域と、プログラム保存領域からプログラムデータをロードするプログラムロード処理部と、プログラムロード処理部より転送されたプログラムデータを転送する転送処理部と、転送処理部から転送されたプログラムデータを復号する復号処理部と、復号処理部から送られてきた復号データを実行すると共に、プログラムデータの実行順序を変更するための処理である分岐が行われたか否かを示す分岐結果信号を生成してプログラムロード処理部へ出力する実行処理部と、実行処理部より送られてきた実行結果を書き込む実行結果保存処理部とからなり、複数ステージのパイプライン処理を実行する中央処理装置であって、
上記のプログラムロード処理部は、プログラム保存領域から読み出した、これから復号するプログラムデータを保存する保存手段と、分岐結果信号に基づき、これから復号するプログラムデータに分岐があるか否かを判断し、分岐があると判断したときは、その分岐先アドレスのプログラムデータを予めプログラム保存領域から取得して保存手段に保存し、保存手段から保存されているプログラムデータを転送処理部へ出力すると共に、分岐結果信号に基づき、少なくともその出力プログラムデータの転送処理部での格納場所を指示する制御信号及び復号処理部から出力される復号データの選択指示を行う制御信号を出力する手段とを備え、
上記の転送処理部は、プログラムロード処理部から転送されたプログラムデータを、格納場所を指示する制御信号に基づき、そのプログラムデータが分岐先アドレスのデータであるか否かに応じて異なる場所に格納する転送データ保存手段と、転送データ保存手段に保存されているプログラムデータのうち、分岐がなかったときに復号されるべき第1のプログラムデータと分岐があったときに復号されるべき第2のプログラムデータとを選択してそれぞれ第1及び第2の転送データとして出力する転送データ選択手段とを備え、
上記の復号処理部は、転送処理部から入力された第1及び第2の転送データを別々に復号して第1及び第2の復号データを生成して保存する復号・保存手段と、プログラムロード処理部からの復号データの選択指示を行う制御信号に従って、復号・保存手段からの第1及び第2の復号データの一方を選択して実行処理部へ出力する復号データ選択手段とを備えることを特徴とする。
To achieve the above object, the present invention transfers a program storage area for storing program data, a program load processing section for loading program data from the program storage area, and program data transferred from the program load processing section A transfer processing unit, a decoding processing unit that decodes the program data transferred from the transfer processing unit, and a process for executing the decoded data sent from the decoding processing unit and changing the execution order of the program data. An execution processing unit that generates a branch result signal indicating whether or not a certain branch has been performed and outputs the branch result signal to the program load processing unit, and an execution result storage processing unit that writes the execution result sent from the execution processing unit, A central processing unit that executes multi-stage pipeline processing,
The program load processing unit determines whether or not there is a branch in the program data to be decoded based on the branch result signal based on the branch result signal and the storage unit that stores the program data to be decoded from the program storage area. When it is determined that the program data of the branch destination address is acquired from the program storage area in advance and stored in the storage unit, the program data stored from the storage unit is output to the transfer processing unit, and the branch result A control signal for instructing a storage location in the transfer processing unit of the output program data based on the signal and a control signal for instructing selection of the decoded data output from the decoding processing unit, and
The transfer processing unit stores the program data transferred from the program load processing unit in different locations depending on whether the program data is the data of the branch destination address based on the control signal indicating the storage location. Transfer data storage means to perform, and among the program data stored in the transfer data storage means, the first program data to be decoded when there is no branch and the second program data to be decoded when there is a branch Transfer data selecting means for selecting program data and outputting the first and second transfer data, respectively,
The decoding processing unit includes decoding / storing means for separately decoding the first and second transfer data input from the transfer processing unit to generate and store the first and second decoded data, and program load Decoding data selection means for selecting one of the first and second decoding data from the decoding / storing means and outputting to the execution processing section in accordance with a control signal for instructing selection of decoding data from the processing section. Features.
この発明では、実行処理部で分岐が発生したか否かを示す分岐結果信号に基づいて、プログラムロード処理部が、これから復号するプログラムデータに分岐があるか否かを判断し、分岐があると判断したときは、その分岐先アドレスのプログラムデータを予めプログラム保存領域から取得して、これから復号するプログラムデータと共に転送処理部へセットして一旦保存した後、分岐が発生しないときの第1の転送データと分岐が発生したときの第2の転送データを復号処理部にセットしてそれぞれ復号させ、分岐が発生したか否かに応じてそれらの復号データの一方を選択するようにしたため、2系統のパイプライン処理系を設けなくても、分岐発生判断から分岐先の処理に遷移するまでに要するサイクル数を0に短縮することができる。 In this invention, based on a branch result signal indicating whether or not a branch has occurred in the execution processing unit, the program load processing unit determines whether or not there is a branch in the program data to be decoded. When it is determined, the program data of the branch destination address is obtained in advance from the program storage area, set together with the program data to be decoded to the transfer processing unit and temporarily stored, and then the first transfer when no branch occurs Since the data and the second transfer data when the branch occurs are set in the decoding processing unit and are decoded respectively, one of the decoded data is selected depending on whether the branch has occurred or not. Even if the pipeline processing system is not provided, the number of cycles required from the branch occurrence determination to the branch destination process can be reduced to zero.
本発明によれば、2系統のパイプライン処理系を設けなくても、分岐発生判断から分岐先の処理に遷移するまでに要するサイクル数を0に短縮することができるため、より少ない回路規模で、かつ、遅延スロットを利用せずに分岐処理時間にかかるオーバーヘッドを無くすことができる。 According to the present invention, the number of cycles required from the branch occurrence determination to the transition to the branch destination process can be shortened to zero without providing two pipeline processing systems. In addition, the overhead for the branch processing time can be eliminated without using the delay slot.
次に、本発明を実施するための最良の形態について図面と共に説明する。先ず、本明細書中に用いられる変数h,i,j,k,m,n,p,qの関連について説明する。変数h,m,p,qは、それぞれフェッチ(Fetch),デコード1(Decode1),エグゼキュート(Execute),ライトバック(Writeback)ステージにおける、プログラムのアドレスを示す。デコード(Decode)ステージは二つ存在するので、それらを区別してデコード1(Decode1),デコード2(Decode2)とする。nは、Decode2ステージにおけるプログラムのアドレスを示す。iは、分岐予測先アドレスを示す。jは、1T実行時間前の分岐予測先アドレスiの次のアドレスを示す。kは、1T実行時間前の分岐予測先アドレスiが分岐すると予測し、そのiの予測先アドレスを示す。 Next, the best mode for carrying out the present invention will be described with reference to the drawings. First, the relationship between the variables h, i, j, k, m, n, p, and q used in this specification will be described. Variables h, m, p, and q indicate program addresses in the fetch, decode 1 (decode1), execute (execute), and writeback (writeback) stages, respectively. Since there are two decoding (Decode) stages, they are distinguished as decoding 1 (Decode 1) and decoding 2 (Decode 2). n indicates the address of the program in the Decode2 stage. i indicates a branch prediction destination address. j indicates the address next to the branch prediction destination address i before 1T execution time. k predicts that the branch prediction destination address i before 1T execution time branches, and indicates the prediction destination address of i.
図1は本発明になる中央処理装置の一実施の形態のパイプライン処理時のブロック図を示す。同図に示すように、本実施の形態の中央処理装置(CPU)は、プログラムを保存するプログラム保存領域(memory)21と、プログラム保存領域21からプログラムのロードを行うプログラムロード処理部(pre-fetch)22と、プログラムロード処理部22にロードされたプログラムを転送する転送処理部(Fetch stage)23と、転送処理部23から転送されたプログラムを復号する復号処理部(Decode stage)24と、復号処理部24から送られてきた復号データを実行する実行処理部(Execute stage)25と、実行処理部25から送られてきた実行結果を書き込む実行結果保存処理部(Writeback stage)26とからなり、複数ステージのパイプライン処理を実行する。
FIG. 1 is a block diagram at the time of pipeline processing of an embodiment of a central processing unit according to the present invention. As shown in the figure, the central processing unit (CPU) of the present embodiment includes a program storage area (memory) 21 for storing programs and a program load processing unit (pre-) for loading programs from the
この実施の形態では、プログラムロード処理部22、転送処理部23、復号処理部24を、プログラムロード処理部22からの出力である信号転送データ更新指示信号31を送信する信号線、転送データ選択信号32を送信する信号線、復号指示信号33を送信する信号線、復号データ選択信号34を送信する信号線を用いて接続し、実行処理部25からの出力である分岐結果信号35を送信する信号線をプログラムロード処理部22へ接続している。
In this embodiment, the program
プログラム保存領域21には、図2(A)に示すように、アドレスに対応した本実施の形態の中央処理装置で用いるプログラムデータが格納されている。プログラムデータの各々は、図2(B)に示すように、固定ビット幅xを持つオペコードと、可変ビット幅を持つオペランドA(ビット幅y)及びオペランドB(ビット幅z)とからなる。仮に、使用する中央処理装置のプログラムデータビット幅が32ビットである場合、上記のオペコード、オペランドA、オペランドBのそれぞれのビット幅加算値(x+y+z)は最大「32」である。
As shown in FIG. 2A, the
中央処理装置のプログラムデータビット幅が32ビットで、上記オペコードに分岐命令を持った場合のプログラムデータの内部を図2(C)に示す。同図(C)に示すように、分岐命令はオペコードと同等の固定のビット幅xを持つ。分岐先アドレスを表すビット幅は、オペコードのビット幅との加算値が「32」を越えない固定幅uを持つ。また、図2(C)では、残りのビット幅v(=32−(x+u))は、N/A(not available)領域としている。 FIG. 2C shows the inside of the program data when the program data bit width of the central processing unit is 32 bits and the operation code has a branch instruction. As shown in FIG. 5C, the branch instruction has a fixed bit width x equivalent to the operation code. The bit width representing the branch destination address has a fixed width u in which the added value with the bit width of the operation code does not exceed “32”. In FIG. 2C, the remaining bit width v (= 32− (x + u)) is an N / A (not available) area.
次に、プログラムロード処理部22の構成について説明する。図3は図1のプログラムロード処理部22の一実施の形態のブロック図を示す。プログラムロード処理部22は、図3に示すように、プログラムデータ保存部221及びシーケンス処理部222から構成されている。プログラムデータ保存部221は、図1のプログラム保存領域21からプログラムデータ36を保存した後、図1の転送処理部23へ転送データ38として出力する。また、シーケンス処理部222は、図1の実行処理部25から分岐結果信号35を入力として受け、図1の転送処理部23へ転送データ更新指示信号31、転送データ選択信号32を出力し、復号処理部24へ復号データ選択信号34、復号指示信号33を出力し、プログラム保存領域21へ読み出し信号37を出力する。
Next, the configuration of the program
次に、プログラムロード処理部22の動作について説明する。図4はプログラムロード処理部22の概略動作説明用フローチャートを示す。プログラムロード処理部22は、プログラム保存領域21からのプログラムデータをプログラムデータ保存部221で保存し、そのプログラムデータに基づいてシーケンス処理部222が動作を開始すると(ステップS1)、その開始時(CPU実行単位で1T:Tは単位時間(動作クロック周波数))に、後述する初期処理1を行った後(ステップS2)、次のCPUステップに移行したかを判断し(ステップS3)、移行していれば初期処理2は終了したかを判定する(ステップS4)。
Next, the operation of the program
初期処理2がまだ終了していないときには、次のサイクル(2T)で後述する初期処理2を行い(ステップS5)、初期処理2が終了していれば、初期処理3が終了したかを判定する(ステップS6)。初期処理3がまだ行われていない時には、その次のサイクル(3T)で後述する初期処理3を行い(ステップS7)、初期処理3も終了していれば、その次のサイクル(3T)以降、毎サイクル後述する分岐予測を行う(ステップS8)。
If the
図5は図4のステップS2による初期処理1の詳細動作説明用フローチャー卜を示す。初期処理1では、1T前に処理される予定の内容が分岐無しの場合に必要なアドレスhにおけるフェッチステージF_N[h]に、プログラムの開始アドレス(ここでは仮に0x0とする)(図13、図14参照)のデータをセットし(ステップS11)、アドレスmにおけるデコードステージD_1[m]にm=0をセットし(ステップS12)、アドレスpにおけるエグゼキュートステージE[p]にp=0をセットした後(ステップS13)、転送処理部23へ転送データ更新指示信号32と、転送データ選択信号33を出力し(ステップS14)、処理を終了する(ステップS15)。
FIG. 5 shows a flowchart for explaining the detailed operation of the
図6は図4のステップS5による初期処理2についての詳細動作説明用フローチャートを示す。初期処理2では、処理を開始するとF_N[h]に、開始アドレスの次のアドレス(ここでは仮に0x1とする)をセットし(ステップS21)、D_1[m]に、m=1をセットし(ステップS22)、1T前に処理される予定の内容が分岐無しの場合に必要なアドレスiにおけるフェッチステージF_B[i]に、F_N[0]からの分岐予測値(アドレス)yをセット(i=y)し(ステップS23)、分岐予測値が存在するかどうか判定する(ステップS24)。なお、上記のF_N[]には、1T前に処理される予定のアドレスに+1したアドレスデータが入り、F_B[]には、1T前に処理される予定のアドレスが分岐した場合の分岐先アドレスデータが入る。
FIG. 6 shows a flowchart for explaining the detailed operation of the
分岐予測値が存在する場合、F_B[j]に、アドレスiのデータを転送処理部23へセットした後(ステップS25)、アドレスnにおけるデコードステージD_2[n]に、アドレスiをセット(n=i)する(ステップS26)。分岐予測値が存在しない場合は、ステップS25、S26の処理をジャンプし、何もセットしない。続いて、転送処理部23へ転送データ更新指示信号32と転送データ選択信号33を出力すると共に、復号処理部24へ復号指示信号33と復号データ選択信号34を出力して(ステップS27)、初期処理2を終了する(ステップS28)。
If there is a branch prediction value, the data at address i is set in F_B [j] in transfer processing unit 23 (step S25), and then address i is set in decode stage D_2 [n] at address n (n = i) (step S26). When there is no branch prediction value, the processing of steps S25 and S26 is jumped and nothing is set. Subsequently, the transfer data update
図7は図4のステップS7による初期処理3についての詳細動作説明用フローチャートを示す。初期処理3は、処理を開始すると1T前に処理される予定の内容が分岐有りの場合に必要なアドレスjにおけるフェッチステージF_BN[j]にアドレスiをセット(j=i+1)し、1T前に処理される予定の内容が分岐有りの場合に必要なアドレスkにおけるフェッチステージF_BB[k]にF_B[i]からの分岐予測値vをセット(k=v)し、F_B[i]にF_N[h]からの分岐予測値uをセット(i=u)し(以上ステップS31)、分岐予測のアドレスjが存在するか判定し(ステップS32)、存在する場合はF_BN[j]にjのアドレスデータをセットし(ステップS33)、存在しない場合は分岐予測のアドレスkが存在するか判定する(ステップS34)。
FIG. 7 shows a flowchart for explaining the detailed operation of the
なお、上記のF_BN[]には、1T前に処理される予定のアドレスに+1したアドレスデータが入り、F_BB[]には、1T前に処理される予定のアドレスが分岐した場合の分岐先アドレスデータが入る。 Note that F_BN [] contains address data added to the address scheduled to be processed 1T before, and F_BB [] has a branch destination address when the address scheduled to be processed 1T branches. Contains data.
分岐予測のアドレスkが存在する場合はF_BB[k]にkのアドレスデータをセットし(ステップS35)、存在しない場合は分岐予測のアドレスiが存在するか判定し(ステップS36)、分岐予測のアドレスiが存在する場合はF_B[i]にiのアドレスデータをセットし(ステップS37)、分岐予測のアドレスiが存在しない場合はステップS38に進む。 If the branch prediction address k exists, the address data of k is set in F_BB [k] (step S35). If not, it is determined whether the branch prediction address i exists (step S36). If the address i exists, the address data of i is set in F_B [i] (step S37), and if the branch prediction address i does not exist, the process proceeds to step S38.
従って、上記のステップS32〜S37では、それぞれ分岐予測のアドレスj,k,iが存在するかどうか判定し、存在する場合は、そのアドレスデータを転送処理部23へセットし、存在しない場合は何もセットしない。続いて、F_N[h]にアドレスh+1のデータをセットし、転送処理部23へ転送データ更新指示信号32と転送データ選択信号33を出力すると共に、復号処理部24へ復号指示信号33と復号データ選択信号34を出力する。ステップS38の処理後、初期処理3を終了する(ステップS39)。
Accordingly, in the above steps S32 to S37, it is determined whether or not the branch prediction addresses j, k, i exist. If they exist, the address data is set in the
図8は図4のステップS8における分岐予測処理についての詳細動作説明用フローチャートを示す。プログラムロード処理部22が、分岐予測の処理を開始すると、図1の実行処理部25からの分岐結果信号35を受けて、分岐が発生したかどうかを判断し(ステップS41)、分岐が発生した場合も発生しなかった場合も、次の分岐予測に備えて各ステージに所定のデータを格納する(ステップS42、S43)。ここで、所定のデータとは、F_N[]へ直前に処理したアドレス”h”を一つインクリメントしたアドレスに対応したF_N[h+1]に格納されるデータと、F_B[]へ上記F_N[h]で用いたアドレス”h”が分岐処理を持っている場合、分岐先のアドレス”y”に対応したF_B[y]に格納されるデータと、F_BN[]へ、直前に処理したF_B[i]のアドレス”i”を一つインクリメントしたアドレスに対応したF_BN[i+1]に格納されるデータと、F_BB[]へ、直前に処理したアドレス”i”が分岐処理を持っている場合、分岐先のアドレス”k”に対応したF_BB[k]に格納されるデータである。
FIG. 8 is a flowchart for explaining the detailed operation of the branch prediction process in step S8 of FIG. When the program
分岐が発生していた場合、実行処理部25のE[p]へ出力される復号データとして復号ステージD_2[m]のデータをセットし、復号ステージD_1[m]にアドレスjをセット(m=j)し、D_2[n]にアドレスkをセット(n=k)し、F_N[h]にアドレスj+1のデータをセットし、F_B[i]にF_BN[j]からの分岐先アドレスとして予め定めた予測値aをセット(i=a)し、F_BN[j]にアドレスk+1をセット(j=k+1)し、F_BB[k]にF_BB[k]からの分岐先アドレスとして予め定めた予測値bをセット(k=b)する(以上ステップS42)。
If a branch has occurred, the data of the decoding stage D_2 [m] is set as the decoded data output to E [p] of the
分岐が発生してなかった場合は、実行処理部25のE[p]へ出力される復号データとして復号ステージD_1[m]のデータをセットし、復号ステージD_1[m]にアドレスhをセット(m=h)し、D_2[n]にアドレスiをセット(n=i)し、F_BB[k]にF_B[i]からの分岐先アドレスとして予め定めた予測値bをセット(k=b)し、F_BN[j]にアドレスi+1をセット(j=i+1)し、F_B[i]にF_N[h]からの分岐先アドレスとして予め定めた予測値aをセット(i=a)し、F_N[h]にアドレスh+1のデータを転送する(以上ステップS43)。
When the branch has not occurred, the data of the decoding stage D_1 [m] is set as the decoded data output to E [p] of the
分岐があった場合はステップS42が、また分岐がなかった場合はステップS43の処理が終わると、それぞれセットした分岐予測のアドレスj,i,kについて存在するかどうか確認する。プログラムロード処理部22は、図3のシーケンス処理部222において、分岐予測のアドレスが存在すると判断した場合、図2(C)に示したプログラムデータ中の分岐先アドレスのプログラムデータを取得し、一旦、図3のプログラムデータ保存部221へ格納した後、転送処理部23へ転送する際に、図8のフローチャートに従って、後述する転送処理部23内の4つある転送データ保存部231〜234のいずれかにセットして格納する。
If there is a branch, the process proceeds to step S42. If there is no branch, and the process of step S43 is completed, it is confirmed whether or not there is a branch prediction address j, i, k set. When the
一方、分岐予測アドレスが存在しなければ、プログラムデータ取得動作は行わない。このため、分岐予測アドレスが存在した場合に格納する予定であった転送データ保存部231〜234のいずれかにはプログラムデータは格納されない。
On the other hand, if there is no branch prediction address, the program data acquisition operation is not performed. For this reason, program data is not stored in any of the transfer
すなわち、シーケンス処理部222は、まず分岐予測のアドレスjが存在するかどうか判定し(ステップS44)、存在する場合はF_BN[j]にjのアドレスデータを転送処理部23へ転送するが(ステップS45)、存在しない場合は分岐予測のアドレスiが存在するかどうか判定する(ステップS46)。
That is, the
分岐予測のアドレスiが存在する場合は、F_B[i]にiのアドレスデータを転送処理部23へ転送するが(ステップS47)、存在しない場合は分岐予測のアドレスkが存在するかどうか判定する(ステップS48)。分岐予測のアドレスkが存在する場合はF_BB[k]にkのアドレスデータを転送処理部23へ転送するが(ステップS49)、存在しない場合は転送処理部23へ転送データ更新指示信号32と転送データ選択信号33を出力すると共に、復号処理部24へ復号指示信号33と復号データ選択信号34を出力した後(ステップS50)、分岐予測処理を終了する(ステップS51)。
If the branch prediction address i exists, the address data of i is transferred to F_B [i] to the transfer processing unit 23 (step S47). If not, it is determined whether the branch prediction address k exists. (Step S48). If the branch prediction address k exists, the address data of k is transferred to F_BB [k] to the transfer processing unit 23 (step S49), but if it does not exist, the transfer data update
次に、図1の転送処理部23の構成及び動作について説明する。図9は図1の転送処理部23の一実施の形態のブロック図を示す。図9において、転送処理部23はそれぞれプログラムロード処理部22から転送データ38と転送データ更新指示信号31とが入力される4つの転送データ保存部231〜234と、転送データ保存部231〜234からの出力転送データを、プログラムロード処理部22からの転送データ選択信号32に基づいて選択して2種類の転送データ1、2を並列に出力する転送データ選択部235とからなる。転送データ保存部231〜234は、転送データ更新指示信号31がアクティブであるときにのみ、入力された転送データを保存する。
Next, the configuration and operation of the
次に、この転送処理部23の動作について、図10に示す詳細動作説明用フローチャートと共に説明する。転送処理部23は、処理を開始すると、先ずステップS41にて転送データ更新指示信号31が発生しているかを判断し(ステップS53)、発生していた場合、その転送データ更新指示信号31に従って、プログラムロード処理部22からの転送データ38を転送データ保存部231〜234に格納し(ステップS54)、発生していない場合は転送データ保存部231〜234への転送データ38の格納は行わない。
Next, the operation of the
続いて、転送データ選択部235は転送データ選択信号32が発生しているかを判断し(ステップS55)、発生していた場合、その転送データ選択信号32に従って、転送データ保存部231〜234に保存されている転送データの中から2種類の転送データ39、40を選択して並列に出力する。
Subsequently, the transfer
なお、転送データ保存部231、232、233、234は、ステージF_N[]、F_B[]、F_BN[]、F_BB[]で処理される転送データ38をそれぞれ保存する。すなわち、転送データ保存部231はステージF_N[h]における1T前に実行されるアドレスから分岐がない場合の転送データ38を保存し、転送データ保存部232はステージF_B[i]における1T前に実行されるアドレスからの分岐予測先の転送データ38を保存する。また、転送データ保存部233は、ステージF_BN[j]における1T前の分岐予測アドレス+1の転送データを保存し、転送データ保存部234は、ステージF_BB[k]における1T前の分岐予測アドレスからの分岐予測先の転送データ38を保存する。
The transfer
分岐が発生していない場合は、転送データ選択部235は転送データ選択信号32に従って、転送データ保存部231、232に保存されているステージF_N[]、F_B[]で処理される転送データを選択して並列に出力し、分岐が発生している場合は、転送データ保存部233、234に保存されているステージF_BN[]、F_BB[]で処理される転送データを選択して並列に出力する。
If no branch has occurred, the transfer
次に、図1の復号処理部24の構成及び動作について説明する。図11は図1の復号処理部24の一実施の形態のブロック図を示す。図11に示すように、復号処理部24は、復号部241及び242と、復号データ保存部243及び244と、復号データ選択部245とよりなる。復号部241には転送処理部23から第1の転送データ39が入力されると共に、プログラムロード処理部22から復号指示信号33が供給され、復号部242には転送処理部23から第2の転送データ40が入力されると共に、プログラムロード処理部22から復号指示信号33が供給され、それぞれ復号指示信号33に従って転送データ39、40を復号する。
Next, the configuration and operation of the
復号データ保存部243、244は復号部241、242から出力された復号データを互いに独立して保存する。復号データ選択部245は、プログラムロード処理部22から供給された復号データ選択信号34に従って、復号データ保存部243及び244のうち一方に保存されている復号データを選択して読み出し、実行処理部25へ復号データ41として出力する。
The decoded
次に、復号処理部24の動作について、図12に示す詳細動作説明用フローチャートと共に説明する。復号処理部24は、処理を開始すると、先ず復号指示信号33が発生しているか(入力されているか)を判断し(ステップS61)、発生している場合、その復号指示信号33に従って転送処理部23からの転送データ39、40をそれぞれ復号部241、242にて復号し、得られた復号データを復号データ保存部243、244へ供給して格納する(ステップS62)。
Next, the operation of the
復号指示信号33が発生していなかった場合は、復号処理は行わない。続いて、復号データ選択部245は、復号データ選択信号45が発生しているか(入力されているか)を判断し(ステップS63)、発生していた場合、その復号データ選択信号45に従って復号データ保存部243、244に保存されている一方の復号データを選択して実行処理部25へ復号データ41として出力して(ステップS64)、復号処理を終了する(ステップS65)。復号データ選択部245は、復号データ選択信号45が発生していない(入力されていない)と判定した場合は、復号データの選択動作を行わず復号処理を終了する(ステップS65)。
When the
復号部241、復号データ保存部243及び復号データ選択部245を使用して行われる復号処理が、ステージD_1[]であり、復号部242、復号データ保存部244及び復号データ選択部245を使用して行われる復号処理が、ステージD_2[]である。復号データ選択部245は、分岐が発生していない場合は、復号データ保存部243に保存されている復号データを選択し(ステージD_1[]による復号データを選択し)、分岐が発生している場合は、復号データ保存部244に保存されている復号データを選択し(ステージD_2[]による復号データを選択する。
The decoding process performed using the
次に、以上説明した図1の実施の形態の中央処理装置の分岐処理が無い場合の動作について、図13と共に説明する。図13において、太枠は転送処理部23において実際に動作しているステージを示す(後述の図14も同様)。 Next, the operation when there is no branch processing of the central processing unit of the embodiment of FIG. 1 described above will be described with reference to FIG. In FIG. 13, the thick frame indicates the stage actually operating in the transfer processing unit 23 (the same applies to FIG. 14 described later).
まず、最初のサイクル1T(以下、1T)では、プログラムロード処理部22において図4のステップS2の初期処理1を実行し、各転送データの保存内容は、F_N[h]では、h=0(プログラム開始アドレスが0x0とする)となるため、F_N[0]となる。F_B[i],F_BN[j],F_BB[k]については、定義されない。すなわち、図9の転送処理部23内の転送データ保存部231にプログラム開始アドレスのプログラムデータが保存されるステージF_N[0]が実行されるが、転送データ保存部232〜234にはデータは保存されない。
First, in the first cycle 1T (hereinafter, 1T), the program
また、1Tにおけるパイプライン処理は、各ステージともに、開始アドレスの処理を行うため、D_1[m],E[p],W[q]それぞれD_1[0],E[0]W[0]と設定される。D_2[n]は定義しない。 In addition, since pipeline processing in 1T performs start address processing in each stage, D_1 [m], E [p], and W [q] are D_1 [0], E [0], and W [0], respectively. Is set. D_2 [n] is not defined.
次のサイクルの2Tでは、プログラムロード処理部22は図4のステップS5の初期処理2を実施し、各転送データの保存内容は、F_N[h]では、1T(前サイクル)での実行アドレスは、開始アドレスだったので、h++とし、分岐がなかったときの実行アドレスとして設定する。F_B[i]では、1TでのF_N[0]の復号処理が行われている最中で、分岐処理に入るかどうかの判断ができないため、アドレス0において分岐処理があると予想して、CPUで設定しているレジスタから分岐先を抜き出す。その予想した分岐先アドレスをyとすると、分岐先アドレスyが存在するかどうか判断し、存在する場合はその分岐先アドレス先のデータをF_B[i]へセットし、保存する。
In 2T of the next cycle, the program
すなわち、復号処理部24は転送処理部23によるステージF_N[0]で処理されたデータを復号する(ステージD_1(m=h))。一方、これと同時に、転送処理部23は図9の転送処理部23内の転送データ保存部231にプログラム開始アドレスを1つインクリメントしたアドレスのプログラムデータを保存するステージF_N[h=h+1]を実行すると共に、予想した分岐先アドレスyのプログラムデータを転送データ保存部232に保存するステージF_B[i=y]を実行する。
That is, the
次のサイクル3Tでは、復号処理部24では、アドレスh,iのデータ、すなわち、転送データ保存部231、232から転送されたデータをそれぞれ同時に復号し、分岐がある場合とない場合のどちらの選択が行われても良い状態にする(ステージD_1[m=h]、D_2[n=i])。また、実行処理部25では、復号処理部24から入力された1Tで転送処理部23へ転送された開始アドレスの復号データが実行されている(ステージE[p=h])。
In the
また、F_N[h]には、2TでのF_N[h]のアドレスを一つ進めた値h++を用いる。F_BN[j]には、2TでのF_B[i=y]で分岐がなかった場合のアドレスi++値を用いる。F_BB[k]には、2TにおけるF_B[i=y]に分岐があると予想し分岐先vを取得しアドレスk=vとする。F_B[i]には、2TでのF_N[h]が分岐処理があると予想して、分岐先uを抜き出しi=uとする。 For F_N [h], a value h ++ obtained by advancing the address of F_N [h] by 2T is used. For F_BN [j], the address i ++ value when there is no branch at F_B [i = y] at 2T is used. F_BB [k] is predicted to have a branch at F_B [i = y] in 2T, the branch destination v is obtained, and the address k = v. For F_B [i], F_N [h] at 2T is expected to have branch processing, and the branch destination u is extracted and i = u.
すなわち、転送処理部23は図9の転送処理部23内の転送データ保存部231に2TでのF_N[h]のアドレスを一つ進めた値h++のプログラムデータを保存するステージF_N[h=h+1]を実行すると共に、予想した分岐先アドレスuのプログラムデータを転送データ保存部232に保存するステージF_B[i=u]を実行し、更に、2TでのF_B[i=y]で分岐がなかった場合のアドレスi++のプログラムデータを転送データ保存部233に保存するステージF_BN[j=i+1]を実行すると共に、予想した分岐先アドレスvのプログラムデータを転送データ保存部234に保存するステージF_BB[k=v]を実行する。
That is, the
次のサイクル4Tでは、実行結果保存処理部26が実行処理部25から送られてきた最初のプログラムデータの復号データの実行結果を書き込む処理を行い(ステージW[q=h])、実行処理部25が復号処理部24から入力された3Tでの復号データを実行し(ステージE[p=h])、復号処理部24では、アドレスh,iのデータ、すなわち、転送データ保存部231、232から転送されたデータをそれぞれ同時に復号し、分岐がある場合とない場合のどちらの選択が行われても良い状態にする(ステージD_1[m=h]、D_2[n=i])。更に、転送データ保存部231〜234にはアドレスh=h+1,i=a,j=i+1,k=bのデータを保存する処理が実行される(ステージF_N[h=h+1]、F_B[i=a]、F_BN[j=i+1]、F_BB[k=b])。以下、同様の動作が行われる。
In the
次に、図1の実施の形態の中央処理装置の分岐処理がある場合の動作について、図14と共に説明する。図14では、1T〜3Tまでは図13と同様であるが、4T以降が異なる。すなわち、4Tでは、1Tで取得した開始アドレスデータが3Tにて実行処理部25にて実行された結果、分岐が発生したことになっている。
Next, the operation when there is a branch process of the central processing unit of the embodiment of FIG. 1 will be described with reference to FIG. In FIG. 14, 1T to 3T are the same as those in FIG. That is, in 4T, the start address data acquired in 1T is executed by the
すると、次に実行処理部25で実行するのは、3Tで分岐を予想して復号したD_2[n]のデータが必要になるため、E[p]にアドレスnで取得したデータを復号した結果D_2[n]を転送する。実行処理部25では、分岐が発生したことを知らせる、分岐結果信号35がプログラムロード処理部22へ出力される。分岐が発生したことを判断したプログラムロード処理部25の分岐処理では、F_N[h]には、3TでのF_BN[j]のアドレスj+1を用いる。これは分岐先がアドレスjに決定したからである。F_B[i]では、3TにおけるF_B[j]の実行時に分岐処理があることを予想した分岐先アドレスaを取得しi=aとする。F_BN[j]では、3TにおけるF_BB[k]に分岐処理がない場合を想定してk+1とする。F_BB[k]では、3TにおけるF_BB[k]に分岐処理があると予想した分岐先アドレスbを取得し、k=bとする。
Then, since the data of D_2 [n] decoded in anticipation of branching at 3T is required to be executed by the
分岐が発生した場合は上記の3T、4Tと同様の手順を繰り返す。このように、本実施の形態によれば、常に処理するプログラムの分岐を予想していることから、図16に示した従来の中央処理装置ではプログラムロード処理部22での分岐発生判断から分岐先の処理に遷移するまでに要する3サイクルが、図14から分かるように0サイクルに短縮し、分岐処理を時間的なオーバーヘッドなく行うことができる。
When a branch occurs, the same procedure as the above 3T and 4T is repeated. As described above, according to the present embodiment, since the branch of the program to be processed is always predicted, the branch destination is determined based on the branch occurrence determination in the program
複数のステージとパイプライン構成を用いた全てのCPUに適用できる。 It can be applied to all CPUs using a plurality of stages and pipeline configurations.
21 プログラム保存領域
22 プログラムロード処理部
23 転送処理部
24 復号処理部
25 実行処理部
26 実行結果保存処理部
31 転送データ更新指示信号
32 転送データ選択信号
33 復号指示信号
34 復号データ選択信号
35 分岐結果信号
36 プログラムデータ
37 読み出し信号
38〜40 転送データ
41 復号データ
221 プログラムデータ保存部
222 シーケンス処理部
231〜234 転送データ保存部
235 転送データ選択部
241、242 復号部
243、244 復号データ保存部
245 復号データ選択部
DESCRIPTION OF
Claims (1)
前記プログラムロード処理部は、
前記プログラム保存領域から読み出した、これから復号する前記プログラムデータを保存する保存手段と、
前記分岐結果信号に基づき、これから復号する前記プログラムデータに前記分岐があるか否かを判断し、前記分岐があると判断したときは、その分岐先アドレスのプログラムデータを予め前記プログラム保存領域から取得して前記保存手段に保存し、その保存した前記プログラムデータを前記転送処理部へ出力すると共に、前記分岐結果信号に基づき、少なくともその出力プログラムデータの前記転送処理部での格納場所を指示する制御信号及び前記復号処理部から出力される復号データの選択指示を行う制御信号を出力する手段とを備え、
前記転送処理部は、
前記プログラムロード処理部から転送されたプログラムデータを、前記格納場所を指示する制御信号に基づき、そのプログラムデータが分岐先アドレスのデータであるか否かに応じて異なる場所に格納する転送データ保存手段と、
前記転送データ保存手段に保存されているプログラムデータのうち、分岐がなかったときに復号されるべき第1のプログラムデータと分岐があったときに復号されるべき第2のプログラムデータとを選択してそれぞれ第1及び第2の転送データとして出力する転送データ選択手段とを備え、
前記復号処理部は、
前記転送処理部から入力された前記第1及び第2の転送データを別々に復号して第1及び第2の復号データを生成して保存する復号・保存手段と、
前記プログラムロード処理部からの前記復号データの選択指示を行う制御信号に従って、前記復号・保存手段からの第1及び第2の復号データの一方を選択して前記実行処理部へ出力する復号データ選択手段と
を備えることを特徴とする中央処理装置。
A program storage area for storing program data, a program load processing section for loading program data from the program storage area, a transfer processing section for transferring program data transferred from the program load processing section, and the transfer processing A decoding processing unit that decodes the program data transferred from the decoding unit, and a branch that is a process for changing the execution order of the program data while executing the decoding data sent from the decoding processing unit An execution processing unit that generates a branch result signal indicating whether or not the program has been executed and outputs the branch result signal to the program load processing unit, and an execution result storage processing unit that writes the execution result sent from the execution processing unit. A central processing unit for performing pipeline processing,
The program load processing unit
Storage means for storing the program data read from the program storage area and decrypted from now on;
Based on the branch result signal, it is determined whether or not the program data to be decoded has the branch, and when it is determined that the branch is present, the program data of the branch destination address is acquired from the program storage area in advance. And storing the stored program data to the transfer processing unit and instructing at least a storage location of the output program data in the transfer processing unit based on the branch result signal A signal and a means for outputting a control signal for instructing selection of decoded data output from the decoding processing unit,
The transfer processing unit
Transfer data storage means for storing the program data transferred from the program load processing unit in different locations depending on whether or not the program data is data of a branch destination address based on a control signal indicating the storage location When,
Of the program data stored in the transfer data storage means, the first program data to be decoded when there is no branch and the second program data to be decoded when there is a branch are selected. Transfer data selection means for outputting as first and second transfer data respectively,
The decryption processing unit
Decoding / storing means for separately generating the first and second decoded data by separately decoding the first and second transfer data input from the transfer processing unit;
In accordance with a control signal for instructing selection of the decoded data from the program load processing unit, one of the first and second decoded data from the decoding / storing unit is selected and output to the execution processing unit And a central processing unit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005293242A JP2007102596A (en) | 2005-10-06 | 2005-10-06 | Central processing unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005293242A JP2007102596A (en) | 2005-10-06 | 2005-10-06 | Central processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007102596A true JP2007102596A (en) | 2007-04-19 |
Family
ID=38029461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005293242A Pending JP2007102596A (en) | 2005-10-06 | 2005-10-06 | Central processing unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007102596A (en) |
-
2005
- 2005-10-06 JP JP2005293242A patent/JP2007102596A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5949996A (en) | Processor having a variable number of stages in a pipeline | |
JPH1124929A (en) | Arithmetic processing unit and its method | |
US6832305B2 (en) | Method and apparatus for executing coprocessor instructions | |
US20060095746A1 (en) | Branch predictor, processor and branch prediction method | |
JPH03286332A (en) | Digital data processor | |
KR19990007479A (en) | Pipeline processor that reduces branch hazard in circuit | |
JP5233078B2 (en) | Processor and processing method thereof | |
US6981130B2 (en) | Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel | |
JP2009507292A (en) | Processor array with separate serial module | |
JP2007102596A (en) | Central processing unit | |
JPH1091430A (en) | Instruction decoding device | |
KR19980058221A (en) | Processor with pipeline stop circuit | |
US7197653B2 (en) | Microcontroller for fetching and decoding a frequency control signal together with an operation code | |
JP2005038203A (en) | Memory control method and device | |
US20050114626A1 (en) | Very long instruction word architecture | |
JP2004302647A (en) | Vector processor and address designation method for register | |
JP5013966B2 (en) | Arithmetic processing unit | |
JP2006268152A (en) | Integrated circuit device | |
JP4151497B2 (en) | Pipeline processing equipment | |
US20100153688A1 (en) | Apparatus and method for data process | |
US20060015704A1 (en) | Operation apparatus and instruction code executing method | |
JP2007041999A (en) | Data processor | |
US20050228970A1 (en) | Processing unit with cross-coupled alus/accumulators and input data feedback structure including constant generator and bypass to reduce memory contention | |
JP2004326710A (en) | Arithmetic processing unit and method | |
JP2000250869A (en) | Method and device for controlling multiprocessor |