JPS5947643A - 演算処理方式 - Google Patents
演算処理方式Info
- Publication number
- JPS5947643A JPS5947643A JP15811582A JP15811582A JPS5947643A JP S5947643 A JPS5947643 A JP S5947643A JP 15811582 A JP15811582 A JP 15811582A JP 15811582 A JP15811582 A JP 15811582A JP S5947643 A JPS5947643 A JP S5947643A
- Authority
- JP
- Japan
- Prior art keywords
- data
- cycle
- arithmetic
- calculation
- input
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の利用分野〕
本発明は、特にベクトル総和命令のように同一演算を連
続的に行なう場合に、そのデータ数が演算段数より小さ
い場合でも最小の演算サイクル数で演算結果を求めるに
好適な演算処理方式に関する。
続的に行なう場合に、そのデータ数が演算段数より小さ
い場合でも最小の演算サイクル数で演算結果を求めるに
好適な演算処理方式に関する。
ベクトルデータをVl、v2、・・・vnとしたときの
各データの総和を求めるベクトル総和演算5=v1+v
2+・・・+vn を考える。従来、データ数nが演算段数以上ならばその
演算制御は単純であるが、nが演算段数より小さい場合
でも同様の単純制御を行なうため、入力データとして定
数0を追加し演算を実行している。
各データの総和を求めるベクトル総和演算5=v1+v
2+・・・+vn を考える。従来、データ数nが演算段数以上ならばその
演算制御は単純であるが、nが演算段数より小さい場合
でも同様の単純制御を行なうため、入力データとして定
数0を追加し演算を実行している。
例えば、n = 2の場合の動作を第1図と第2図を用
いて説明する。ここで第1図は演算を実行するためのブ
ロック図であり、第2図はそのブロック図を更に簡略化
して演算動作を説明するものである。第1図のRA、、
RBoは入力データ及び演算途中結果を入力する入力
レジスタ、R,A1. RB、は中間レジスタ、RA2
は加算結果を入力するレジスタ、RA3は演算結果を出
力する出力レジスタ、1は入力データのセレクト及び各
部を制御する演算制御部、2は定数を発生する10′発
生器、6は演算される入力データの仮数部を大きい方に
桁合せするブリシフト回路、4は加算器、5は加算され
たデータを正規化するボストシフト回路、10は出力レ
ジスタRA、のデータを入力レジスタRAo、 RBo
にもどす帰環。
いて説明する。ここで第1図は演算を実行するためのブ
ロック図であり、第2図はそのブロック図を更に簡略化
して演算動作を説明するものである。第1図のRA、、
RBoは入力データ及び演算途中結果を入力する入力
レジスタ、R,A1. RB、は中間レジスタ、RA2
は加算結果を入力するレジスタ、RA3は演算結果を出
力する出力レジスタ、1は入力データのセレクト及び各
部を制御する演算制御部、2は定数を発生する10′発
生器、6は演算される入力データの仮数部を大きい方に
桁合せするブリシフト回路、4は加算器、5は加算され
たデータを正規化するボストシフト回路、10は出力レ
ジスタRA、のデータを入力レジスタRAo、 RBo
にもどす帰環。
線である。
(1) サイクル(1)が1では、入力データv1が
入力レジスタRAoに、10′発生器2により出力され
た定数0が几B。にそれぞれセットされる。
入力レジスタRAoに、10′発生器2により出力され
た定数0が几B。にそれぞれセットされる。
(2)サイクル2では、RAo、 RBoのデータv1
.0がプリシフト回路3を抜けて中間レジスタ]tA、
、RB、にそれぞれセットされ、入力データv2がRA
oに、サイクル1と同様に定数0がRBoにそれぞれセ
ントされる。
.0がプリシフト回路3を抜けて中間レジスタ]tA、
、RB、にそれぞれセットされ、入力データv2がRA
oに、サイクル1と同様に定数0がRBoにそれぞれセ
ントされる。
(3)サイクル3では、RA、、■もB1のデータv1
.0が加算器4により加算されレジスタI(、A2にV
、がセットされ、RAo、 RBoのデータv2.0が
プリシフト回路3を抜けて丁(・A、、、FtB、にそ
れぞれセットされる。また、RAoにはゝ0′発生器2
により出力された定数0が入力データとしてセントされ
、凡B。にも同4jNに0がセットされる。
.0が加算器4により加算されレジスタI(、A2にV
、がセットされ、RAo、 RBoのデータv2.0が
プリシフト回路3を抜けて丁(・A、、、FtB、にそ
れぞれセットされる。また、RAoにはゝ0′発生器2
により出力された定数0が入力データとしてセントされ
、凡B。にも同4jNに0がセットされる。
(4) サイクル4では、KA2のデータV、がポス
トシフト回路5を抜は出力レジスタRA3にセットされ
、1tA1、几B、のデータ■2.0が加算器4により
加算されKA2にv2がセットされる。
トシフト回路5を抜は出力レジスタRA3にセットされ
、1tA1、几B、のデータ■2.0が加算器4により
加算されKA2にv2がセットされる。
また、RAo、?−%Boのデータ0.0がプリシフト
回路3を抜げてRA、、RB 、にそれぞれセットされ
、RAo、 RBoにはサイクル3と同様に定数0がそ
れぞれセットされる。ここで初期処理は終了する。
回路3を抜げてRA、、RB 、にそれぞれセットされ
、RAo、 RBoにはサイクル3と同様に定数0がそ
れぞれセットされる。ここで初期処理は終了する。
(5)サイクル5では1.+(、A3のデータ■、が帰
環線10を通り旧3゜にセットされ、KA2のデータv
2がポストシフト回路5を抜け1もA、にセットされる
。また、RA、、J、t J:3 、のデータ0、Oが
加算器4により加算された1尤A2に0がセットされ、
RAo、 RBoのデータo、oはプリシフト回路6を
抜けて1も人1、HjJ、にそれぞれセットされる。
環線10を通り旧3゜にセットされ、KA2のデータv
2がポストシフト回路5を抜け1もA、にセットされる
。また、RA、、J、t J:3 、のデータ0、Oが
加算器4により加算された1尤A2に0がセットされ、
RAo、 RBoのデータo、oはプリシフト回路6を
抜けて1も人1、HjJ、にそれぞれセットされる。
(6) サイクル6では、几A3のデータ■2が帰環
線10を通りRAoにセントされ、■モA2のデータ0
がポストシフト回路5を抜けIL A3にセットされる
。RAl、RBlのデータ0.0は加り4器4により加
算されl−1,A2に0がセントされイ)。
線10を通りRAoにセントされ、■モA2のデータ0
がポストシフト回路5を抜けIL A3にセットされる
。RAl、RBlのデータ0.0は加り4器4により加
算されl−1,A2に0がセントされイ)。
このとき、RB。のデータV、は保持される。
(7)サイクル7では、KA、のデータ0が帰環Iv1
110を辿りRBoにセットされ、■七A2のデータ0
がポストシフト回路5を抜は几A3にセットされる。ま
た、RAo、几B。のデータv2、■。
110を辿りRBoにセットされ、■七A2のデータ0
がポストシフト回路5を抜は几A3にセットされる。ま
た、RAo、几B。のデータv2、■。
はプリシフト回路3を抜けてRAl、RB 、にそれぞ
れセットされる。
れセットされる。
(8)サイクル8では、■もA3のデータ0が帰環線1
0を迎りkAoKセットされ、RAl、■もB1のデー
タv2、vlが加算器4により加算されKA2にV、−
)−V2がセットされる。このとき、RBoのデータ0
は保持される1、 (9)サイクル9では、KA2のデータV、+V2がポ
ストシフト回路5を抜けて■もA3にセットされ、1(
Ao、 RBoのデータ0.0はプリシフト回路3を抜
けてRA、、1(B1にセットされる。
0を迎りkAoKセットされ、RAl、■もB1のデー
タv2、vlが加算器4により加算されKA2にV、−
)−V2がセットされる。このとき、RBoのデータ0
は保持される1、 (9)サイクル9では、KA2のデータV、+V2がポ
ストシフト回路5を抜けて■もA3にセットされ、1(
Ao、 RBoのデータ0.0はプリシフト回路3を抜
けてRA、、1(B1にセットされる。
(10)サイクル10テハ、几A3のデータv、+v2
が帰環線10を通りl−?、Boにセントされ、■(・
Al、It B 、のデータ0,0は加算器4により加
算されKA2に0がセントされる。
が帰環線10を通りl−?、Boにセントされ、■(・
Al、It B 、のデータ0,0は加算器4により加
算されKA2に0がセントされる。
(11)サイクル11では、KA2のデータ0がポスト
シフト回路5を抜けて几A3にセットされる。このとき
几B。のデータV、+V、は保ト)される。
シフト回路5を抜けて几A3にセットされる。このとき
几B。のデータV、+V、は保ト)される。
(12)サイクル12では、1も八、のデータ0がジ缶
環線10を辿りRAoにセットされる。このとき、RB
oのデータv、 +Vl!は保持されたままである。
環線10を辿りRAoにセットされる。このとき、RB
oのデータv、 +Vl!は保持されたままである。
(13)サイクル13では、RAo、几1馬のデータ0
、V、 +V2がプリシフト回路6を抜けてRA、、1
も131にそれぞれセットされる。
、V、 +V2がプリシフト回路6を抜けてRA、、1
も131にそれぞれセットされる。
(14)サイクル14では、几A6、BB、のデータ0
、V、 + V2が加算器4により加算されJi(、A
2にV、 +V2がセットされる。
、V、 + V2が加算器4により加算されJi(、A
2にV、 +V2がセットされる。
(15)サイクル15では、KA2のデータv1−1−
v2がポストシフト回路5を抜は出力レジスタRA3に
セットされる。ここで後処理が終了する。
v2がポストシフト回路5を抜は出力レジスタRA3に
セットされる。ここで後処理が終了する。
上記訃、明で明らかなように、この演算側例は演算途中
の結果が再び入力レジスタにセントされるまで、入力デ
ータとして定数0を追加することで演算の単純制御を可
能にしているが、余。
の結果が再び入力レジスタにセントされるまで、入力デ
ータとして定数0を追加することで演算の単純制御を可
能にしているが、余。
分なデータを入力することによりvl[算結果を得。
るまでの演算サイクルが長くなる欠点もあった。
本発明の目的は、入力データ数が演算段数より小さい場
合でも高速な演算処理方式を提供することにある。
合でも高速な演算処理方式を提供することにある。
本発明では、演算段数と演算段数より小さいデータ数と
の差の回数だけ入力データに定数00を付加することを
不要とし、演算されるデータのデータ数を検出する手段
とその検出したデータ数に対応して後処理演算サイクル
を可変にする手段とを備え、後処理演算サイクル数に応
じて演算ステージを制御することにより、データ数が演
算段数より小さい場合でも、累算演算処理を高速に行な
うことができるようにしたことを%、徴とする。
の差の回数だけ入力データに定数00を付加することを
不要とし、演算されるデータのデータ数を検出する手段
とその検出したデータ数に対応して後処理演算サイクル
を可変にする手段とを備え、後処理演算サイクル数に応
じて演算ステージを制御することにより、データ数が演
算段数より小さい場合でも、累算演算処理を高速に行な
うことができるようにしたことを%、徴とする。
以下、本発明の一実施例を図「11を用いて説明する。
第3図は本発明の一実施例のブロック図であり、第4図
はそのブロック図を史に簡略化して演算動作を説明する
ものである。図中、第1図と同符号部は同一部分を示し
、601、入力データ数を検出するカウンター、7はデ
ータ数により後処理す・fクル数を決定し、演qを制御
する後処理演算制御部である。従来方式で説明し定デー
タ数n = 2の場合、すなわちS = v、 +v、
。
はそのブロック図を史に簡略化して演算動作を説明する
ものである。図中、第1図と同符号部は同一部分を示し
、601、入力データ数を検出するカウンター、7はデ
ータ数により後処理す・fクル数を決定し、演qを制御
する後処理演算制御部である。従来方式で説明し定デー
タ数n = 2の場合、すなわちS = v、 +v、
。
の演算動作を2153図、第4図を用いて説明する。
ここで、データ数はカウンター6で2を検出し、後処理
演算サイクル数は後処理演算制御部7により決定される
。
演算サイクル数は後処理演算制御部7により決定される
。
(1)サイクル1では、入力データV、が入力レジスタ
RAoに、10′発生器2により出力された定数0が几
Boにそれぞれセットされる。
RAoに、10′発生器2により出力された定数0が几
Boにそれぞれセットされる。
(2) サイクル2では、I(Ao1■(Boのデー
タV、、0がプリシフト回路6を抜けて中間レジスタK
A1、RB、にそれぞれセットされ、入力データv2が
几A。に、サイクル1と同様に定数0がRBoにセント
される。ここで初期処理は終了する。
タV、、0がプリシフト回路6を抜けて中間レジスタK
A1、RB、にそれぞれセットされ、入力データv2が
几A。に、サイクル1と同様に定数0がRBoにセント
される。ここで初期処理は終了する。
(3) サイクル3では、几A1.1も131のデー
タv1.0が加算器4により加算されレジスタRA2に
。
タv1.0が加算器4により加算されレジスタRA2に
。
vlがセットされ、RAoSRBoのデータ■2.0が
プリシフト回路3を抜けて几A1、l(、B、にそれぞ
れセントされる。
プリシフト回路3を抜けて几A1、l(、B、にそれぞ
れセントされる。
(4)サイクル4では、RA2のデータv1がポストシ
フト回路5を抜は出力レジスタRA3にセットされ、R
Al、RBlのデータv2.0が加算器4により加算さ
れRA2にv2がセットされる。
フト回路5を抜は出力レジスタRA3にセットされ、R
Al、RBlのデータv2.0が加算器4により加算さ
れRA2にv2がセットされる。
(5) サイクル5では、RIA3のデータv1が帰
環線10を通りRBoにセットされ、RA2のデータv
2がポストシフト回路5を抜は几A3にセットされる。
環線10を通りRBoにセットされ、RA2のデータv
2がポストシフト回路5を抜は几A3にセットされる。
(6) サイクル6では、RA3のデータv2が帰環
線10を通りRAoにセットされる。このとき、RBo
のデータv1は保持される。
線10を通りRAoにセットされる。このとき、RBo
のデータv1は保持される。
(7) サイクル7では、RAo、 R]3oのデー
タv2、vlがプリシフト回路3を抜けて几N1.11
.B、にそれぞれセットされる。
タv2、vlがプリシフト回路3を抜けて几N1.11
.B、にそれぞれセットされる。
(8)サイクル8では、几A1、J(、H,のデータv
2、vlが加算器4により加算され■(A2に■1+v
2がセットされる。
2、vlが加算器4により加算され■(A2に■1+v
2がセットされる。
(9)サイクル9では、1tA2のデータv、 + v
2カホストシフト回路5を抜は出力レジスタKA3にセ
ットされる。ここで、後処理演算制御部7により決定さ
れた後処理演算サイクルが終了し、出力レジスタ几A3
から演算結果v、−1−v2が得られる。
2カホストシフト回路5を抜は出力レジスタKA3にセ
ットされる。ここで、後処理演算制御部7により決定さ
れた後処理演算サイクルが終了し、出力レジスタ几A3
から演算結果v、−1−v2が得られる。
上記説明で明らかのように、本実施例によれば最初のデ
ータが入力レジスタにセントされてから最終結果が出力
レジスタにセットされるまでに要する演算サイクル数は
、9サイクルで済むことになり、演算処理方式が従来方
式より速いという効果がある。
ータが入力レジスタにセントされてから最終結果が出力
レジスタにセットされるまでに要する演算サイクル数は
、9サイクルで済むことになり、演算処理方式が従来方
式より速いという効果がある。
本発明によれば、データ数に対応して後処理演算サイク
ル数を可変にできるので、データ数が演算段数より小さ
い場合でも累算演算処理を高速に処理できるという効果
がある。第5図は従来方式と本発明による方式で、デー
タ数が演算段数り、下のIA、1合、ベクトル総和演q
を実行したときの最終演算結果を得るまでの演算サイク
ル数を示したものである。×の線が従来方式、・の線が
本発明による場合である。本図では演算段数4の場合前
仮定しているが、それ以外の演カ段数でも同様、本発明
によれば高速に処理できる。
ル数を可変にできるので、データ数が演算段数より小さ
い場合でも累算演算処理を高速に処理できるという効果
がある。第5図は従来方式と本発明による方式で、デー
タ数が演算段数り、下のIA、1合、ベクトル総和演q
を実行したときの最終演算結果を得るまでの演算サイク
ル数を示したものである。×の線が従来方式、・の線が
本発明による場合である。本図では演算段数4の場合前
仮定しているが、それ以外の演カ段数でも同様、本発明
によれば高速に処理できる。
第1図及び第2図は、従来方式により累算命令を実行す
る演算装置のブロック図及びその動作説明図、第6図及
び第4図は禾発明の一実施例である演算装置のブロック
図及びその動作説明図、第5図は従来方式と本発明によ
る方式との演算サイクル数を比較した図である。 1・・・演算制御部、2・・・ゝ0′発生器、3・・・
プリシフト回路、4・・・加算器、5・・・ポストシフ
ト回路、? Z 図
る演算装置のブロック図及びその動作説明図、第6図及
び第4図は禾発明の一実施例である演算装置のブロック
図及びその動作説明図、第5図は従来方式と本発明によ
る方式との演算サイクル数を比較した図である。 1・・・演算制御部、2・・・ゝ0′発生器、3・・・
プリシフト回路、4・・・加算器、5・・・ポストシフ
ト回路、? Z 図
Claims (1)
- 同一演算を連続的に行なう演算処理方式において、演算
されるデータのデータ数を検出する、手段と、当該検出
したデータ数に対応して後処理演算サイクル数を可変に
する手段とを備え、後処理演算サイクル数に応じて演算
ステージを制御するようにしたことを特徴とする演算処
理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP15811582A JPS5947643A (ja) | 1982-09-13 | 1982-09-13 | 演算処理方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP15811582A JPS5947643A (ja) | 1982-09-13 | 1982-09-13 | 演算処理方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS5947643A true JPS5947643A (ja) | 1984-03-17 |
| JPH0313624B2 JPH0313624B2 (ja) | 1991-02-22 |
Family
ID=15664626
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP15811582A Granted JPS5947643A (ja) | 1982-09-13 | 1982-09-13 | 演算処理方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS5947643A (ja) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61160175A (ja) * | 1984-12-31 | 1986-07-19 | Nec Corp | ベクトル総和演算装置 |
| JPS62196767A (ja) * | 1986-01-13 | 1987-08-31 | スター、テクノロジーズ、インコーポレーテッド | パイプライン構成の浮動小数点数アキユムレ−タ回路 |
| JPS63159244A (ja) * | 1986-12-23 | 1988-07-02 | 三菱マテリアル株式会社 | 二層の押出成形珪酸質―石灰質系成形品の製造方法 |
| US4933893A (en) * | 1988-01-13 | 1990-06-12 | Hitachi, Ltd. | Arithmetic processing method and apparatus for performing arithmetic or logical operations within a minimum number of operation cycles |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5166746A (ja) * | 1974-12-06 | 1976-06-09 | Fujitsu Ltd | Naisekienzanshorikairo |
| JPS5727360A (en) * | 1980-07-25 | 1982-02-13 | Fujitsu Ltd | Accumulation instruction processing system |
| JPS5730077A (en) * | 1980-07-31 | 1982-02-18 | Fujitsu Ltd | Accumulated instruction processing system |
-
1982
- 1982-09-13 JP JP15811582A patent/JPS5947643A/ja active Granted
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5166746A (ja) * | 1974-12-06 | 1976-06-09 | Fujitsu Ltd | Naisekienzanshorikairo |
| JPS5727360A (en) * | 1980-07-25 | 1982-02-13 | Fujitsu Ltd | Accumulation instruction processing system |
| JPS5730077A (en) * | 1980-07-31 | 1982-02-18 | Fujitsu Ltd | Accumulated instruction processing system |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61160175A (ja) * | 1984-12-31 | 1986-07-19 | Nec Corp | ベクトル総和演算装置 |
| JPS62196767A (ja) * | 1986-01-13 | 1987-08-31 | スター、テクノロジーズ、インコーポレーテッド | パイプライン構成の浮動小数点数アキユムレ−タ回路 |
| JPS63159244A (ja) * | 1986-12-23 | 1988-07-02 | 三菱マテリアル株式会社 | 二層の押出成形珪酸質―石灰質系成形品の製造方法 |
| US4933893A (en) * | 1988-01-13 | 1990-06-12 | Hitachi, Ltd. | Arithmetic processing method and apparatus for performing arithmetic or logical operations within a minimum number of operation cycles |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0313624B2 (ja) | 1991-02-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3345894B2 (ja) | 浮動小数点乗算器 | |
| JPS5947643A (ja) | 演算処理方式 | |
| JP3641012B2 (ja) | ビタービアルゴリズムの実施の方法及び装置 | |
| JPH07198799A (ja) | 高速化した試験パターン発生器 | |
| EP0328779A2 (en) | Apparatus for branch prediction for computer instructions | |
| JP2512778B2 (ja) | 演算処理方法 | |
| JP3620887B2 (ja) | データ処理装置 | |
| JPH01119861A (ja) | ディジタル信号処理用lsi | |
| JPS58217047A (ja) | 演算回路 | |
| JPS5856152A (ja) | プログラム変換装置 | |
| JPH0398163A (ja) | ベクトルデータ処理装置 | |
| JPS62160529A (ja) | デ−タ処理装置 | |
| JPH01129359A (ja) | 演算器とその駆動方法 | |
| JPH01271876A (ja) | 比較演算処理装置 | |
| JPS58129654A (ja) | 乗算方式 | |
| JPH03163662A (ja) | 浮動小数点累算器 | |
| JPS607575A (ja) | 固定小数点高速フ−リエ変換方式 | |
| JPS60193045A (ja) | パイプライン演算装置 | |
| JPH03271930A (ja) | 浮動小数点演算装置 | |
| JPS63168772A (ja) | 累算器 | |
| JPH01288967A (ja) | パイプライン信号処理回路 | |
| JPH04172267A (ja) | スキャンパス回路の最少遅延補償方式 | |
| HORIucHI | Notes on the mean value property for certain degenerate elliptic operators | |
| JPH04114234A (ja) | 浮動小数点加算器 | |
| JPH10111805A (ja) | 重心検出器 |