JPH05100818A - バレルシフタ - Google Patents

バレルシフタ

Info

Publication number
JPH05100818A
JPH05100818A JP3257648A JP25764891A JPH05100818A JP H05100818 A JPH05100818 A JP H05100818A JP 3257648 A JP3257648 A JP 3257648A JP 25764891 A JP25764891 A JP 25764891A JP H05100818 A JPH05100818 A JP H05100818A
Authority
JP
Japan
Prior art keywords
bit
data
register
instruction
shift
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.)
Withdrawn
Application number
JP3257648A
Other languages
English (en)
Inventor
Toshio Kishi
俊夫 岸
Yukari Takada
由香里 高田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP3257648A priority Critical patent/JPH05100818A/ja
Publication of JPH05100818A publication Critical patent/JPH05100818A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 この発明の目的は、1ステップで1ビット操
作命令を行なえるバレルシフタを提供することである。 【構成】 シフトアレイ53は、Aレジスタ51に格納
されたデータをBレジスタ52に転送することによりデ
ータを左シフトし、逆にBレジスタ52に格納されたデ
ータをAレジスタ51へ転送することにより右シフトを
行なう。このとき、シフトアレイ53におけるデータの
シフト量は、Oレジスタ54から与えられるシフト幅デ
ータによって決定される。一方、ビット操作を行なうと
きは、Aレジスタ51に格納されたビット操作用回路5
5に転送され、再びAレジスタ51に戻されることによ
り実行される。このとき、ビット操作用回路55は、ビ
ット操作の対象となるビットのデータを、ビット操作用
論理信号発生回路から与えられるビット操作用論理信号
に置き換える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、バレルシフタに関
し、より特定的には、複数ビットのデータを任意のビッ
ト数だけシフト可能なバレルシフタに関する。
【0002】
【従来の技術】ビット操作命令は、レジスタやメモリに
格納されたデータ(複数ビットを有する)における任意
の1ビットに対して何らかの操作を行なう命令である。
ビット操作命令には、指定されたビットの値をフラグデ
ータとして保存するとともにそのビットを“1”にセッ
トする命令,指定されたビットの値をフラグデータとし
て保存するとともにそのビットを“0”にクリアする命
令,指定されたビットの値をフラグデータとして保存す
るとともにそのビットを反転する命令等がある。たとえ
ば、磁気ディスクの使用状況を複数ビットを有するデー
タの各ビットに割り当てて記憶する場合、磁気ディスク
の使用中の領域を“1”,空き領域を“0”として示
す。そのとき、空き領域に情報を書き込んだ場合対応す
るビットが“0”から“1”となり、ディスク上のある
領域のデータを消去した場合対応するビットが“1”か
ら“0”となる。
【0003】図17は、ビット操作命令を実行する装置
の従来例を示すブロック図である。この装置は、データ
バスとしてのS1バス1,S2バス2,Dバス3と、A
LU4とバレルシフタ5と、レジスタ6と、PSWレジ
スタ10とを含む。ALU4,バレルシフタ5,レジス
タ6は、それぞれS1バス1,S2バス2,Dバス3に
接続されて、相互にデータ伝送が可能である。また、P
SWレジスタ10は、S2バス2に接続されている。
【0004】図17に示すような装置は、たとえばCP
U(中央処理装置)の内部に設けられている。
【0005】図17に示す従来の装置において、ビット
操作命令の実行は次のような手順で行なわれている。
【0006】(1) データは、LSD側が高いアドレ
スとなっているビッグエンディアンである。図19に示
すように、バレルシフタ5にMSBのみ“1”を有する
データを入力し、当該データを指定ビット数だけ右シフ
トする。これによって、指定ビット位置のみが“1”で
その他のビットは“0”のデータ(マスクデータ)が作
成される。そして、そのマスクデータをDバス3を介し
て一旦レジスタ6へ格納する。
【0007】(2) 図20に示すように、バレルシフ
タ5で、ビット操作を行なうデータをS2バス2から入
力し、そのデータを指定ビット数だけ左シフトして、指
定ビット位置をMSBに移動させる。そして、MSBの
値をフラグデータとしてPSWレジスタ10に格納す
る。
【0008】(3) 手順(1)で作成した指定ビット
位置のみ“1”のマスクデータを、レジスタ6からS1
バス1を介してALU4へ転送する。ビット操作される
ビットを含むデータ(図20の上側に示された入力デー
タ)は、S2バス2を介してALU4に入力される。A
LU4において、指定されたビットを“1”にセットす
るときは、手順(1)で作成されたマスクデータとビッ
ト操作データ(図20の上側の入力データ)との論理和
(OR)をとることにより、指定ビットだけ“1”にセ
ットされ、あとは不変のデータが作成される。ALU4
において、指定されたビットを“0”にクリアするとき
は、手順(1)で作成されたマスクデータの反転データ
とビット操作データとの論理積(AND)をとることに
より、指定ビットだけ“0”にクリアされ、あとは不変
のデータが作成される。ALU4において、指定された
ビットを反転するときは、手順(1)で作成されたマス
クデータとビット操作データとの排他的論理和(イクス
クルーシブOR)をとることにより、指定ビットだけ反
転され、あとは不変のデータが作成される。
【0009】以上のように、従来の装置では、手順
(1)で作成されたマスクデータを手順(3)で使用す
るため、ビット操作命令を実行するために最低でも2ス
テップを必要とする。
【0010】図18は、図17に示す従来のバレルシフ
タ5の構成を示すブロック図である。図において、従来
のバレルシフタはAレジスタ51と、Bレジスタ52
と、シフトアレイ53と、Oレジスタ54とを含む。シ
フト動作を行なうとき、シフトされるデータはS2バス
2からAレジスタ51またはBレジスタ52に入力され
る。シフト幅を決定するデータは、S1バス1からOレ
ジスタ54に入力される。左シフトを実行するときは、
Aレジスタ51からシフトアレイ53を介してBレジス
タ52へデータを転送し、Bレジスタ52からシフト後
のデータがDバス3に出力される。右シフトを実行する
ときは、Bレジスタ52からシフトアレイ53を介して
Aレジスタ51にデータを転送し、Aレジスタ51から
シフト後のデータがDバス3へ出力される。データのシ
フト状態は、図21のようになる。データをAレジスタ
51に入力すると左シフトされたデータがBレジスタ5
2に入り、Bレジスタ52に入力すると右シフトされた
データがAレジスタ51に入る。
【0011】
【発明が解決しようとする課題】前述したように、従来
の装置においては、ALU4がビット操作を行なう構成
となっているため、ビット操作命令を実行するために複
数回のステップが必要であった。そのため、ビット操作
命令を実行するうえで、装置の負担が重くなるととも
に、その処理時間が長くなるという問題点があった。
【0012】それゆえに、この発明の目的は、1ステッ
プでビット操作命令を実行することができるようなバレ
ルシフタを提供することである。
【0013】
【課題を解決するための手段】この発明にかかるバレル
シフタは、入力手段と、ビット位置指定データ入力手段
と、論理信号発生手段と、置き換え手段とを備えてい
る。入力手段は、複数ビットのデータを入力する。ビッ
ト位置指定データ入力手段は、入力データのビット操作
の対象となるビット位置を指定するデータを入力する。
論理信号発生手段は、ビット操作命令の種類と、入力デ
ータのビット操作の対象となるビットデータの論理とに
基づいて、ビット操作用論理信号を発生する。置き換え
手段は、ビット位置指定データに応答して、入力データ
のビット操作の対象となるビットデータをビット操作用
論理信号に置き換える。
【0014】
【作用】この発明においては、データのシフトを行なう
バレルシフタ自身がビット操作機能を有する。すなわ
ち、データが入力されると、その入力データのビット操
作の対象となるビットデータが論理信号発生手段により
発生されたビット操作用論理信号に置き換えられる。し
たがって、従来のようにマスクデータを作成する必要が
ないので、ビット操作を1ステップで実行することがで
きる。
【0015】
【実施例】本発明のバレルシフタの構成を説明する前
に、本発明のバレルシフタを備えるマイクロプロセッサ
で実行されるビット操作命令のデータフォーマットの一
例を図6に示す。図において、アドレスNとアドレスN
+1の2バイトを見ないと命令フォーマットが判別でき
ないようになっているが、これは、命令が必ず16ビッ
ト(ハーフワード)単位でフェッチ,デコードされるこ
とを前提としたためである。
【0016】本発明のバレルシフタを備えるマイクロプ
ロセッサにおいて実行されるビット操作命令は、図7に
示すように、ベースおよびオフセットの2つのパラメー
タにより操作対象となるビットが指定される。ここで、
ベースは、各データブロック(バイト,ハーフワード,
ワード)の起点になるアドレスを示している。オフセッ
トは、ベースを起点としたビットアドレスを示してい
る。したがって、ベースがNのときアドレスNの0ビッ
トをオフセットの起点として、操作するビット位置が指
定されることになる。レジスタに格納されたデータのビ
ットを操作する場合には、このほかにベースのサイズも
ビット操作の対象となるビット位置の指定に影響する。
ベースのサイズには、たとえば8ビット(バイト),1
6ビット(ハーフワード),32ビット(ワード)の3
種類がある。
【0017】本発明のバレルシフタを備えるマイクロプ
ロセッサの一般型のビット操作命令では、オフセットの
値に制限がなく、オフセットがバイト境界を越えてもよ
いようになっている。オフセットは、符号付きの整数と
して扱われる。正の場合には、図7の右方向(ビット番
号およびアドレス増加方向)、負の場合には、図7の左
方向(ビット番号およびアドレス減少方向)となる。
【0018】本発明のバレルシフタを備えるマイクロプ
ロセッサにおける命令セットは、指定ビットのみ“1”
にセットするBSET命令,指定ビットのみ“0”にク
リアするBCLR命令,指定ビットのみ反転するBNO
T命令を含む。
【0019】BSET命令の一般型命令フォーマットは
図8に示すとおりである。本発明のバレルシフタを備え
るマイクロプロセッサで実行されるビット操作命令で
は、オフセットフィールドで示されたアドレッシングモ
ードに従ってオフセットが定められ、ベースフィールド
で示されたアドレッシングモードに従ってベースが定め
られる。また、sxフィールドでオフセットのサイズを
指定し、syフィールドでベースのサイズを指定する。
この場合のサイズの指定は、たとえば次のように定めら
れる。
【0020】 sx(またはsy)=00:8ビットコペランド sx(またはsy)=01:16ビットコペランド sx(またはsy)=10:32ビットコペランド 本発明のバレルシフタを備えるマイクロプロセッサで
は、図17と同様に、PSWレジスタ10を備えてい
る。このPSWレジスタ10内に、マイクロプロセッサ
のもとの状態を示すフラグデータを格納するフラグフィ
ールドが設けられている。本発明のバレルシフタを備え
るマイクロプロセッサで実行されるビット操作命令は、
このフラグの1つに指定されたビットの値をフラグデー
タとして保存するとともに、その後その指定されたビッ
トをセットまたはクリアまたは反転する命令である。
【0021】BSET命令は、指定されたビットの値を
フラグデータとして保存し、その後そのビットを“1”
にセットする命令である。
【0022】BCLR命令の一般型命令フォーマットは
図9に示すとおりである。BCLR命令は、指定された
ビットの値をフラグデータとして保存するとともに、そ
の後そのビットを“0”にクリアする命令である。
【0023】BNOT命令の一般型命令フォーマットは
図10に示すとおりである。BNOT命令は、指定され
たビットの値をフラグデータとして保存するとともに、
その後そのビットを反転する命令である。
【0024】本発明のバレルシフタを備えるマイクロプ
ロセッサは、各種のバッファ記憶と、命令バスやデータ
バスを使用したメモリの効率的アクセスにより、命令を
パイプライン処理して高性能に動作する。以下には、本
発明のバレルシフタを備えるマイクロプロセッサのパイ
プライン処理について説明する。
【0025】本発明のバレルシフタを備えるマイクロプ
ロセッサのパイプライン処理は、図5に示す構成とな
る。このマイクロプロセッサは、命令のプリフェッチを
行なう命令フェッチステージ(IFステージ)71と、
命令のデコードを行なうデコードステージ(Dステー
ジ)72と、オペランドのアドレス計算を行なうオペラ
ンドアドレス計算ステージ(Aステージ)73と、マイ
クロROMアクセス(特にRステージと呼ぶ)およびオ
ペランドのプリフェッチ(特にOFステージと呼ぶ)を
行なうオペランドフェッチステージ(Fステージ)74
と、命令の実行を行なう実行ステージ(Eステージ)7
5と、メモリオペランドのストアを行なうストアステー
ジ(Sステージ)76とを含む。マイクロプロセッサ
は、以上の6ステージでデータのパイプライン処理を行
なう。なお、Sステージ76には3段のストアバッファ
が設けられている。
【0026】図5における各ステージ71〜76は、そ
れぞれが他のステージとは独立に動作する。理論上は、
6つのステージが完全に独立的に動作する。Sステージ
76以外の各ステージ71〜75は、1回の処理を最少
1クロックで行なうことができる。Sステージ76は
、1回のオペランドストア処理を最少2クロックで行
なうことができる。したがって、メモリオペランドのス
トア処理がない場合、理想的には1クロックごとに次々
とパイプライン処理が進行する。
【0027】本発明のバレルシフタを備えるマイクロプ
ロセッサは、メモリ−メモリ間演算や、メモリ間接アド
レッシングなど、基本パイプライン処理1回だけでは処
理が行なえない命令を実行する場合にも、なるべく均衡
したパイプライン処理が行なえるように設計されてい
る。すなわち、複数のメモリオペランドを有する命令に
対しては、メモリオペランドの数をもとに、デコード段
階で複数のパイプライン処理単位(ステップコード)に
分解してパイプライン処理を行なう。これにより、複雑
な命令に対しても円滑なパイプライン処理が可能とな
る。
【0028】IFステージ71からDステージ72に渡
される情報は命令コードそのものである。Dステージ7
2からAステージ73に渡される情報は命令で指定され
た演算に関するもの(Dコード81)と、オペランドの
アドレス計算に関するもの(Aコード82)と、処理中
命令のプログラムカウンタ値(PC)との3つである。
Aステージ73からFステージ74に渡される情報は、
マイクロプログラムルーチンのエントリー番地やマイク
ロプログラムへのパラメータなどを含むRコード83
と、オペランドのアドレスとアクセス方法指示情報など
を含むFコード84と、処理中命令のプログラムカウン
タ値PCとの3つである。Fステージ74からEステー
ジ75に渡される情報は、演算制御情報とリテラルなど
を含むEコード85と、オペランドやオペランドアドレ
スなどを含むSコード86と、処理中命令のプログラム
カウンタ値PCとの3つである。Sコード86は、アド
レスとデータとからなる。Eステージ75からSステー
ジ76に渡される情報は、ストアすべき演算結果である
Wコード87と、その演算結果を出力した命令のプログ
ラムカウンタ値PCとの2つである。Wコード87は、
アドレスとデータとからなる。
【0029】本発明のバレルシフタは、Eステージ75
内に設けられている。Eステージ75は、マイクロプロ
グラムの制御により動作する。ビット操作命令でオペラ
ンドがメモリ上に格納されていると、データ,オフセッ
トはSコード86としてEステージ75に送られる。
【0030】一方、オペランドがレジスタ上に格納され
ているときは、Eステージ75内に設けられているレジ
スタからデータ,オフセットを読み出す。
【0031】図1は、本発明のバレルシフタの一実施例
の構成を示すブロック図である。図1に示すバレルシフ
タは、図18に示す従来のバレルシフタと同様に、S1
バス1と、S2バス2と、Dバス3と、Aレジスタ51
と、Bレジスタ52と、シフトアレイ53と、Oレジス
タ54とを含む。さらに、図1に示すバレルシフタは、
Aレジスタ51とシフトアレイ53との間にビット操作
用回路55が設けられている。図1において、Oレジス
タ54は、シフト動作時はシフト幅を示すデータをシフ
トアレイ53に与え、ビット操作時はビット指定位置を
示すデータをシフトアレイ53に与える。データはS2
バス2,シフト幅はS1バス1から入り、結果はDバス
3へ出力される。各バス1〜3は32ビットであり、シ
フト幅は下位8ビットしか見ていない。Oレジスタ54
に入力されたシフト幅を示すデータは、32本のシフト
数信号にデコードされてシフトアレイ53に出力され
る。この信号はシフト数を示す1本のみが“1”とな
る。
【0032】図1に示すバレルシフタにおいて、左シフ
ト動作を行なうときはAレジスタ51からシフトアレイ
53を介してBレジスタ52にデータを転送し、シフト
後のデータをBレジスタ52からDバス3に出力する。
図1に示すバレルシフタにおいて、右シフトを行なうと
きはBレジスタ52からシフトアレイ53を介してAレ
ジスタ51へデータを転送し、シフト後のデータをAレ
ジスタ51からDバス3に出力する。データは、S2バ
ス2からバレルシフタに入力される。オフセットは、S
1バス1からバレルシフタに入力される。ただし、オフ
セットが32以上の場合は、ベースにその分を加算し
て、操作されるビットを含む1ワードをS2バス2から
バレルシフタに転送する。オフセットの方は、その1ワ
ード内の操作ビットを示す31以下の指定ビット位置と
し、S1バス1からバレルシフタに転送する。
【0033】図1に示すバレルシフタでは、Aレジスタ
51に格納されたデータをビット操作用回路55で処理
後、再びAレジスタ51に転送することにより、ビット
操作が行なわれる。ビット操作の行なわれたデータは、
Aレジスタ51からDバス3に出力される。このとき、
ビット操作用回路55からAレジスタ51に転送される
データは、ビット操作はされているが、シフトアレイ5
3を通過していないためシフトはされていない。ただ
し、たとえばビット番号nのビットが操作されるとする
と、Aレジスタ51のビット番号nのビットデータのみ
シフトアレイ53を介してBレジスタ52のビット番号
0のビットに転送される。これは、Bレジスタ52のビ
ット番号0のビットデータをフラグデータとしてバレル
シフタからPSWレジスタ(図示せず)へ転送し保存す
るためである。
【0034】図2は、図1に示すAレジスタ51,ビッ
ト操作用回路55,シフトアレイ53の構成の一例を示
す回路図である。以下、この図2も参照して、図1に示
すバレルシフタの動作を説明する。
【0035】(1) シフト動作時の動作 S2バス2からの入力データS2(0)〜S2(n+
1)をたとえばnビットシフトするとすると、Oレジス
タ54からシフトアレイ53に与えられるnビットシフ
ト信号18が“1”となる。その結果、Aレジスタ51
のビット番号n+1のビットA(n+1)とBレジスタ
52のビット番号1のビットB(1)とが接続され、ま
たA(n)とB(0)とが接続される。他のビットも同
様の態様で接続される。したがって、Aレジスタ51か
らBレジスタ52へデータが転送されるときにデータが
nビット左シフトされ、Bレジスタ52からAレジスタ
51へデータが転送されるときにnビット右シフトされ
る。シフト動作時は、シフト信号/STが“0”となる
ので、ビット操作用回路55におけるNANDゲート1
2,15の出力が“1”となる。その結果、ビット操作
用回路55におけるトランスミッションゲート10およ
び13が常時オン状態となり、トランスミッションゲー
ト11および14が常時オフ状態となる。したがって、
ビット操作用論理信号O20は、Aレジスタ51に与えら
れない。
【0036】入力データを右シフトする場合は、Bレジ
スタ52に入力されたデータがシフトアレイ53を介し
てAレジスタ51に転送される。このとき、Aレジスタ
51への入力信号22が“0”,入力信号23が“1”
となる。その結果、Aレジスタ51に格納されたデータ
はシフトアレイ53に出力されず、シフトアレイ53か
ら入力されるデータがAレジスタ51からDバス3に出
力される。
【0037】一方、入力データを左シフトする場合は、
Aレジスタ51に入力されたデータがシフトアレイ53
を介してBレジスタ52に転送される。このとき、Aレ
ジスタ51への入力信号22は“1”,入力信号23は
“0”となる。その結果、Aレジスタ51に格納された
データがシフトアレイ53に出力される。
【0038】(2) ビット操作時の動作 ビット操作時においては、Aレジスタ51への入力信号
22が“1”,入力信号23が“1”となる。たとえ
ば、ビット番号nのビットが操作されるとすると、Aレ
ジスタ51のビット番号nのビットがシフトアレイ53
を介してBレジスタ52のビット番号0のビットと接続
される。このとき、シフト信号/STが“1”,nビッ
トシフト信号18が“1”となるので、ビット操作用回
路55におけるNANDゲート15の出力が“0”とな
り、トランスミッションゲート13がオフ状態,トラン
スミッションゲート14がオン状態となる。そのため、
Aレジスタ51のビット番号nのビットがビット操作用
論理信号O20を受けてセットあるいはクリアあるいは反
転された値となる。その他のビット、たとえばビット番
号n+1のビットでは、シフト信号/STが“1”,n
+1ビットシフト信号17が“0”となるので、NAN
Dゲート12の出力が“1”となり、トランスミッショ
ンゲート10がオン状態,トランスミッションゲート1
1がオフ状態となる。したがって、Aレジスタ51から
ビット操作用回路55に与えられたデータはビット操作
を受けることなくそのままAレジスタ51へ転送され
る。そして、Aレジスタ51への入力信号22が
“1”,入力信号23が“1”となるので、ビット操作
用回路55からAレジスタ51に転送されたデータは、
Aレジスタ51からDバス3に出力される。
【0039】図2においてビット操作用回路55に与え
られるビット操作用論理信号O20は、たとえば図3に示
すようなビット操作用論理信号発生回路により発生され
る。図3に示すビット操作用論理信号発生回路は、イン
バータIV1,IV2と、ANDゲートAG1と、NO
RゲートNOG1とを含む。ANDゲートAG1には、
not信号と、Bレジスタ52におけるビット番号0の
ビットデータB(0)の反転信号とが与えられる。NO
RゲートNOG1には、set信号と、ANDゲートA
G1の出力信号とが与えられる。NORゲートNOG1
の出力は、インバータIV2により反転された後、ビッ
ト操作用論理信号O20として出力される。
【0040】図4に示すように、set信号はBSET
命令が行なわれる場合にのみ“H”レベルとなり、no
t信号はBNOT命令が行なわれる場合にのみ“H”レ
ベルとなる。これにより、ビット操作用論理信号O
20は、BSET命令の実行時は“1”となり、BCLR
命令の実行時は“0”となり、BNOT命令の実行時は
ビット信号B(0)の反転信号となる。
【0041】図2に示すビット操作用回路55は、Aレ
ジスタ51から与えられる複数ビットのデータのうち、
ビット操作の指定されたビット位置のビットデータをビ
ット操作用論理信号O20に置き換えてAレジスタ51に
転送する。これにより、ビット操作が行なわれる。
【0042】以上説明された実施例は、ベースのサイズ
が1ワード、つまり1ワード単位でビットシフトおよび
ビット操作を行なう実施例を示している。しかしなが
ら、ビットシフトおよびビット操作の対象となるデータ
がメモリではなくレジスタ内に格納されている場合は、
ベースのサイズが1ワードとは限らず、1ハーフワード
または1バイトの場合もありうる。そこで、このような
場合に対応しうる実施例を以下に説明する。
【0043】データのサイズがハーフワードの場合は、
データをAレジスタ51またはBレジスタ52へ入力す
る際に、上位16ビットと下位16ビットとに同じデー
タを入力する。
【0044】図11は、データのサイズがハーフワード
の場合の右シフトの様子を示す。シフト動作を行なう場
合、右シフトのときは、Bレジスタ52のデータがシフ
トアレイ53を通ってAレジスタ51へ転送される。こ
のとき、Aレジスタ51の上位16ビットがBレジスタ
52の上位16ビットの右シフトされたデータとなる。
したがって、Aレジスタ51の上位16ビットをシフト
結果としてDバス3に出力する。図12は、データのサ
イズがハーフワードの場合の左シフトの様子を示す。左
シフトのときは、Aレジスタ51のデータがシフトアレ
イ53を通ってBレジスタ52に転送される。このと
き、Bレジスタ52の下位16ビットがAレジスタ51
の上位16ビットの左シフトされたデータとなる。した
がって、Bレジスタ52の下位16ビットをシフト結果
としてDバス3に出力する。
【0045】図13は、データのサイズがハーフワード
の場合のビット操作を行なうときの様子を示している。
ビット操作を行なう場合は、データのサイズがワードの
場合と同様に、B(0)とつながるビットのみをセット
またはクリアまたは反転するのであるから、Aレジスタ
51のデータがビット操作用回路55で処理された後A
レジスタ51へ戻ると、戻ったAレジスタ51の上位1
6ビットがビット操作されたデータとなる。したがっ
て、Aレジスタ51の上位16ビットをビット操作結果
としてDバス3に出力する。
【0046】上記のごとく、データのサイズがハーフワ
ードのときは、シフト操作およびビット操作ともにAレ
ジスタ51は上位16ビットを、Bレジスタ52は下位
16ビットをDバス3に出力すればよい。
【0047】一方、データのサイズがバイトの場合は、
データをAレジスタ51またはBレジスタ52へ入力す
る際に、上位8ビットと下位8ビットに同じデータを入
力する。
【0048】図14は、データのサイズがバイトの場合
の右シフトの様子を示している。シフト動作を行なう場
合、右シフトのときは、Bレジスタ52のデータがシフ
トアレイ53を通ってAレジスタ51へ転送される。こ
のとき、Aレジスタ51の上位8ビットがBレジスタ5
2の上位8ビットの右シフトされたデータとなる。した
がって、Aレジスタ51の上位8ビットをシフト結果と
してDバス3へ出力する。図15は、データのサイズが
バイトの場合の左シフトの様子を示している。左シフト
のときは、Aレジスタ51のデータがシフトアレイ53
を通ってBレジスタ52に転送される。このとき、Bレ
ジスタ52の下位8ビットがAレジスタ51の上位8ビ
ットの左シフトされたデータとなる。したがって、Bレ
ジスタ52の下位8ビットをシフト結果としてDバス3
に出力する。
【0049】図16は、データのサイズがバイトの場合
のビット操作を行なうときの様子を示している。ビット
操作を行なう場合は、データのサイズがワードの場合と
同様に、B(0)とつながるビットのみをセットまたは
クリアまたは反転するのであるから、Aレジスタ51の
データがビット操作用回路55を通ってAレジスタ51
へ戻ると、戻ったAレジスタ51の上位8ビットがビッ
ト操作されたデータとなる。したがって、Aレジスタ5
1の上位8ビットをビット操作結果としてDバス3に出
力する。
【0050】上記のごとく、データのサイズがバイトの
ときは、シフト操作およびビット操作ともにAレジスタ
51は上位8ビットを、Bレジスタ52は下位8ビット
をDバス3に出力すればよい。
【0051】
【発明の効果】以上のように、この発明によれば、従来
のバレルシフタに対して少ない回路増加でビット操作を
行なえるバレルシフタを得ることができ、従来は最低で
も2ステップが必要であったビット操作命令が1ステッ
プで行なえる。その結果、バレルシフタを備えるマイク
ロプロセッサの負担が軽減され、かつビット操作処理を
高速化できる。
【図面の簡単な説明】
【図1】本発明のバレルシフタの一実施例の構成を示す
ブロック図である。
【図2】本発明のバレルシフタの一部の構成を示す回路
図である。
【図3】ビット操作用論理信号O20を発生するための回
路の構成を示す論理ゲート図である。
【図4】図3に示すビット操作用論理信号発生回路の動
作を説明するための図である。
【図5】本発明のバレルシフタを備えるマイクロプロセ
ッサのパイプライン処理構造を示す図である。
【図6】本発明のバレルシフタを備えるマイクロプロセ
ッサで実行される命令のデータフォーマットの一例を示
す図である。
【図7】ビット操作命令のビット位置指定方法を説明す
るための図である。
【図8】BSET命令の一般型命令フォーマットを示す
図である。
【図9】BCLR命令の一般型命令フォーマットを示す
図である。
【図10】BNOT命令の一般型命令フォーマットを示
す図である。
【図11】データのサイズがハーフワードの場合の右シ
フトの様子を示す図である。
【図12】データのサイズがハーフワードの場合の左シ
フトの様子を示す図である。
【図13】データのサイズがハーフワードの場合のビッ
ト操作を行なうときの様子を示す図である。
【図14】データのサイズがバイトの場合の右シフトの
様子を示す図である。
【図15】データのサイズがバイトの場合の左シフトの
様子を示す図である。
【図16】データのサイズがバイトの場合のビット操作
を行なうときの様子を示す図である。
【図17】ビット操作を行なうための従来の装置の構成
を示すブロック図である。
【図18】従来のバレルシフタの構成を示すブロック図
である。
【図19】従来の装置においてビット操作のためのマス
クデータを作成するときの様子を示す図である。
【図20】従来の装置においてビット操作の対象となる
ビットのデータをフラグデータとして保存するために行
なわれるシフト動作を示す図である。
【図21】従来の装置においてデータのシフト動作を行
なう様子を示す図である。
【符号の説明】
1 S1バス 2 S2バス 3 Dバス 4 ALU 5 バレルシフタ 51 Aレジスタ 52 Bレジスタ 53 シフトアレイ 54 Oレジスタ 55 ビット操作用回路 6 レジスタ 10 PSWレジスタ
【手続補正書】
【提出日】平成4年5月18日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0003
【補正方法】変更
【補正内容】
【0003】図17は、ビット操作命令を実行する装置
の従来例を示すブロック図である。この装置は、データ
バスとしてのS1 バス1,S2バス2,Dバス3と、A
LU4と、バレルシフタ5と、レジスタ6と、PSWレ
ジスタ10と、PSWレジスタ10へのフラグの信号線
11,12とを含む。ALU4,バレルシフタ5,レジ
スタ6は、それぞれS1バス,S2バス,Dバス3に接
続されて、相互にデータ伝送が可能である。また、PS
Wレジスタ10は、S2バス2に接続されている。PS
Wレジスタ10へのフラグは、信号線11,12を介し
て転送される。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正内容】
【0006】(1) データは、LS側が高いアドレ
スとなっているビッグエンディアンである。図19に示
すように、バレルシフタ5にMSBのみ“1”を有する
データを入力し、当該データを指定ビット数だけ右シフ
トする。これによって、指定ビット位置のみが“1”で
その他のビットは“0”のデータ(マスクデータ)が作
成される。そして、そのマスクデータをDバス3を介し
て一旦レジスタ6へ格納する。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0011
【補正方法】変更
【補正内容】
【0011】
【発明が解決しようとする課題】前述したように、従来
の装置においては、ALU4がビット操作を行なう構成
となっているため、ビット操作命令を実行するために複
数回のステップが必要であった。そのため、ビット操作
命令を実行するうえで、その処理時間が長くなるという
問題点があった。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0020
【補正方法】変更
【補正内容】
【0020】 sx(またはsy)=00:8ビットペランド sx(またはsy)=01:16ビットペランド sx(またはsy)=10:32ビットペランド 本発明のバレルシフタを備えるマイクロプロセッサで
は、図17と同様に、PSWレジスタ10を備えてい
る。このPSWレジスタ10内に、マイクロプロセッサ
のもとの状態を示すフラグデータを格納するフラグフィ
ールドが設けられている。本発明のバレルシフタを備え
るマイクロプロセッサで実行されるビット操作命令は、
このフラグの1つに指定されたビットの値をフラグデー
タとして保存するとともに、その後その指定されたビッ
トをセットまたはクリアまたは反転する命令である。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0051
【補正方法】変更
【補正内容】
【0051】
【発明の効果】以上のように、この発明によれば、従来
のバレルシフタに対して少ない回路増加でビット操作を
行なえるバレルシフタを得ることができ、従来は最低で
も2ステップが必要であったビット操作命令が1ステッ
プで行なえる。その結果、ビット操作処理を高速化でき
る。
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図17
【補正方法】変更
【補正内容】
【図17】

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数ビットのデータを任意のビット数だ
    けシフト可能なバレルシフタにおいて、 複数ビットのデータを入力するための入力手段、 前記入力データのビット操作の対象となるビット位置を
    指定するデータを入力するためのビット位置指定データ
    入力手段、 ビット操作命令の種類と、前記入力データのビット操作
    の対象となるビットデータの論理とに基づいて、ビット
    操作用論理信号を発生する論理信号発生手段、および前
    記ビット位置指定データに応答して、前記入力データの
    ビット操作の対象となるビットデータを前記ビット操作
    用論理信号に置き換える手段を備えることを特徴とす
    る、バレルシフタ。
JP3257648A 1991-10-04 1991-10-04 バレルシフタ Withdrawn JPH05100818A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3257648A JPH05100818A (ja) 1991-10-04 1991-10-04 バレルシフタ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3257648A JPH05100818A (ja) 1991-10-04 1991-10-04 バレルシフタ

Publications (1)

Publication Number Publication Date
JPH05100818A true JPH05100818A (ja) 1993-04-23

Family

ID=17309171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3257648A Withdrawn JPH05100818A (ja) 1991-10-04 1991-10-04 バレルシフタ

Country Status (1)

Country Link
JP (1) JPH05100818A (ja)

Similar Documents

Publication Publication Date Title
US5379240A (en) Shifter/rotator with preconditioned data
KR940009094B1 (ko) 데이타처리 시스템
US5497468A (en) Data processor that utilizes full data width when processing a string operation
CN111767516A (zh) 用于利用所选择的舍入来执行浮点加法的系统和方法
JPH06332695A (ja) データ処理装置及びその制御回路
US20020108027A1 (en) Microprocessor and method of processing unaligned data in microprocessor
JP2970821B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
US6370639B1 (en) Processor architecture having two or more floating-point status fields
EP0913764B1 (en) Method and apparatus for shifting data
US4677582A (en) Operation processing apparatus
JPS6014338A (ja) 計算機システムにおける分岐機構
US6212539B1 (en) Methods and apparatus for handling and storing bi-endian words in a floating-point processor
US5077659A (en) Data processor employing the same microprograms for data having different bit lengths
US5301338A (en) System including central processing unit
JP3556252B2 (ja) オフセット合計を計算するデータ処理システムとその方法
JPH034936B2 (ja)
JP2748957B2 (ja) データ処理装置
JPH1091395A (ja) プロセッサ
EP0334131B1 (en) Data processor performing operation on data having length shorter than one-word length
JP2520882B2 (ja) デ−タ処理装置およびデ−タ処理方法
US5519881A (en) Priority encoder for accessing multiple registers simultaneously and a data processing system which uses it
JPH05100818A (ja) バレルシフタ
JPH0922379A (ja) マイクロコンピュータ
JP5732139B2 (ja) データ要素の条件付き選択

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990107