[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JPH063584B2 - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JPH063584B2
JPH063584B2 JP58239504A JP23950483A JPH063584B2 JP H063584 B2 JPH063584 B2 JP H063584B2 JP 58239504 A JP58239504 A JP 58239504A JP 23950483 A JP23950483 A JP 23950483A JP H063584 B2 JPH063584 B2 JP H063584B2
Authority
JP
Japan
Prior art keywords
operand
instruction
store
register
data
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.)
Expired - Lifetime
Application number
JP58239504A
Other languages
English (en)
Other versions
JPS60129840A (ja
Inventor
真也 渡部
秀一 安部
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP58239504A priority Critical patent/JPH063584B2/ja
Priority to DE8484115735T priority patent/DE3484679D1/de
Priority to US06/682,999 priority patent/US4638429A/en
Priority to EP84115735A priority patent/EP0147775B1/en
Publication of JPS60129840A publication Critical patent/JPS60129840A/ja
Publication of JPH063584B2 publication Critical patent/JPH063584B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 〔発明の利用分野〕 本発明は、先行制御方式をとる情報処理装置に関する。
〔発明の背景〕 パイプライン制御方式の情報処理装置においては、命令
のデコード、オペランドの読出し、命令の実行などの命
令処理の各ステージが、連続する命令間でオーバラップ
して進行する。このため、後続の命令のオペランド読出
しが先行の命令によるストアより先行するケースが生じ
てくる。命令処理の順序性が要求されるアーキテクチャ
のもとで作られる情報処理装置では、先行する実行中ま
たは実行待ちの命令が変更しようとしている記憶領域
(メモリ)から、その変更前に後続の命令のオペランド
読出しを実行しようとする場合、この矛盾を検出し、先
行命令による記憶領域の変更が完了するまで、この後続
の命令のオペランド読出しを遅らせ、この矛盾解消後こ
のオペランド読出しを行なうことが必要である。
上記先行する実行中または実行待ちの命令が変更しよう
としている記憶領域から、その変更前に後続命令のオペ
ランド読出しを実行しようとする状態を、一般にOSC
(Operand Store Compare)と呼んでいる。このOSCが
起った場合、後続の命令のオペランド読出しをOSC解
消まで遅らせると、命令のパイプライン処理が乱れ、性
能が低下することになる。
従来、かゝる問題に対し、OSCが起った場合、先行命
令が変更するオペランドを、メモリを介することなく後
続命令へ引き渡すことにより、先行命令によるメモリへ
の書込みを待たずに後続命令の演算を開始できるように
した情報処理装置が提案されている。しかし、従来の情
報処理装置においては、前記オペランドの引き渡し時
に、複数の後続命令のオペランドが先読みされているに
もかかわらず、直後の1命令あるいは2命令に対しての
みしか引き渡せないという欠点があった。また、オペラ
ンドの引き渡しは、先行命令が変更するオペランドと後
続命令のオペランドが完全に一致した場合にのみ実行可
能であり、両者の一部のバイトのみが重複した場合は、
OSCとして処理されるため、命令のパイプライン処理
が乱れ、性能が低下するという欠点があった。
〔発明の目的〕
本発明の目的は、先行命令が変更するオペランドを、該
オペランドの先読みが行われたすべての後続命令に対
し、例えばバイト単位に、メモリを介すことなく引き渡
すようにして、パイプラインの乱れを最小限にする情報
処理装置を提供することにある。
〔発明の概要〕
本発明は、複数バイト単位で記憶領域への読出し/書込
みを行う先行制御方式の情報処理装置において、記憶領
域より先行して読出されたオペランドが命令の実行開始
までの間保持されるオペランドバッファレジスタ(OB
R)と、命令の実行開始時に該命令のオペランドが前記
オペランドバッファレジスタから読出されて格納される
演算用レジスタ(WAR)と、命令の処理結果データが
保持される演算結果レジスタ(WSR)と、処理結果デ
ータが存在する複数バイト単位内位置を示す情報(バイ
ト位置情報)を保有するレジスタと、記憶領域より先行
して読出された複数バイト単位内に存在するオペランド
に対し、先行して実行される命令のストア動作により記
憶領域上で変更される(OSC)ことを検出するOSC
検出手段と、前記OSCが検出されると前記バイト位置
情報に基づき、処理結果データが存在するバイト位置に
ついては前記演算結果レジスタ(WSR)からのデータ
を選択し、存在しないバイト位置については記憶領域よ
り読出されたオペランドのデータを選択するマージ回路
と、前記マージ回路の出力を前記オペランドバッファレ
ジスタ(OBR)に接続する手段とを有することを特徴
とする。
〔発明の実施例〕
第1図は本発明の係る情報処理装置の一実施例のブロッ
ク図で、特に本発明に関係する部分のみ示したものであ
る。
メモリ上のオペランドを参照する命令では、命令のデコ
ード後、主記憶装置(メモリ)5よりデータが読出さ
れ、読出しデータレジスタ6(FDR:Fetch Data Registe
r)に格納される。本実施例では、FDR6は16バイト幅
とする。FDR6にはメモリの8バイト境界より16バイ
トのデータが読出されが、このデータはアライナ7によ
ってオペランドの先頭バイトが左端となる様にアライン
され、データ線33に出力される。ただし、十進命令の
場合は、下位桁から演算が行なわれるので、オペランド
の最終バイトが右端となる様、データをアラインするこ
とが必要となるが、前者の場合より容易に類推できるの
で、以下の説明では省略する。
データ線33に読出されたデータ(オペランド)は、マ
ージ回路13−1あるいは13−2を素通りし、制御線
(セット線)32−1あるいは32−2で指定されるオ
ペランドバッファレジスタ(OBR:Operand Buffer R
egister)14−1あるいは14−2のいずれかに格納
される。OBRは先取りしたオペランドを命令の実行開
始までの間保持するデータレジスタ群である。ただし、
OSCが発生し、データ線33にオペランドが読出され
る以前に、OSCを発生したストア動作が完了し、演算
結果を保持するデータレジスタ(WSR:Work S-Register)
10より変更後のデータがシフタ12−1,12−2、
マージ回路13−1,13−2を介し、しかるべきOB
R14−1あるいは14−2のバイト位置に格納されて
いる場合、マージ回路13−1,13−2によりそのバ
イト位置を除いてデータ線33の値がセットされる。
命令の実行開始前に、制御線29(OBR出力ポイン
タ)で指示されるOBR14−1あるいは14−2がセ
レクタ15により選択され、データレジスタ(WAR:
Work A-Register)11に格納される。すなわち、WA
Rは演算回路8での命令実行開始時に読出しオペランド
がセットされるレジスタである。演算回路8の演算結果
はWSR10に格納される。本実施例では、WSR1
0,WAR11,OBR14−1,14−2はいずれも
8バイト幅とする。
命令実行制御ユニット3により、命令の実行が制御され
る。メモリへのストア動作は、ストアリクエスト線26
が“1”となることにより起動される。この時、WSR
10に保持されたデータのうち、ストアマークレジスタ
9で指示されたバイトが主記憶装置5へ書き込まれる。
第1図では、この経路は省略されている。ストアマーク
レジスタ9は8ビット幅のレジスタで、各ビットがWS
R10のバイトに対応する。そして、あるビットが
“1”のとき、対応するWSR10のバイトのデータを
主記憶装置6へストアすべきことを示す。
OSCが発生し、後続命令の読出しオペランドへ演算結
果を引き渡す場合、先行ストア命令におけるストアリク
エスト26の発行に同期して、WSR10に格納された
データが、シフタ1〜2、12−1〜12−2およびマ
ージ回路1〜2、13−1〜13−2を介し、OBR1
〜2、14−1〜14−2の該当するバイト位置に格納
される。以下、OSCの発生に対応して、先行命令の演
算結果を後続命令の読出しオペランドに引き渡すことを
メモリオペランド・ラップアラウンド、あるいは単にオ
ペランド・ラップアラウンドと呼ぶ。本実施例では、後
続命令の読出しオペランドのバイト単位のオペランド・
ラップアラウンドが可能である。
上記オペランド・ラップアラウンドは制御回路2により
制御され、制御線30−1〜30−2,31−1〜31
−2,32−1〜32−2により指示される。先行制御
ユニット1は命令の実行に先行する処理を制御し、制御
線17〜21に制御信号を出力する。
次に、第2図〜第5図を用い、制御回路2の詳細を説明
する。
第2図は制御回路2の一部を示す図で、主にOSCの検
出に係る。第2図において、101は命令のオペランド
アドレス(一般には先頭アドレス)を計算するためのア
ドレス加算器である。オペランドアドレスは、例えば命
令のインデックス値X、ベース値B、ディスプレースメ
ント値Dを加算することにより求まり、この求まったオ
ペランドアドレスは命令のデコードに同期してアドレス
レジスタ106にセットされる。命令の入力経路は省略
してある。
111はオペランド長加算器であり、アドレス加算器1
01により求まったオペランドアドレスに、このオペラ
ンドのオペランド長を加算するためのものである。加算
すべきオペランド長は、 イ.命令のオペレーションコードのみから定まる場合、 ロ.命令のオペランド長指定フィールドにより直接指定
される場合、 ハ,前記イ、ロ以外、例えば命令の汎用レジスタフィー
ルドで指定される汎用レジスタにおかれる場合、 等があるが、これらはオペランド長制御回路110によ
り制御され、デコードに同期して命令のオペランド長が
オペランド長加算器111に入力される。
114−1〜114−nはn組のストアアドレスレジス
タであり、ストアオペランドの開始アドレスと終了アド
レスを保持する。入力は各々、アドレスレジスタ10
6、ストア長加算器群115−1〜115−nおよびオ
ペランド長加算器111に、また出力は、対応するOS
C検出回路113−1〜113−nおよびストア終了検
出回路116−1〜116−nに接続される。
どのストアアドレスレジスタ114−1〜114−nへ
ストアオペランドの先頭アドレス(レジスタ106出
力)と終了アドレス(オペランド長加算器111出力)
をセットするかはカウンタ123およびデコーダ119
によって指定する。先行制御ユニット1から、ストアを
伴なう命令がデコードされる毎に制御線17を介してカ
ウンタ123にカウントアップ信号が与えられる。デコ
ーダ119はカウンタ118の内容をデコードし、スト
アアドレスレジスタ14−1〜14−nの一つにセット
信号を送る。従って、ストアを伴なう命令毎にレジスタ
106およびオペランド長加算器111の出力に表われ
るストアオペランドの先頭アドレスおよび終了アドレス
はストアアドレスレジスタ14−1から順次セットされ
ることになる。
115−1〜115−nはストア長加算回路であり、ス
トアアドレスレジスタ114−1〜114−nと一対一
に設けられている。ストア長加算回路115−1〜11
5−nの入力は、各々対応するストアアドレスレジスタ
114−1〜114−nに保持されているストアオペラ
ンドの先頭アドレスと命令実行制御ユニット3から制御
線30(シフト数)を介して与えられる実際に命令実行
により行なわれたストア長である。ストアのオペランド
長が長く、一命令の中で複数回のストアリクエストのも
とに複数回のストア動作が行なわれる場合、この各スト
ア動作毎にそのストア長が線30に与えられる。ストア
長加算回路115−1〜115−nは、各々ストアアド
レスレジスタ114−1〜114−nからの先頭アドレ
スに線30のストア長を加算し、対応のストアアドレス
レジスタに与える。どのストアアドレスレジスタとスト
ア長加算回路の組を動作させるかはデコーダ121の指
示による。デコーダ121はどのストアアドレスレジス
タに対応する命令が実行されたかを、制御線24(命令
キューポインタ)を介して命令実行制御ユニット3から
受ける。これによって、ストアを伴なう命令の実行に応
じて、それに対応するストアアドレスレジスタ内の先頭
アドレスが実際にストアが行なわれたストア長だけスト
ア長加算回路で更新されることになり、ストア動作毎に
先頭アドレスと終了アドレス間の記憶領域は次第に小さ
くなる。
116−1〜116−nはストア終了検出回路であり、
ストアアドレスレジスタ114−1〜114−nと一対
一に設けられている。これの入力は、各々対応するスト
アアドレスレジスタに保持されているストアオペランド
の先頭アドレス及び終了アドレスであり、出力は各スト
アアドレスレジスタ対応の有効性ビット保持のためのフ
リップフロップ118−1〜118−nに接続される。
次に、第2図の動作を説明する。アドレス加算器10
1、オペランド長制御回路110、オペランド長加算回
路111を用いて計算された命令のオペランドの先頭ア
ドレス及び終了アドレスは、このオペランドがストアタ
イプのオペランドであるか、フエッチタイプのオペラン
ドであるかにより以下のように処理される。
ここで、記憶領域を変更するタイプの命令が、変更すべ
き記憶領域のアドレスを指定する場合、この命令のオペ
ランドをストアタイプのオペランドと定義するものと
し、フエッチとストアがともに行なわれる場合も含める
ものとする。またフエッチタイプとは、このオペランド
により記憶領域の参照のみが行なわれる場合をいう。
ストアタイプのオペランドの場合、アドレスレジスタ1
06及びオペランド加算器111により計算したオペラ
ンドの先頭アドレスと終了アドレスは、後続の命令によ
るフエッチとの間でOSCを検出するために、ストアア
ドレスレジスタ114−1〜114−nに順次登録さ
れ、同時に該当ストアアドレスレジスタの有効性ビット
(フリップフロップ118−1〜118−n)がセット
される。登録は、命令のデコードに同期して更新される
カウンタ123により制御される。フエッチタイプのオ
ペランドの場合は、ストアアドレスレジスタ114−1
〜114−nには登録せず、この命令以前にデコードさ
れて、該当ストアアドレスレジスタに既に登録され、そ
の有効性ビットがセットされているストアオペランドの
先頭アドレス及び終了アドレスと共にOSC検出回路1
13−1〜113−nに入力され、OSCの検出が行わ
れる。
現在実行中の命令がストアタイプのオペランドを有する
場合は、命令実行制御ユニット3から制御線24を介し
てデコーダ121に、このストアオペランドの属するス
トアアドレスレジスタの番号が指定され、また、この命
令の実行中の主記憶装置5に対して出されるストア要求
(命令によっては複数回のことがある)毎に、そのスト
アに対するストア長が線30に与えられる。ストアタイ
プのオペランドを有する命令の実行が開始されると、ス
トア要求毎に、デコーダ121により選択されたストア
アドレスレジスタにおけるストアオペランドの先頭アド
レスに対して、線30のストア長がストア長加算回路1
15に加算される。
ストアアドレスレジスタ114−1〜114−nの先頭
アドレスと終了アドレスは、各々ストア終了検出回路1
16−1〜116−nにより比較され、もし一致が検出
されれば、該当ストアアドレスレジスタの有効性ビット
がリセットされる。すなわち、有効性ビットがリセット
されたことは、該当ストアアドレスレジスタに登録され
ているストアオペランドに対する記憶領域の変更が完了
したことを意味する。したがって、後続の命令によるフ
エッチオペランドとの間でOSCを検出する場合、有効
性ビットがリセットされているストアアドレスレジスタ
は無視するのである。これは、ストアアドレスレジスタ
114−1〜114−nの有効性ビット118−1〜1
18−nの状態でOSC検出回路113−1〜113−
nの動作を制御することで行う。一方、当該ストアアド
レスレジスタの先頭アドレスと終了アドレスの一致が検
出されない場合は、該ストアアドレスレジスタに登録さ
れるストアオペランドのアドレスに対する記憶領域の変
更はまだ完了しないので、この更新した記憶領域の区間
に対して、後続の命令によるフエッチオペランドとの間
でOSC検出動作を続行する。このようにして、各スト
アアドレスレジスタ114−1〜114−nには、常に
まだ変更の完了していない記憶領域を示すストアオペラ
ンドの先頭アドレス及び終了アドレスが正しく保持され
ることになる。
さて、OSC検出回路113−1〜113−nは、スト
アオペランドとフエッチオペランドの関係について、次
の3つの状態を識別する。
(1)ストアアドレスの有効ビットがセットされ、フエッ
チオペランドとストアオペランドが重複し、かつ両オペ
ランドの先頭アドレスが同一8バイト境界内のある状
態。
(2)ストアアドレスの有効ビットがセットされ、フエッ
チオペランドとストアオペランドが重複し、かつストア
オペランドの先頭アドレスがフエッチオペランドの先頭
アドレスの含まれる8バイト境界の直後の8バイト境界
内にある状態。
(3)(1)、(2)のいずれにも該当しない状態。
OSC検出回路での検出結果は、OSC検出回路対応に
線122−1〜122−nに出力される。
以下、上記(1)の状態をI-Wrap可能状態、(2)の状態をN-
Wrap可能状態、(3)の状態をNull状態と呼ぶ。第3図(a)
はI-Wrap可能状態を示し、第3図(b)はN-Wrap可能状態
を示す。I-Wrap可能状態あるいはN-Wrap可能状態のスト
アを伴なう命令と後続のオペランド読出しの間で、メモ
リオペランド・ラップアラウンドが可能である。I−Wr
ap可能状態とN−Wrap可能状態の差異は、WSR10の
データをあるバイト数分だけシフトした後OBR14−
1あるいは14−2に格納する際のシフト数の差異であ
る。
第4図は同じく制御回路2の一部を示す図で、主に第3
図のOSC検出回路113−1〜113−nの検出結果
の保持に係る。第4図において、デコーダ201は、オ
ペランド読出しリクエスト線18が“1”のとき、OB
R入力ポインタ線19をデコードし、制御線207−1
〜207−2に出力する。ポインタ線19は、そのオペ
ランド読出しリクエストによって読出されたオペランド
を格納すべきOBR番号を示す。OSC状態保持ラッチ
群202-ij(1≦i≦2、1≦j≦n)は、OSC検
出結果を保持する為のラッチの集合である。OSC状態
保持ラッチ群202-ijで、添字iはOBR14−iに
対応し、添字jはストアアドレスレジスタ114−jに
対応する。OSC状態保持ラッチ群202-ijは、制御
線207−iによりOSC検出結果線122−jに示さ
れる状態を登録する。
制御回路203は、ストアリクエスト線26およびOB
R出力ポインタ線29を入力とし、制御線206−1〜
206−nを介し、OSC状態保持ラッチ202-ijを
制御する。ポインタ線29は、実行中の命令がストア系
命令である場合、対応するストアアドレスレジスタ11
4−jのレジスタ番号を示す。制御回路203の機能
は、ストアリクエスが発行された時、ポインタ線26の
値がkならば、ラッチ202-ik(1≦i≦k)に線1
22−kで示される状態を格納することである。すなわ
ち、制御回路203により、OSC状態ラッチ202-i
jには、対応する命令のそれぞれのストア動作の完了に
同期し、次に実行するストア動作に対するOSC状態の
情報が登録される。
セレクタ205−1,205−2は、OBR出力ポイン
タ線29の値がkの時、それぞれラッチ202−1k,
202−2kを選択し、制御線208−1,208−2
に出力する。制御線208−1は、演算回路8において
実行されている命令がストアを伴う命令の時、次の実行
すべきストア動作のオペランドとOBR14−1に格納
されるべき後続命令のフエッチオペランドのメモリ上で
の関係、すなわち、I−Wrap可能状態、N−Wrap可能状
態、Null状態のいずれであるか、を示す。制御線208
−2も同様に、OBR14−2に格納されるべきフエッ
チオペランドとの関係を示す。
第5図は同じく制御回路2の一部を示す図で、主にOB
R14−1,14−2の入力制御に係る。第5図におい
て、デコーダ303は、アドバンス線22が“1”のと
きシンクOBRポインタ線23をデコードし、制御線3
19−1,319−2に出力する。アドバンス線23は
主記憶装置5よりオペランドが読出され、データ線33
に出力されたことを示す。このとき同時に、ポインタ線
23にオペランドを格納すべきOBRの番号が示され
る。
制御回路301−1はOBR14−1の制御に係り、制
御回路301−2はOBR14−2の制御に係る。制御
回路301−1と301−2は同一である為、第5図に
おいては301−2の詳細を省略してある。以下、制御
回路301−1について説明する。
305は3ビットのレジスタで、制御線207−1が
“1”のときアライン数指示線21のデータがセットさ
れる。制御線207−1は、第4図で説明した如く、O
BR14−1にオペランドを格納すべきオペランド読出
しが起動された時“1”となる。線21は、フエッチオ
ペランドの先頭アドレスの8バイト境界の先頭からの
値、すなわち、フエッチアドレスの下位3ビット(以
下、アライン数と呼ぶ)を示す。このアライン数は、第
1図のアライナ7の制御にも用いられる。すなわち、8
バイト境界単位にFDR6に読出されたデータを、アラ
イナ7によって前記アライン数だけ左方向にシフトし、
オペランドの先頭バイトを左端に得る。
306,307,308はいずれも8ビットのレジスタ
である。このレジスタ306,307,308には、O
BR14−1にオペランドを格納するオペランドフエッ
チが起動された時、制御線207−1の制御下でフエッ
チマスク指示線20の8ビットのデータがセットされ
る。線20のデータは、第1図の先行制御ユニット1よ
り出力される。線20のあるビットが“1”のとき、フ
エッチオペランドの対応するバイトが命令の実行に必要
であることを示し、“0”のときデータの読出しが命令
の実行に不要であることを示す。以下、これをフエッチ
マスクと呼ぶ。例えば前半の4バイトのオペランドを読
出し処理したい時、フエッチマスクは“1111000
0”となる。
デコーダ304は、第4図で説明した制御線208−1
をデコードする。ANDゲート316は、I−Wrap可能
状態を示すデコード出力とストアリクエスト線26を入
力とし、線319に出力する。ANDゲート317は、
N−Wrap可能状態を示すデコード出力とストアリクエス
ト26を入力とし、線320に出力する。制御回路30
9はレジスタ305の3ビットのデータを入力し、線3
19,320の状態に従い、シフタ12−1のシフト数
を指示する4ビット・データを制御線30−1に出力す
る。
制御線319が“1”のとき、同時に発行されたストア
リクエスに対するデータの全体あるいは一部のバイト
が、OBR14−1へオペランド・ラップアラウンド可
能であることを示す。この時、WSR10に格納された
オペランドは、制御線30−1により制御されるシフタ
12−1および制御線31−1により制御されるマージ
回路13−1を順次経て、制御信号32−1によりOB
R14−1へセットされる。制御線320が“1”の場
合も、制御線319が“1”の場合と同じである。両者
の相異点は、前者の場合、制御線30−1に、レジスタ
305のアライン数の2の補数の先頭に“1”を付加し
た4ビットが出力され、後者の場合、アライン数の先頭
に“0”を付加した4ビットが出力されることである。
ここで、先頭ビットの“0”は左方向へのシフトを意味
し、先頭ビットの“1”は右方向へのシフトを意味す
る。
制御回路309により制御線301−1を上記の様に制
御することにより、オペランドラップアラウンドを行う
場合、WSR10のデータとOBR14−1がシフタ1
2−1により位置合わせされる。すなわち、シフタ12
−1の出力データとOBR14−1の各バイトは、メモ
リ上の同一アドレスに対応する。
311はデータ線28のストアマークを制御線30−1
に対応してシフトするシフタである。前記の如く、スト
アマークレジスタ9の各ビットとWSR10の各バイト
が対応している。したがって、シフタ311は、WSR
10のデータがシフタ12−1によりシフトされたのに
対応して、ストアマークレジスタ9のデータをシフトす
るのである。312は制御線319と制御線320を入
力とするORゲートである。313はシフタ311の8
ビットの出力とレジスタ306の8ビットの出力とOR
ゲート312の出力を入力とする8個のANDゲートで
ある。すなわち、ANDゲート313は8ビットを制御
線31−1に出力する。制御線31−1のあるビットが
“1”の時、対応するバイトに関し、マージ回路31−
1によってシフタ12−1の出力を選択するとともに、
後述の如く、制御線32−1の対応するビットを“1”
とし、OBR14−1へ書きこむことを示す。
ANDゲート313の出力はレジスタ307にも与えら
れる。レジスタ307にはフエッチマスク・データが格
納されているが、ANDゲート313の出力8ビットの
うち“1”となったビットに対応したビットがリセット
される。したがって、レジスタ307はOBR14−1
に格納されるべきオペランドに関し、フエチマスクが
“1”で、かつ、WSR10からの書き込みが行われて
いないバイトに対するビッヘが“1”となる。314は
制御線319とレジスタ307の各ビット出力を入力と
する8個のANDゲートである。321はANDゲート
314の出力で8ビットの制御線である。制御線321
の各ビットは、OBR14−1の各バイトに対応し、あ
るビットが“1”のとき記憶装置5から読みだした後ア
ラインされたデータ、すなわちデータ線33の対応する
バイトにセットすべきことを示す。315は8ビットの
制御線31−1および8ビットの制御線321を入力と
する8個のORゲートである。制御線32−1はORゲ
ート315の出力であり、第1図に示す如く、OBR1
4−1をセットする。制御線32−1は8ビットで、各
ビットがOBR14−1の各バイトに対応する。
第1図において、マージ回路13−1は、制御線31−
1の各ビットに対応したバイトごとに、制御線31−1
が“1”のときシフタ12−1の出力データを選択し、
一方、“0”のときデータ線33上のアライナ7の出力
データを選択する。これにより、先行するストアを伴う
命令の演算結果とメモリよりの読出しデータをバイト単
位にマージし、OBR14−1に格納することができ
る。
例えば、制御線31−1のビットk(0≦k≦7)が
“1”のとき制御線32−1のビットkも“1”とな
り、WSR10のデータのうちシフタ12−1によって
バイト位置kへシフトされる1バイト・データが、OB
R14−1のバイト位置kへセットされる。また、制御
線31−1のビットkが“0”でかつ制御線321のビ
ットkが“1”のとき、制御線32−1のビットkも
“1”となり、主記憶装置5より読み出されたデータの
しかるべきバイトがOBR12−1のバイト位置kへセ
ットされる。制御線31−1のビットkおよび制御線3
21のビットkがともに“0”のときは、OBR14−
1のバイトkに対していずれの動作もおこらない。
再び第5図に戻り、レジスタ308の内容は、制御線3
2−1の“1”となったビットに対応して、ビットごと
にリセットされる。すなわち、第1図のOBR14−1
にFDR6あるいはWDR10のいずれかからデータがセッ
トされたバイトに対応したビットは“0”を示す。31
0はレジスタ308が“00000000”であること
を検出する回路であり、制御線322−1に出力する。
セレクタ318はOBR出力ポインタ線29に対応して
制御線322−1あるいは322−2を選択する。線2
9の内容は第1図の命令実行制御ユニット3により与え
られ、次に実行すべき命令に必要なオペランドが格納さ
れたOBR番号を示す。セレクタ318の出力である制
御線25は命令実行制御ユニット3に与えらる。制御線
25は一次に実行すべき命令のオペランドの全部が制御
線29に示すOBRにそろったことを示し、それが
“1”のとき、命令実行制御ユニット3はOBR出力ポ
インタ線29の示すOBRのオペランドをWAR11に
取り込み、次命令の実行を開始することができる。
以上、本発明の実施例では、主記憶装置4から読出され
たデータはすべてOBR14−1あるいは14−2に一
たび格納され、命令の実行開始に先行して、対応するデ
ータがWAR11に取り出される。したがって、WSR
10に格納されたストアデータをOBR14に引き渡す
データ経路を設けることにより、本発明の目的が達成さ
れる。一方、他の情報処理装置では、メモリより読出し
たデータは、OBR14−1,14−2に格納後、WA
R11にセットするか、直接WARにセットするかの、
いずれかが可能である。この場合、本発明の目的の達成
の為に、WSR10に格納されたデータをOBR14−
1,14−2に引き渡す経路に加え、WAR11に引き
渡す経路が必要となるが、本実施例より容易に類推でき
る。
〔発明の効果〕
本発明によれば、命令の実行に先行してオペランドをメ
モリより読出し保持するが、読出したオペランドが読出
し後命令の実行開始までの間に先行するストア命令によ
りメモリ上で変更される場合、ストア動作に同期して変
更後のデータを前記保持された読出しオペランドへ例え
ばバイト単位にマージできる。したがって、従来の如
く、OSCが起った場合、後続の命令のオペランド読出
しをOSCの解消まで遅らせる必要がなく、パイプライ
ンの乱れを生ずることなく後続命令の実行を開始でき、
命令の処理効率の大幅な向上がもたらされる。
【図面の簡単な説明】
第1図は本発明の一実施例の全体ブロック図、第2図は
第1図における制御回路の一部の詳細図、第3図はラッ
プアラウンドされるストアオペランドとフエッチオペラ
ンドの関係を示す図、第4図及び第5図は第1図におけ
る制御回路の同じく一部の詳細図である。 1…先行制御ユニット、2…制御回路、3…命令実行制
御ユニット、4…主記憶制御装置、5…主記憶装置、6
…読出しデータレジスタ、7…アライナ、8…演算回
路、9…ストアマーク・レジスタ、10,11…ワーク
レジスタ、12−1,12−2…シフタ、13−1,1
3−2…マージ回路、14−1,14−2…オペランド
バッファレジスタ、15…セレクタ、113−1〜11
3−n…OSC検出回路。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】複数バイト単位で記憶領域への読出し/書
    込みを行う先行制御方式の情報処理装置において、 記憶領域より先行して読出されたオペランドが命令の実
    行開始までの間保持されるオペランドバッファレジスタ
    と、 命令の実行開始時に該命令のオペランドが前記オペラン
    ドバッファレジスタから読出されて格納される演算用レ
    ジスタと、 命令の処理結果データが保持される演算結果レジスタ
    と、 処理結果データが存在する複数バイト単位内位置を示す
    情報(以下、バイト位置情報と称す)を保有するレジス
    タと、 記憶領域より先行して読出された複数バイト単位内に存
    在するオペランドに対し、先行して実行される命令のス
    トア動作により記憶領域上で変更される(以下、OSC
    と称す)ことを検出するOSC検出手段と、 前記OSCが検出されると前記バイト位置情報に基づ
    き、処理結果データが存在するバイト位置については前
    記演算結果レジスタからのデータを選択し、存在しない
    バイト位置については記憶領域より読出されたオペラン
    ドのデータを選択するマージ回路と、 前記マージ回路の出力を前記オペランドバッファレジス
    タに接続する手段と、 を有することを特徴とする情報処理装置。
JP58239504A 1983-12-19 1983-12-19 情報処理装置 Expired - Lifetime JPH063584B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP58239504A JPH063584B2 (ja) 1983-12-19 1983-12-19 情報処理装置
DE8484115735T DE3484679D1 (de) 1983-12-19 1984-12-18 Datenverarbeitungsgeraet fuer die verarbeitung von operandenspeicherungskonflikten.
US06/682,999 US4638429A (en) 1983-12-19 1984-12-18 Data processing apparatus for processing operand store conflict
EP84115735A EP0147775B1 (en) 1983-12-19 1984-12-18 Data processing apparatus for processing operand store conflict

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP58239504A JPH063584B2 (ja) 1983-12-19 1983-12-19 情報処理装置

Publications (2)

Publication Number Publication Date
JPS60129840A JPS60129840A (ja) 1985-07-11
JPH063584B2 true JPH063584B2 (ja) 1994-01-12

Family

ID=17045769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP58239504A Expired - Lifetime JPH063584B2 (ja) 1983-12-19 1983-12-19 情報処理装置

Country Status (4)

Country Link
US (1) US4638429A (ja)
EP (1) EP0147775B1 (ja)
JP (1) JPH063584B2 (ja)
DE (1) DE3484679D1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6015746A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd デ−タ処理装置
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JPS6167156A (ja) * 1984-09-07 1986-04-07 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ読取り/変更装置
JPH0754461B2 (ja) * 1985-02-08 1995-06-07 株式会社日立製作所 情報処理装置
JPS62115571A (ja) * 1985-11-15 1987-05-27 Fujitsu Ltd ベクトルアクセス制御方式
US4773041A (en) * 1986-06-02 1988-09-20 Unisys Corporation System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
JPH0719222B2 (ja) * 1989-03-30 1995-03-06 日本電気株式会社 ストアバッフア
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
GB2241801B (en) * 1990-03-05 1994-03-16 Intel Corp Data bypass structure in a register file on a microprocessor chip to ensure data integrity
MX9206002A (es) * 1991-10-29 1993-04-01 Ericsson Telefon Ab L M Ahorro de tiempo en la lectura de variables de datos almacenados en un dispositivo de memoria y disminucion de la carta de un dispositivo indicador
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
WO1994008287A1 (en) * 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JPH0722377U (ja) * 1993-09-30 1995-04-21 佐太巳 服部 携帯用クーラー
US5465336A (en) * 1994-06-30 1995-11-07 International Business Machines Corporation Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system
US5864859A (en) * 1996-02-20 1999-01-26 International Business Machines Corporation System and method of compression and decompression using store addressing
US7975130B2 (en) * 2008-02-20 2011-07-05 International Business Machines Corporation Method and system for early instruction text based operand store compare reject avoidance
US9626189B2 (en) 2012-06-15 2017-04-18 International Business Machines Corporation Reducing operand store compare penalties

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58161043A (ja) * 1982-02-27 1983-09-24 Fujitsu Ltd 命令制御装置
JPS58149541A (ja) * 1982-03-01 1983-09-05 Hitachi Ltd デ−タ処理装置
JPS58154045A (ja) * 1982-03-09 1983-09-13 Nec Corp 情報処理装置
JPS592143A (ja) * 1982-06-29 1984-01-07 Hitachi Ltd 情報処理装置
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system

Also Published As

Publication number Publication date
US4638429A (en) 1987-01-20
EP0147775A2 (en) 1985-07-10
EP0147775A3 (en) 1988-03-09
DE3484679D1 (de) 1991-07-11
JPS60129840A (ja) 1985-07-11
EP0147775B1 (en) 1991-06-05

Similar Documents

Publication Publication Date Title
JPH063584B2 (ja) 情報処理装置
US4454578A (en) Data processing unit with pipelined operands
US5109495A (en) Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5067069A (en) Control of multiple functional units with parallel operation in a microcoded execution unit
US4745547A (en) Vector processing
US6721866B2 (en) Unaligned memory operands
US5497468A (en) Data processor that utilizes full data width when processing a string operation
JPH06236268A (ja) 命令の長さを判定する装置と方法
JPH01502700A (ja) 境界合せされていないリファレンスを処理するrisc型コンピュータ及び同処理の方法
USRE32493E (en) Data processing unit with pipelined operands
JPS6015746A (ja) デ−タ処理装置
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
EP0094535B1 (en) Pipe-line data processing system
EP2309382A1 (en) System with wide operand architecture and method
EP0201833B1 (en) Instruction processor
JPH05150979A (ja) 即値オペランド拡張方式
JP4955149B2 (ja) ビットfifoを有するディジタル信号プロセッサ
JPH0248732A (ja) 命令パイプライン方式のマイクロプロセッサ
EP0144268A2 (en) Method for controlling buffer memory in data processing apparatus
US4924377A (en) Pipelined instruction processor capable of reading dependent operands in parallel
US5121474A (en) Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory
US6981127B1 (en) Apparatus and method for aligning variable-width instructions with a prefetch buffer
JPS6116335A (ja) 情報処理装置
JP2824484B2 (ja) パイプライン処理計算機
JP2772100B2 (ja) 並列命令フェッチ機構