JP2000322235A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2000322235A
JP2000322235A JP11127340A JP12734099A JP2000322235A JP 2000322235 A JP2000322235 A JP 2000322235A JP 11127340 A JP11127340 A JP 11127340A JP 12734099 A JP12734099 A JP 12734099A JP 2000322235 A JP2000322235 A JP 2000322235A
Authority
JP
Japan
Prior art keywords
register
data
stored
subword
information processing
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
JP11127340A
Other languages
English (en)
Inventor
Yukihiko Mogi
幸彦 茂木
Kazuhiko Nishibori
一彦 西堀
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 JP11127340A priority Critical patent/JP2000322235A/ja
Priority to US09/564,279 priority patent/US6687724B1/en
Publication of JP2000322235A publication Critical patent/JP2000322235A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 サブワード単位で行った演算処理結果をサブ
ワード単位で出力し、実行サイクルを削減する。 【解決手段】 例えばパーソナルコンピュータのプロセ
ッサとして用いられる情報処理装置1は、SIMD型の
内積演算処理を行う内積演算ユニット3を有する。この
内積演算ユニット3による演算結果は、ワード形式でP
レジスタ15に格納される。シフト飽和ユニット16
は、ワード形式で格納された演算結果をPレジスタ15
から読み出し、任意のビット数シフト演算をした後任意
のビット数で飽和処理をして、その結果をサーブワード
としてYレジスタ17に格納する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、汎用プロセッサ、
組み込み用CPU(Central Processing Unit)、メデ
ィアプロセッサ、DSP(Digital Signal Processor)
等のデータ処理に用いる情報処理装置に関するものであ
る。
【0002】
【従来の技術】デジタル信号を処理するCPUやDSP
等のプロセッサでは、マルチメディアの普及に伴いデジ
タルフィルタの演算を行うことが多くなってきている。
デジタルフィルタの演算は、つまりは内積演算であるこ
とから、以下の演算式を用いて行われる。
【0003】
【数1】
【0004】この内積演算を効率よく行うため、CPU
やDSP等のプロセッサでは、最近では積和演算ユニッ
トが内蔵されている。積和演算ユニットが内蔵されたC
PUの構成を図34に示す。
【0005】図34に示すCPU100は、複数のデー
タを格納するレジスタファイル101と、データの積和
演算処理を行う積和演算ユニット(MAC:Multiple a
nd Accumulate)102と、データの左右シフトを処理
を行うシフトユニット(SHIFT)103と、データ
の算術演算や論理演算を行う算術論理演算ユニット(A
LU:Arithmetic Logical Unit)104とを有してい
る。このようなCPU100により、内積演算処理を行
う場合には、レジスタファイル101に格納されたデー
タをMAC102が積和演算を行い、この演算結果を再
度レジスタファイル101に格納する。そして、レジス
タファイル101に格納されたデータに対して、MAC
102が繰り返し積和演算を行って、内積演算結果を得
る。
【0006】また、ワークステーションやパーソナルコ
ンピュータ等に用いられるプロセッサでは、最近、画像
処理や音声処理を高速に行うため、サブワード単位でS
IMD(Single Instruction Multiple data stream)
型の処理が行われている。このSIMD型の処理は、レ
ジスタファイルに格納されている32ビットや64ビッ
ト等のワード長のデータを、所定のビット数の複数のデ
ータに分割して演算処理を行う。このワード長のデータ
を分割した各データのことを、サブワードと呼ぶ。
【0007】デジタルフィルタ演算すなわち内積演算
は、サブワード形式のデータとSIMD型の処理を行う
内積演算ユニットとを組み合わせることで、さらに高速
化を図ることができる。特に、デジタルフィルタ演算
は、画像処理や音声処理に対して用いられ、一連のデー
タに対して、連続して適用されることが多い。そのた
め、SIMD型の処理によりデジタルフィルタ演算を行
う場合には、演算対象となるソースデータとそのソース
データに乗算する係数データとが、それぞれサブワード
形式で、内積演算ユニットの入力レジスタに格納され
る。
【0008】一般的なSIMD型の内積演算処理を、図
35を用いて説明する。内積演算ユニットの入力レジス
タには、例えば、64ビットのソースデータと64ビッ
トの係数データとが、16ビットのサブワード単位で入
力される。第1の入力レジスタ111には、下位ビット
から、X0、X1、X2、X3の4つのサブワード(各16
ビット)が格納される。また、第2の入力レジスタ11
2には、下位ビットから、C0、C1、C2、C3の4つの
サブワード形式の係数データ(各16ビット)が格納さ
れる。内積演算ユニットは、この16ビットのサブワー
ド形式のソースデータと、それに対応する4つの16ビ
ットのサブワード形式の係数データとに対し、積和演算
命令(pmaddwd)に応じて積和演算処理を行い、その結
果を第1の中間レジスタ113に格納する。第1の中間
レジスタ113の上位32ビットのサブワードには積和
演算処理結果として“X2×C2+X3×C3”が格納さ
れ、第1の中間レジスタ113の下位32ビットのサブ
ワードには積和演算処理結果として“X0×C0+X1×
1”が格納される。次に、内積演算ユニットは、デー
タ転送命令(movq)に応じて、第1の中間レジスタ11
3の内容を、第2の中間レジスタ114にコピーする。
次に、内積演算ユニットは、シフト命令(psrlq)に応
じて、第1の中間レジスタ113のデータを、1サブワ
ード分すなわち32ビット分、右に論理シフトする(つ
まり、上位から下位へデータをシフトする。以下右シフ
トともいう。)。そして、内積演算ユニットは、加算命
令(paddd)に応じて、第1の中間レジスタ113及び
第2の中間レジスタ114の上位32ビット同士と下位
32ビット同士をそれぞれ加算し、出力レジスタ115
の上位及び下位32ビットに演算結果をそれぞれ格納す
る。
【0009】このような演算処理の結果、出力レジスタ
115の下位32ビットには、SIMD型の処理による
内積演算結果である“X0×C0+X1×C1+X2×C2
3×C3”が格納される。なお、出力レジスタの上位3
2ビットに格納されるデータは、内積演算処理とは関係
の無いデータである。
【0010】また、ワークステーションやパーソナルコ
ンピュータ等に用いられるプロセッサでは、一連の画像
や音声等のソースデータに対して、デジタルフィルタ演
算を連続して行う場合が多い。この場合、連続するデジ
タルフィルタ演算に対応するために、係数データを予め
1サブワードずつシフトさせて格納した複数の係数デー
タ用の入力レジスタと、1つのソースデータ用の入力レ
ジスタとを用意し、ビット位置がシフトした係数データ
を内積演算命令が起きる毎に各係数用レジスタから読み
出して、ビット位置が固定されたソースデータに対して
ビット値がずらされた係数データを乗算して、デジタル
フィルタ処理の高速化を実現したりしている。また、係
数データ用の入力レジスタと、2ワード分のデータが格
納できシフトレジスタ構造を有するソースデータ用の入
力レジスタとを用意し、内積演算命令が起きる毎に1サ
ブワード分シフトさせたソースデータを読み出して、ビ
ット位置が固定された係数データに対してビット位置が
ずらされたソースデータを乗算して、デジタルフィルタ
処理の高速化を実現したりしている。
【0011】以上内積演算処理について説明したが、加
算、減算等の一般のALUにより行う算術論理演算につ
いても、SIMD型の演算処理を行うことができる。
【0012】
【発明が解決しようとする課題】ところで、以上のよう
に演算処理をした場合、以下のような問題がある。
【0013】例えば、一連の演算処理を行った場合、そ
れぞれの出力結果が複数の中間レジスタ及び出力レジス
タに格納されるので、多くのレジスタが必要となってし
まう。
【0014】また、SIMD型の処理により演算を高速
に行っても、その結果がワード形式で出力され、入力レ
ジスタに格納したサブワード形式で出力されない。その
ため、連続してこのSIMD型の演算処理を行う場合、
その出力データに対してシフト処理やパッキング処理を
行ってワード形式のソースデータをサブワード形式のデ
ータに作り直さなければならなく、サイクル数が増加し
てしまう。さらに、そのプログラムコード数も増加し、
プログラムメモリのメモリサイズが大きくなってしま
う。
【0015】本発明は、このような実情を鑑みてなされ
たものであり、演算処理結果を任意のデータ長のサブワ
ードで出力し、実行サイクルを削減することができる情
報処理装置を提供することを目的とする。
【0016】
【課題を解決するための手段】本発明にかかる情報処理
装置は、演算結果をワード長で出力する演算回路と、上
記演算回路の演算結果を格納する中間レジスタと、上記
中間レジスタに格納されたデータを任意のビット数のシ
フト演算をするシフト演算回路と、上記シフト演算回路
によりシフト演算されたデータを任意のビット長に飽和
させる飽和回路と、上記飽和回路が飽和させたデータを
サブワードとして格納し、サブワードとして格納するデ
ータの入力に応じて、格納しているデータをサブワード
単位で上位ビットから下位ビットへ順次シフトしていく
出力レジスタとを備えることを特徴とする。
【0017】この情報処理装置では、ワード長で出力さ
れた演算結果をシフト演算した後飽和処理して、この飽
和処理した結果をサブワードとして出力レジスタに格納
する。すなわち、演算回路により演算された結果を、一
旦レジスタファイル等の外部バッファに書き込まずに、
続けてシフト演算及び飽和処理をする。
【0018】本発明にかかる情報処理装置は、ソースデ
ータをサブワード単位で分割して格納する入力レジスタ
と、係数データをサブワード単位で分割して格納する係
数レジスタと、上記入力レジスタに格納されたソースデ
ータと上記係数レジスタに格納された係数データに対し
て、サブワード単位でSIMD(Single InstructionMu
ltiple data stream)型の内積演算処理をし、演算結果
をワード長で出力する内積演算ユニットと、上記内積演
算ユニットの演算結果を格納する中間レジスタと、上記
中間レジスタに格納されたデータを任意のビット数のシ
フト演算をするシフト演算回路と、上記シフト演算回路
によりシフト演算されたデータを任意のビット長に飽和
させる飽和回路と、上記飽和回路が飽和させたデータを
サブワードとして格納し、サブワードとして格納するデ
ータの入力に応じて、格納しているデータをサブワード
単位で上位ビットから下位ビットへ順次シフトしていく
出力レジスタとを備えることを特徴とする。
【0019】この情報処理装置では、ワード長で出力さ
れた内積演算結果をシフト演算した後飽和処理して、こ
の飽和処理した結果をサブワードとして出力レジスタに
格納する。すなわち、内積演算ユニットにより演算され
た結果を、一旦レジスタファイル等の外部バッファに書
き込まずに、続けてシフト演算及び飽和処理をする。
【0020】
【発明の実施の形態】以下、本発明の実施の形態の情報
処理装置について、図面を参照しながら説明する。
【0021】本発明の実施の形態の情報処理装置は、例
えば、ワークステーションやパーソナルコンピュータ等
にプロセッサとして用いられる。
【0022】図1に示す情報処理装置1は、複数のデー
タをワード長(例えば64ビット)で格納するレジスタ
ファイル2と、データの内積演算処理を行う内積演算ユ
ニット(INPROD)3と、データの算術論理演算を
行う算術論理演算ユニット(ALU:Arithmetic Logic
al Unit)4と、レジスタファイル2に格納されたデー
タを各レジスタに転送する第1のデータ転送バス5と、
各レジスタに格納されたデータをレジスタファイル2に
転送する第2のデータ転送バス6と、各ユニットに与え
る命令を格納している命令メモリ(IMEM)7と、こ
の命令メモリ7内に格納された命令に基づき制御信号を
生成し各ユニットを制御する制御回路8とを有してい
る。
【0023】また、情報処理装置1は、内積演算ユニッ
ト3の入力レジスタとして、サブワード形式で分割した
ワード長の係数データを格納可能な係数レジスタ(Cレ
ジスタ)11と、サブワード形式で分割したワード長の
ソースデータを格納可能な上位入力レジスタ(XHレジ
スタ)12と、サブワード形式で分割したワード長のソ
ースデータを格納可能な下位入力レジスタ(XLレジス
タ)13とを有している。
【0024】また、情報処理装置1は、内積演算ユニッ
ト3の演算結果と出力されるデータ及びレジスタファイ
ル2から第1のデータ転送バス5を介して転送されたデ
ータと切り換えるマルチプレクサ14と、このマルチプ
レクサ14により切り換えられたデータをワード長で格
納する中間レジスタ(Pレジスタ)15とを有してい
る。
【0025】また、情報処理装置1は、Pレジスタ15
に格納されたワード長のデータに対してシフト演算及び
飽和演算をしてサブワード単位のデータに変換するシフ
ト飽和ユニット(SHIFT・CLIP)16と、シフ
ト飽和ユニット16により演算されたデータを格納する
出力レジスタ(Yレジスタ)17とを有している。
【0026】また、情報処理装置1は、ALU4の入力
レジスタとして、サブワード形式で分割したワード長の
ソースデータを格納可能な第1の入力レジスタ(S0レ
ジスタ)18と、サブワード形式で分割したワード長の
ソースデータを格納可能な第2の入力レジスタ(S1レ
ジスタ)19とを有し、ALU4の出力レジスタとし
て、出力レジスタ(Dレジスタ)20を有している。
【0027】レジスタファイル2は、外部メモリから転
送されたデータや、この情報処理装置1により処理を行
ったデータ等を、ワード長(例えば64ビット)で格納
する。このレジスタファイル2は、R0からRnのアド
レスを有し、このアドレスに対応した複数のデータを格
納している。レジスタファイル2は、バッファ書き込み
ステージで、Pレジスタ15、Yレジスタ17、Dレジ
スタ20に格納されたデータが、第2のデータ転送バス
6を介して書き込まれる。また、レジスタファイル2
は、レジスタフェッチステージで、格納したデータが読
み出される。レジスタファイル2から読み出されたデー
タは、第1のデータ転送バス5を介して、Cレジスタ1
1、XHレジスタ12、XLレジスタ13、S0レジス
タ18、S1レジスタ19に格納される。
【0028】内積演算ユニット3は、実行ステージで、
Cレジスタ11に格納された係数データと、XLレジス
タ13に格納されたソースデータとの内積演算処理を行
う。この内積演算ユニット3は、処理命令に応じて、S
IMD型の内積演算処理及び通常のワード長単位の内積
演算処理を行う。
【0029】ALU4は、実行ステージで、その命令に
応じて、S0レジスタ18及びS1レジスタ19に格納
されたソースデータに対して、加算、減算等の各種算術
論理演算を行う。ALU4は、命令に応じて、SIMD
型の演算処理及び通常のワード長単位の演算処理を行
う。
【0030】ワード長のCレジスタ11には、サブワー
ド単位で分割された係数データが格納される。例えば、
64ビットのワード長のCレジスタ11には、図2に示
すように、、下位から、8ビット単位(バイト単位)の
サブワードC0、C1、C2、C3、C4、C5、C
6、C7として分割されて格納される。このCレジスタ
11に格納された係数データは、内積演算ユニット3に
より読み出され、XLレジスタ13に格納されたソース
データと内積演算処理がされる。
【0031】ワード長のXHレジスタ12及びXLレジ
スタ13には、サブワード単位で分割されたソースデー
タが格納される。例えば、64ビットのワード長のXH
レジスタ12には、図3(A)に示すように、下位か
ら、8ビット単位(バイト単位)のサブワードXH0、
XH1、XH2、XH3、XH4、XH5、XH6、X
H7として分割されたソースデータが格納される。ま
た、64ビットのワード長のXLレジスタ13には、図
3(A)に示すように、下位から、8ビット単位(バイ
ト単位)のサブワードXL0、XH1、XL2、XL
3、XL4、XL5、XL6、XL7として分割された
ソースデータが格納される。
【0032】また、このXHレジスタ12及びXLレジ
スタ13は、サブワード単位でのシフトレジスタ構造を
有しており、内積演算ユニット3のSIMD型の1つの
内積演算毎に、格納しているソースデータを右シフト
(上位から下位へシフト)する。また、このXHレジス
タ12及びXLレジスタ13は、XHレジスタ12の最
下位ビットとXLレジスタ13の最上位ビットとが接続
されており、ソースデータをサブワード単位で右シフト
した場合、XHレジスタ12の最下位位置のソースデー
タが、XLレジスタ13の最上位位置に格納される。具
体的には、図3(A)の状態から1サブワード分上位か
ら下位へシフトさせると、図3(B)に示すように、X
Hレジスタ12の最上位位置には0が格納され、XLレ
ジスタ13の最上位位置には、XHレジスタ12の最下
位位置に格納されていたサブワードXH0が格納され
る。また、図3(B)の状態からさらに1サブワード分
上位から下位へシフトさせると、図3(C)に示すよう
に、XHレジスタ12の最上位位置には0が格納され、
XLレジスタ13の最上位位置には、XHレジスタ12
の最下位位置に格納されていたサブワードXH1が格納
される。
【0033】このようなXHレジスタ12及びXLレジ
スタ13に格納されたソースデータは、SIMD型の内
積演算処理がされる場合にはサブワード単位で読み出さ
れる。具体的に、係数レジスタ11、XHレジスタ1
2、XLレジスタ13、及び、内積演算ユニット3の関
係は、図4に示すようになる。ここで、この図4には、
ワード長のデータが転送される経路を太線で示し、サブ
ワード長のデータが転送される経路を細線で示してい
る。なお、一回だけのSIMD型の内積演算処理がされ
る場合には下位に位置するXLレジスタ13からのみサ
ブワード単位で読み出される。
【0034】このようなXHレジスタ12及びXLレジ
スタ13並びにCレジスタ11を入力レジスタとして設
けた内積演算ユニット3は、サブワードのバイト数に応
じて、所定のタップ数のデジタルフィルタ演算を実現で
きる。例えば、係数データとソースデータのサブワード
のサイズがともに1バイトのときは8タップのフィルタ
演算をすることができ、係数データ又はソースデータの
どちらかのサブワードのサイズが2バイトのときは4タ
ップのフィルタ演算をすることができ、係数データ又は
ソースデータのどちらかのサブワードのサイズが4バイ
トのときは2タップのフィルタ演算をすることができ
る。また、これ以上のタップ数のフィルタ演算を行いた
い場合には、Cレジスタ11とXHレジスタ12及びX
Lレジスタ13をそれぞれもう64ビットずつ増やすこ
とにより、1バイトのときには16タップのフィルタ演
算をすることができ、2バイトのときには8タップのフ
ィルタ演算をすることができ、4バイトのときには4タ
ップのフィルタ演算をすることができ、8バイトのとき
には2タップのフィルタ演算をすることができる。
【0035】Pレジスタ15には、内積演算ユニット3
の演算結果のデータ或いはシフト演算の為にレジスタフ
ァイル2から転送されたデータが、マルチプレクサ14
を介して転送される。Pレジスタ15は、このデータを
ワード単位で格納する。Pレジスタ15に格納されたデ
ータは、直接レジスタファイル2に転送されるか、或い
は、シフト飽和ユニット16により読み出される。
【0036】シフト飽和ユニット16は、Pレジスタ1
5に格納されているワード長のデータを読み出して、こ
の読み出したデータに対して任意のビット数のシフト演
算処理を行い、その後、任意のビット数のビット長のデ
ータに飽和処理を行う。
【0037】Yレジスタ17は、シフト飽和ユニット1
6の出力を格納するワード長のレジスタであり、シフト
レジスト構造を有している。具体的に、このYレジスタ
17は、図5に示すような、サブワード長のデータを格
納するサブレジスタY7〜Y0が直列に接続された構成
となる。なお、この図5には、ワード長でデータが転送
される経路を太線で示し、サブワード長でデータが転送
される経路を細線で示している。
【0038】上記シフト飽和ユニット16及びYレジス
タ17の処理ついて図6〜図8を用いてさらに詳細に説
明する。
【0039】まず、Pレジスタ15にあるワード長のデ
ータが格納されているとする。例えば、Pレジスタ15
には、図4(A)に示すように、下位から8ビット毎に
P0、P1、P2、P3、P4、P5、P6、P7と続
く64ビットのワード長のデータが格納されているとす
る。このPレジスタ15に格納されているデータは、サ
ブワードに分割されていない(なお、図6〜図8には、
便宜上8ビット毎のデータ単位に区切った形でPレジス
タ15のデータ内容を示している。)。続いて、シフト
飽和ユニット16は、このPレジスタ15に格納されて
いるワード長のデータを読み出し、所定のビット数のシ
フト演算を行う。例えば、シフト飽和ユニット16は、
図6(B)に示すように、0ビット分右シフト演算を行
う。0ビット分の右シフト演算(すなわち、全くシフト
をさせない演算)を行うと、下位から8ビット毎にP
0、P1、P2、P3、P4、P5、P6、P7と続く
64ビットのデータとなる。続いて、シフト飽和ユニッ
ト16は、右シフト演算をした後のデータに対して、所
定ビット数で飽和処理を行う。例えば、シフト飽和ユニ
ット16は、図6(C)に示すように、8ビット長で飽
和処理を行う。この飽和処理を行うと、そのビット数よ
り上位のデータが飽和され、8ビットのデータであるP
0のみとなる。続いて、シフト飽和ユニット16は、こ
の飽和処理をした任意のビット長のデータを、Yレジス
タ17に格納する。例えば、シフト飽和ユニット16
は、8ビット長のP0のデータを、Yレジスタ17に格
納する。Yレジスタ17は、シフトレジスト構造を有し
ているため、転送されたデータを最上位ビットから順に
格納し、すでに格納しているデータを下位ビットへシフ
トしていく。例えば、Yレジスタ17には、図6(D)
に示すように、8ビットのP0のデータが最上位位置に
格納される。
【0040】また、このYレジスタ17の最上位位置に
8ビットのP0のデータが格納されている状態から処理
を続行すると以下のようになる。
【0041】例えば、Pレジスタ15には、前述と同
様、図7(A)に示すように、下位から8ビット毎にP
0、P1、P2、P3、P4、P5、P6、P7と続く
64ビットのワード長のデータが格納されている。続い
て、例えば、シフト飽和ユニット16は、図7(B)に
示すように、8ビット分右シフト演算を行う。8ビット
分の右シフト演算を行うと、下位から8ビット毎にP
1、P2、P3、P4、P5、P6、P7、※と続く6
4ビットのデータとなる。なお、この※は、P7の符号
(正のときは“0x00”、負のときは“0xFF”)
を示すものである。続いて、例えば、シフト飽和ユニッ
ト16は、図7(C)に示すように、8ビット長で飽和
処理を行う。この飽和処理を行うと、8ビットのデータ
であるP1のみとなる。続いて、シフト飽和ユニット1
6は、8ビット長のP1のデータを、Yレジスタ17に
格納する。Yレジスタ17には、例えば、図7(D)に
示すように、8ビットのP1のデータが最上位位置に格
納され、すでに格納している8ビットのP0が8ビット
分右シフトする。
【0042】また、このYレジスタ17の最上位に8ビ
ットのP1のデータが格納され、その下位に8ビットの
P0が格納されている状態から処理を続行すると以下の
ようになる。
【0043】例えば、Pレジスタ15には、前述と同
様、図8(A)に示すように、下位から8ビット毎にP
0、P1、P2、P3、P4、P5、P6、P7と続く
64ビットのワード長のデータが格納されている。続い
て、例えば、シフト飽和ユニット16は、図8(B)に
示すように、56ビット分右シフト演算を行う。56ビ
ット分の右シフト演算を行うと、下位から8ビット毎に
P7、※、※、※、※、※、※、※と続く64ビットの
データとなる(※は、P7の符号。)。続いて、例え
ば、シフト飽和ユニット16は、図8(C)に示すよう
に、8ビット長で飽和処理を行う。この飽和処理を行う
と、8ビットのデータであるP7のみとなる。続いて、
シフト飽和ユニット16は、8ビット長のP7のデータ
を、Yレジスタ17に格納する。Yレジスタ17には、
例えば、図8(D)に示すように、8ビットのP7のデ
ータがYレジスタ17の最上位位置に格納され、すでに
格納している8ビットのP1及びP0が、それぞれ8ビ
ット分右シフトする。
【0044】シフト飽和ユニット16は、以上のような
処理を行い、ワード長で出力されたデータを、シフト演
算及び飽和処理をして、サブワード長でYレジスタ17
に格納することができる。例えば、8ビット単位で、シ
フト演算及び飽和演算を繰り返すことにより、複数の8
ビットのサブワードを生成することができる。なお、シ
フト演算によるシフト量及び飽和演算のビット長は、制
御回路8によりコントロールされ、これらシフト量及び
ビット長を制御することにより、分割するサブワード単
位を8ビットに限らず任意のビット数とすることができ
る。
【0045】また、シフト飽和ユニット16によるこの
ワード長のデータをサブワードを分割する処理は、内積
演算ユニット3の出力データに対して行うのみでなく、
レジスタファイル2からPレジスタ15へのデータパス
が存在することから、レジスタファイル2のデータに対
して行うこともできる。また、もちろん、ALU4やそ
の他図示しないMAC等の演算処理回路からPレジスタ
15へのデータパスを設けることで、それらの出力に対
してもワード長のデータをサブワードを分割する処理を
行うことができる。
【0046】つぎに、以上のような構成の情報処理装置
1に用いられる実行命令の一例と、その実行命令にとも
なう各構成要素の動作について説明する。
【0047】情報処理装置1は、例えば、図9に示すよ
うに、命令フェッチ(IF)、レジスタフェッチ(R
F)、第1の実行ステージ(EXA)、第2の実行ステ
ージ(EXB)、バッファ書き込み(WB)の5段パイ
プラインで動作するための制御回路8を有しており、こ
の制御回路8は命令メモリ7に格納されている命令に基
づき制御信号を、各回路に対して出力する。
【0048】具体的な命令として、例えば、以下のよう
な5つの命令セットが用いられる。
【0049】・Cレジスタ11に係数データをロードす
るのみの命令(SET.C) ・Cレジスタ11に係数データをロードするとともに、
Yレジスタ17をゼロに初期化する命令(SET.C
R) ・内積演算とシフト操作を行う命令(INPROD) ・ソースデータをXHレジスタ12及びXLレジスタ1
3にロードし、内積演算を行う命令(INPROD.
L) ・XHレジスタ12及びXLレジスタ13を1サブワー
ド分右シフトし、内積演算を行う命令(INPROD.
S) SET.Cは、図10に示すような処理を行う命令であ
る。すなわち、SET.Cでは、命令をフェッチすると
ともにデコードする(IF)。続いて、係数データをレ
ジスタファイル2からCレジスタ11にロードする(R
F)。なお、SET.Cでは、EXA、EXB、WBの
処理を行わない(NOP)。このSET.Cは、例え
ば、画像の端点部分の処理を行うときに用いられ、出力
レジスタであるYレジスタ17を初期化せずに係数デー
タのみを入れ替えて処理を行う命令である。
【0050】SET.CRは、図11に示すような処理
を行う命令である。すなわち、SET.CRでは、命令
をフェッチするとともにデコードする(IF)。続い
て、係数データをレジスタファイル2からCレジスタ1
1にロードする(IF)。続いて、Yレジスタ17に0
を格納して初期化する(EXA)。なお、このSET.
CRでは、EXB、WBの処理を行わない(NOP)。
このSET.CRは、画像や音声の内積演算を行う場合
における初期命令である。
【0051】INPRODは、図12に示すような処理
を行う命令である。すなわち、INPRODでは、命令
をフェッチするとともにデコードする(IF)。続い
て、ソースデータをレジスタファイル2からXLレジス
タ13にロードする(RF)。続いて、内積演算ユニッ
ト3が、XLレジスタ13に格納されたソースデータと
Cレジスタ11に格納された係数データとの内積演算を
サブワード単位で行い、すなわち、SIMD型の内積演
算を行い、その内積演算の結果をワード長でPレジスタ
15に格納する(EXA)。続いて、シフト飽和ユニッ
ト16が、Pレジスタ15に格納されたワード長の内積
演算結果のデータを、制御回路からの制御命令に応じた
ビット数だけシフトする演算をし、この演算結果に対し
て制御回路からの制御命令に応じたビット数で飽和演算
を行い、さらに結果をワード長のままYレジスタ17に
書き込む(EXB)。続いて、Yレジスタ17に格納さ
れたデータを、レジスタファイル2に書き込む(W
B)。このINPRODは、内積演算を行った結果をワ
ード長のまま、Yレジスタ17に書き込む処理を行う命
令である。
【0052】INPROD.Lは、図13に示すような
処理を行う命令である。すなわち、INPROD.Lで
は、命令をフェッチするとともにデコードする(I
F)。続いて、2つのソースデータをレジスタファイル
2からXHレジスタ12及びXLレジスタ13にそれぞ
れロードする(RF)。続いて、内積演算ユニット3
が、XLレジスタ13に格納されたソースデータとCレ
ジスタ11に格納された係数データとの内積演算をサブ
ワード単位で行い、すなわち、SIMD型の内積演算を
行い、その内積演算の結果をワード長でPレジスタ15
に格納する(EXA)。続いて、シフト飽和ユニット1
6が、Pレジスタ15に格納されたワード長の内積演算
結果のデータを、制御回路からの制御命令に応じたビッ
ト数だけシフトする演算をし、この演算結果に対して制
御回路からの制御命令に応じたビット数で飽和演算を行
い、さらにその結果をサブワード形式でYレジスタ17
の最上位位置に書き込む。そして、このとき、Yレジス
タ17は、既に格納されているデータをサブワード単位
で右シフトする(EXB)。続いて、Yレジスタ17に
格納されたデータを、レジスタファイル2に書き込む
(WB)。このINPROD.Lは、ソースデータをロ
ードするとともに内積演算を行った結果をサブワード単
位でYレジスタ17に書き込む処理を行う命令である。
【0053】INPROD.Sは、図14に示すような
処理を行う命令である。すなわち、INPROD.Sで
は、命令をフェッチするとともにデコードする(I
F)。続いて、XHレジスタ12及びXLレジスタ13
に格納されている2つのソースデータをサブワード単位
で右シフトする。このとき、XHレジスタ12の最上位
には0が格納され、XLレジスタ13の最上位位置には
XHレジスタ12の最下位位置のサブワードがシフトさ
れる(RF)。続いて、内積演算ユニット3が、XLレ
ジスタ13に格納されたソースデータとCレジスタ11
に格納された係数データとの内積演算をサブワード単位
で行い、すなわち、SIMD型の内積演算を行い、その
内積演算の結果をワード長でPレジスタ15に格納する
(EXA)。続いて、シフト飽和ユニット16が、Pレ
ジスタ15に格納されたワード長の内積演算結果のデー
タを、制御回路からの制御命令に応じたビット数だけシ
フトする演算をし、その演算結果に対して制御回路から
の制御命令に応じたビット数で飽和演算を行い、さらに
その結果をサブワード形式でYレジスタ17の最上位位
置に書き込む。そして、このとき、Yレジスタ17は、
既に格納されているデータをサブワード単位で右シフト
する。(EXB)。続いて、Yレジスタ17に格納され
たデータを、レジスタファイル2に書き込む(WB)。
このINPROD.Sは、ソースデータをシフトさせる
とともに内積演算を行った結果をサブワード単位でYレ
ジスタ17に書き込む処理を行う命令であり、XHレジ
スタ12及びXLレジスタ13にソースデータをロード
した以後に、このロードしたソースデータを用いて繰り
返し内積演算を行う場合に用いる命令である。
【0054】なお、以上の命令において、Pレジスタ1
5に格納されたデータをシフトするデータサイズや、飽
和処理を行うデータサイズ、すなわち、サブワードとし
てYレジスタ17に書き込むデータサイズは、各入力レ
ジスタに格納されたソースデータのサブワードのサイズ
に関係なく、制御回路によって任意に設定することがで
きる。
【0055】例えば、Cレジスタ11、XHレジスタ1
2及びXLレジスタ13に、8ビットのサブワード形式
で、係数データ及びソースデータが格納され、内積演算
結果が64ビットのワード形式でPレジスタ15に格納
されるとする。
【0056】このとき、8ビットのデータ単位をサブワ
ード形式で出力するには、Pレジスタ15に格納されて
いるデータをシフト演算した後飽和処理を行って、下位
8ビットのデータを取り出す。そして、Yレジスタ17
に格納されたデータを8ビット分右シフトして、飽和処
理をして得られた8ビットのデータを最上位位置にサブ
ワードとして格納する。
【0057】また、このとき、16ビットのデータ単位
をサブワード形式で出力するには、Pレジスタ15に格
納されているデータをシフト演算した後飽和処理を行っ
て、下位16ビットのデータを取り出す。そして、Yレ
ジスタ17に格納されたデータを16ビット分右シフト
して、飽和処理をして得られた16ビットのデータを最
上位位置にサブワードとして格納する。
【0058】また、このとき、32ビットのデータ単位
をサブワード形式で出力するには、Pレジスタ15に格
納されているデータをシフト演算した後飽和処理を行っ
て、下位32ビットのデータを取り出す。そして、Yレ
ジスタ17に格納されたデータを32ビット分右シフト
して、飽和処理をして得られた32ビットのデータを最
上位位置にサブワードとして格納する。
【0059】つぎに、以上の各命令を用いて8回の内積
演算を繰り返す処理を行う情報処理装置1のシーケンス
例について説明する。
【0060】図15に、この8回の内積演算を行う場合
におけるプログラムシーケンス及び各サイクルにおける
実行内容を示す。また、図16〜図24に、1サブワー
ドのデータサイズが8ビットであるとした場合の各命令
セット実行時におけるXHレジスタ12、XLレジスタ
13及びYレジスタ17のデータの格納状態を示す。
【0061】まず、1サイクル目からSET.Cが実行
される。このSET.Cにより、Cレジスタ11に係数
データが格納される。このとき、XHレジスタ12及び
XLレジスタ13には、図16に示すように、前の処理
で用いたデータ或いは0が格納されているものとする。
また、Yレジスタ17には、全て0が格納されているも
のとする。この1サイクル目から実行されたSET.C
は、5サイクル目で処理が終了する。
【0062】続いて、2サイクル目からINPROD.
Lが実行される。このINPROD.Lにより、XHレ
ジスタ12及びXLレジスタ13にソースデータが格納
され、XLレジスタ13に格納されているソースデータ
に基づく内積演算結果がYレジスタ17に格納される。
このときのXHレジスタ12及びXLレジスタ13に
は、図17に示すように、XLレジスタ13の最下位か
らXHレジスタ12の最上位の方向へ、8ビット単位の
データであるX0〜X15が格納される。また、Yレジ
スタ17には、XLレジスタ13に格納されたX0〜X
7を用いて内積演算した結果であるYbが最上位に格納
され、すでに格納されているデータは8ビット右にシフ
トされる。この2サイクル目から実行されたINPRO
D.Lは、6サイクル目で処理が終了する。
【0063】続いて、3サイクル目からINPROD.
Sが実行される。このINPROD.Sにより、XHレ
ジスタ12及びXLレジスタ13に格納されたソースデ
ータが1サブワード分右シフトされ、XLレジスタ13
に格納されているソースデータに基づく内積演算結果が
Yレジスタ17に格納される。このときのXHレジスタ
12及びXLレジスタ13には、図18に示すように、
XLレジスタ13の最下位からXHレジスタ12の最上
位の方向へ、8ビット単位のデータであるX1〜X15
が格納され、XHレジスタ12の最上位から8ビットに
0が格納される。また、Yレジスタ17には、XLレジ
スタ13に格納されたX1〜X8を用いて内積演算した
結果であるYcが最上位に格納され、すでに格納されて
いるデータは8ビット右にシフトされる。この3サイク
ル目から実行されたINPROD.Sは、7サイクル目
で処理が終了する。
【0064】続いて、4サイクル目からINPROD.
Sが実行される。このときのXHレジスタ12及びXL
レジスタ13には、図19に示すように、XLレジスタ
13の最下位からXHレジスタ12の最上位の方向へ、
8ビット単位のデータであるX2〜X15が格納され、
XHレジスタ12の最上位から16ビットに0が格納さ
れる。また、Yレジスタ17には、XLレジスタ13に
格納されたX2〜X9を用いて内積演算した結果である
Ydが最上位に格納され、すでに格納されているデータ
は8ビット右にシフトされる。この4サイクル目から実
行されたINPROD.Sは、8サイクル目で処理が終
了する。
【0065】続いて、5サイクル目からINPROD.
Sが実行される。このときのXHレジスタ12及びXL
レジスタ13には、図20に示すように、XLレジスタ
13の最下位からXHレジスタ12の最上位の方向へ、
8ビット単位のデータであるX3〜X15が格納され、
XHレジスタ12の最上位から24ビットに0が格納さ
れる。また、Yレジスタ17には、XLレジスタ13に
格納されたX3〜X10を用いて内積演算した結果であ
るYeが最上位に格納され、すでに格納されているデー
タは8ビット右にシフトされる。この5サイクル目から
実行されたINPROD.Sは、9サイクル目で処理が
終了する。
【0066】続いて、6サイクル目からINPROD.
Sが実行される。このときのXHレジスタ12及びXL
レジスタ13には、図21に示すように、XLレジスタ
13の最下位からXHレジスタ12の最上位の方向へ、
8ビット単位のデータであるX4〜X15が格納され、
XHレジスタ12の最上位位置から32ビットに0が格
納される。また、Yレジスタ17には、XLレジスタ1
3に格納されたX4〜X11を用いて内積演算した結果
であるYfが最上位に格納され、すでに格納されている
データは8ビット右にシフトされる。この6サイクル目
から実行されたINPROD.Sは、10サイクル目で
処理が終了する。
【0067】続いて、7サイクル目からINPROD.
Sが実行される。このときのXHレジスタ12及びXL
レジスタ13には、図22に示すように、XLレジスタ
13の最下位からXHレジスタ12の最上位の方向へ、
8ビット単位のデータであるX5〜X15が格納され、
XHレジスタ12の最上位位置から40ビットに0が格
納される。また、Yレジスタ17には、XLレジスタ1
3に格納されたX5〜X12を用いて内積演算した結果
であるYgが最上位に格納され、すでに格納されている
データは8ビット右にシフトされる。この7サイクル目
から実行されたINPROD.Sは、11サイクル目で
処理が終了する。
【0068】続いて、8サイクル目からINPROD.
Sが実行される。このときのXHレジスタ12及びXL
レジスタ13には、図23に示すように、XLレジスタ
13の最下位からXHレジスタ12の最上位の方向へ、
8ビット単位のデータであるX6〜X15が格納され、
XHレジスタ12の最上位位置から48ビットに0が格
納される。また、Yレジスタ17には、XLレジスタ1
3に格納されたX6〜X13を用いて内積演算した結果
であるYhが最上位に格納され、すでに格納されている
データは8ビット右にシフトされる。この8サイクル目
から実行されたINPROD.Sは、12サイクル目で
処理が終了する。
【0069】続いて、9サイクル目からINPROD.
Sが実行される。このときのXHレジスタ12及びXL
レジスタ13には、図24に示すように、XLレジスタ
13の最下位からXHレジスタ12の最上位の方向へ、
8ビット単位のデータであるX7〜X15が格納され、
XHレジスタ12の最上位から56ビットに0が格納さ
れる。また、Yレジスタ17には、XLレジスタ13に
格納されたX7〜X14を用いて内積演算した結果であ
るYiが最上位に格納され、すでに格納されているデー
タは8ビット右にシフトされる。この9サイクル目から
実行されたINPROD.Sは、13サイクル目で処理
が終了する。
【0070】以上のように、各命令を用いて処理を行う
ことによって、8回の内積演算を繰り返すことができ
る。これら各命令を用いることにより、この情報処理装
置1では、8回の内積演算処理を理想的には13サイク
ルで行うことができる。
【0071】なお、ここで示したシーケンス例は、I
F、RF、EXA、EXB、WBの各ステージの処理処
理が全て1サイクルで終了することを前提に示してい
る。しかしながら、EXAの処理は、他のステージの処
理処理よりも重いため、1サイクルで処理が終了しない
場合がある。この場合、このEXAの処理にLサイクル
かかるとすると、ここで示したシーケンスでは、11サ
イクル目に処理がされるEXAの処理時間分だけ増加
し、トータルサイクル数が12+Lとなる。
【0072】以上のように本発明の実施の形態の情報処
理装置1では、内積演算ユニット3からワード長で出力
された内積演算結果を、シフト飽和ユニット16により
シフト演算した後飽和処理して、この飽和処理した結果
をサブワードとしてYレジスタ17に格納する。このこ
とにより、この情報処理装置1では、内積演算処理の後
に直接レジスタファイル2にサブワード形式のデータを
格納することができる。そのため、この情報処理装置1
では、レジスタファイル2に格納した後に再度サブワー
ド形式に変換する処理を行わなくて良く、レジスタファ
イル2を節約することができ、また、実行サイクルを削
減することができる。
【0073】つぎに、上記本発明の実施の形態の情報処
理装置1の変形例について説明する。なお、各変形例を
説明するにあたり、上記情報処理装置1と同一の構成要
素については同一の符号を付け、その詳細な説明は省略
する。
【0074】まず、第1の変形例の情報処理装置30
は、図25に示すように、上述した情報処理装置1のシ
フト飽和ユニット16とYレジスタ17との間に、マル
チプレクサ31が設けられた構成となっている。このマ
ルチプレクサ31は、シフト飽和ユニット16から出力
されたサブワード単位のデータを、Yレジスタ17の任
意の位置に格納する。例えば、このマルチプレクサ31
は、この図25に示すように、サブワード長のデータを
分配する8個のサブマルチプレクサから構成される。各
サブマルチプレクサには、シフト飽和ユニット16によ
り処理がされたサブワード長のデータと、Yレジスタ1
7のサブレジスタ(Y0〜Y7)から転送されたサブワ
ード長のデータとが入力され、これらのデータを対応す
るYレジスタ17のサブレジスタに格納する。なお、Y
レジスタの各サブレジスタ(Y0〜Y7)からデータパ
スは、全てのサブマルチプレクサと接続されている(図
25中には、便宜的に1本のデータパスしか記載してい
ない。)。このため、Yレジスタ17に一旦格納された
サブワード長のデータを、このYレジスタ17の任意の
位置に書き戻すことができる。このことにより、情報処
理装置30では、情報処理装置1と同様の処理を行うこ
とができることに加え、内積演算ユニット3による演算
の順序によらず、Yレジスタ17の任意の位置にサブワ
ードのデータを格納でき、演算結果を容易に並べ替えで
きる。
【0075】続いて、第2の変形例の情報処理装置35
は、図26に示すように、上述した情報処理装置1のY
レジスタ17からS0レジスタ18及びS1レジスタ1
9へのデータ転送パス41が設けられた構成となってい
る。この情報処理装置35では、このデータ転送パス3
6が設けられることにより、Yレジスタ17からS0レ
ジスタ18又はS1レジスタ19へデータの転送を、レ
ジスタファイル2を介さずに行うことができる。そのた
め、情報処理装置35では、Yレジスタ17に格納され
たサブワード形式又はワード形式の演算結果を、連続し
てALUで演算することが可能となり、情報処理装置1
と同様の処理を行うことができることに加え、実行サイ
クルを減らすことができる。
【0076】続いて、第3の変形例の情報処理装置40
は、図27に示すように、上述した情報処理装置1のマ
ルチプレクサ14に代えて、内積演算ユニット3からの
出力データ、第1のデータ転送バス5を介して転送され
るデータ、又は、ALU4からの出力データを切り換え
るマルチプレクサ41が設けられ、Dレジスタ20が設
けられていない構成となっている。この情報処理装置4
0では、ALU4の演算結果をPレジスタ15に格納す
ることにより、上述した内積演算ユニット3の演算結果
をサブワード形式のデータにする処理を、ALU4の演
算結果に対しても適用することができる。そのため、こ
の情報処理装置40では、内積演算の演算結果のみでは
なく、ワード形式で出力されるあらゆる演算結果を直接
サブワード形式に変換してレジスタファイル2に格納す
ることができる。
【0077】続いて、第4の変形例の情報処理装置45
は、図28に示すように、上述した情報処理装置1のマ
ルチプレクサ14に代えて、内積演算ユニット3からの
出力データ、第1のデータ転送バス5を介して転送され
るデータ、又は、ALU4からの出力データを切り換え
るマルチプレクサ41が設けられるとともに、シフト飽
和ユニット16とYレジスタ17との間に、マルチプレ
クサ31が設けられた構成となっている。すなわち、第
3の変形例の情報処理装置40に、第1の変形例の情報
処理装置30のマルチプレクサ31が設けられた構成と
なっている。そのため、この情報処理装置45では、内
積演算の演算結果のみではなく、ワード形式で出力され
るあらゆる演算結果を直接サブワード形式に変換してレ
ジスタファイル2に格納することができとともに、Yレ
ジスタ17の任意の位置にサブワードのデータを格納で
き、演算結果を容易に並べ替えできる。
【0078】続いて、第5の変形例の情報処理装置50
は、図29に示すように、上述した情報処理装置1のマ
ルチプレクサ14に代えて、内積演算ユニット3からの
出力データ、第1のデータ転送バス5を介して転送され
るデータ、又は、ALU4からの出力データを切り換え
るマルチプレクサ41が設けられるとともに、Yレジス
タ17からS0レジスタ18及びS1レジスタ19への
データ転送パス36が設けられた構成となっている。す
なわち、第3の変形例の情報処理装置40に、第2の変
形例の情報処理装置35のデータ転送パス36が設けら
れた構成となっている。そのため、この情報処理装置4
5では、内積演算の演算結果のみではなく、ワード形式
で出力されるあらゆる演算結果を直接サブワード形式に
変換してレジスタファイル2に格納することができとと
もに、Yレジスタ17に格納されたサブワード形式又は
ワード形式の演算結果を、連続してALUで演算するこ
とが可能となり実行サイクルを減らすことができる。
【0079】続いて、第6の変形例の情報処理装置55
は、図30に示すように、上述した情報処理装置1のP
レジスタ15に代えて、マルチプレクサ14から入力さ
れたワード長のデータを分割して、サブワード長のデー
タとして格納する中間レジスタ56が設けられた構成と
なっている。この中間レジスタ56は、格納したサブワ
ード長のデータを、このサブワード単位でシフトレジス
トするシフトレジスト構造を有している。例えば、この
中間レジスタ56は、図30に示すように、マルチプレ
クサ14から入力された64ビットのワード長のデータ
が、8ビットのサブワード長のデータに分割されて、サ
ブレジスタP0〜P7に入力される。
【0080】また、サブワードとしてデータを整列する
場合には、この中間レジスタ56に、マルチプレクサ1
4の出力を1サブワード分だけ最上位のサブレジスタP
7に入力する。次に、この中間レジスタ56のデータを
1サブワード分右シフトしてマルチプレクサ14の出力
を1サブワード分P7に入力する。これを繰り返すこと
により、データを整列させることができ、上述したYレ
ジスタ17から出力されるデータと同様のデータをこの
中間レジスタ56から出力することができる。
【0081】このことにより、この情報処理装置55で
は、この中間レジスタ56のデータをバス6を介してレ
ジスタファイル2に転送することにより、内積演算処理
の後に直接レジスタファイル2にサブワード形式のデー
タを格納することができる。そのため、この情報処理装
置55では、レジスタファイル2に格納した後に再度サ
ブワード形式に変換する処理を行わなくて良く、レジス
タファイル2を節約することができ、また、実行サイク
ルを削減することができる。続いて、第7の変形例の情
報処理装置60は、図31に示すように、第6の変形例
の情報処理装置55の中間レジスタ56からS0レジス
タ18及びS1レジスタ19へのデータ転送パス61が
設けられた構成となっている。この情報処理装置60で
は、このデータ転送パス61が設けられることにより、
中間レジスタ56からS0レジスタ18又はS1レジス
タ19へデータの転送を、レジスタファイル2を介さず
に行うことができる。そのため、情報処理装置60で
は、中間レジスタ56に格納されたサブワード形式又は
ワード形式の演算結果を、連続してALUで演算するこ
とが可能となり、情報処理装置55と同様の処理を行う
ことができることに加え、実行サイクルを減らすことが
できる。
【0082】続いて、第8の変形例の情報処理装置65
は、図32に示すように、第6の変形例の情報処理装置
55のマルチプレクサ14に代えて、内積演算ユニット
3からの出力データ、第1のデータ転送バス5を介して
転送されるデータ、又は、ALU4からの出力データを
切り換えるマルチプレクサ41が設けられ、Dレジスタ
20が設けられていない構成となっている。この情報処
理装置65では、ALU4の演算結果を中間レジスタ5
6に格納することにより、上述した内積演算ユニット3
の演算結果をサブワード形式のデータにする処理を、A
LU4の演算結果に対しても適用することができる。そ
のため、この情報処理装置65では、内積演算の演算結
果のみではなく、ワード形式で出力されるあらゆる演算
結果を直接サブワード形式に変換してレジスタファイル
2に格納することができる。
【0083】続いて、第9の変形例の情報処理装置70
は、図33に示すように、第6の変形例の情報処理装置
55のマルチプレクサ14に代えて、内積演算ユニット
3からの出力データ、第1のデータ転送バス5を介して
転送されるデータ、又は、ALU4からの出力データを
切り換えるマルチプレクサ41が設けられるとともに、
中間レジスタ65からS0レジスタ18及びS1レジス
タ19へのデータ転送パス61が設けられた構成となっ
ている。すなわち、第8の変形例の情報処理装置65
に、第7の変形例の情報処理装置60のデータ転送パス
61が設けられた構成となっている。そのため、この情
報処理装置70では、内積演算の演算結果のみではな
く、ワード形式で出力されるあらゆる演算結果を直接サ
ブワード形式に変換してレジスタファイル2に格納する
ことができとともに、中間レジスタ56に格納されたサ
ブワード形式又はワード形式の演算結果を、連続してA
LUで演算することが可能となり実行サイクルを減らす
ことができる。
【0084】
【発明の効果】本発明に係る情報処理装置では、ワード
長で出力された演算結果又は内積演算結果をシフト演算
した後飽和処理して、この飽和処理した結果をサブワー
ドとして出力レジスタに格納する。このことにより、こ
の情報処理装置では、演算処理の後に直接レジスタファ
イルにサブワード形式のデータを格納することができ
る。そのため、この情報処理装置では、レジスタファイ
ルに格納した後に再度サブワード形式に変換する処理を
行わなくて良く、レジスタファイルを節約することがで
き、また、実行サイクルを削減することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態の情報処理装置のブロック
図である。
【図2】上記情報処理装置の係数レジスタの構成を説明
する図である。
【図3】上記情報処理装置の上位入力レジスタ及び下位
入力レジスタの構成及びシフトレジスト構造を説明する
図である。
【図4】上記情報処理装置の上位入力レジスタ、下位入
力レジスタ、係数レジスタ及び内積演算処理ユニットの
構成を説明する図である。
【図5】上記情報処理装置の出力レジスタの構成を説明
する図である。
【図6】上記情報処理装置のシフト飽和ユニットの処理
内容を説明する図である。
【図7】上記図6の状態から処理を進めた場合の上記シ
フト飽和ユニットの処理内容を説明する図である。
【図8】上記図7の状態から処理を進めた場合の上記シ
フト飽和ユニットの処理内容を説明する図である。
【図9】上記情報処理装置に適用されるパイプライン処
理を説明する図である。
【図10】上記情報処理装置に適用される1つの命令
(SET.C)の処理内容を説明する図である。
【図11】上記情報処理装置に適用される1つの命令
(SET.CR)の処理内容を説明する図である。
【図12】上記情報処理装置に適用される1つの命令
(INPROD)の処理内容を説明する図である。
【図13】上記情報処理装置に適用される1つの命令
(INPROD.L)の処理内容を説明する図である。
【図14】上記情報処理装置に適用される1つの命令
(INPROD.S)の処理内容を説明する図である。
【図15】上記情報処理装置において、8回の内積演算
を行う場合におけるプログラムシーケンスを示す図であ
る。
【図16】上記図15のプログラムシーケンスにおける
1サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図17】上記図15のプログラムシーケンスにおける
2サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図18】上記図15のプログラムシーケンスにおける
3サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図19】上記図15のプログラムシーケンスにおける
4サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図20】上記図15のプログラムシーケンスにおける
5サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図21】上記図15のプログラムシーケンスにおける
6サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図22】上記図15のプログラムシーケンスにおける
7サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図23】上記図15のプログラムシーケンスにおける
8サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図24】上記図15のプログラムシーケンスにおける
9サイクル目から実行される命令に基づく処理によっ
て、上記情報処理装置の上位及び下位入力レジスタ並び
に出力レジスタに格納されるデータを説明する図であ
る。
【図25】本発明の実施の形態の情報処理装置の第1の
変形例を示すブロック図である。
【図26】本発明の実施の形態の情報処理装置の第2の
変形例を示すブロック図である。
【図27】本発明の実施の形態の情報処理装置の第3の
変形例を示すブロック図である。
【図28】本発明の実施の形態の情報処理装置の第4の
変形例を示すブロック図である。
【図29】本発明の実施の形態の情報処理装置の第5の
変形例を示すブロック図である。
【図30】本発明の実施の形態の情報処理装置の第6の
変形例を示すブロック図である。
【図31】本発明の実施の形態の情報処理装置の第7の
変形例を示すブロック図である。
【図32】本発明の実施の形態の情報処理装置の第8の
変形例を示すブロック図である。
【図33】本発明の実施の形態の情報処理装置の第9の
変形例を示すブロック図である。
【図34】従来のCPUのブロック図である。
【図35】SIMD型の内積演算処理内容を説明する図
である。
【符号の説明】
1,30,35,40,45,50,55,60,6
5,70 情報処理装置、2 レジスタファイル、3
内積演算ユニット、4 算術論理演算ユニット(AL
U)、7 命令メモリ、8 制御回路、11 係数レジ
スタ(Cレジスタ)、12 上位入力レジスタ(XHレ
ジスタ)、13 下位入力レジスタ(XLレジスタ)、
15,56 中間レジスタ(Pレジスタ)、16 シフ
ト飽和ユニット、17 出力レジスタ(Yレジスタ)、
18 第1の入力レジスタ、19 第2の入力レジス
タ、31,41 マルチプレクサ、36,61 データ
転送パス
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B022 AA02 BA02 CA01 CA03 DA01 FA01 FA03 5B033 AA03 AA06 AA13 BD03 DD06 5B056 AA06 BB28 BB71 FF02 FF03 FF07 FF08 FF10 FF16 HH03 HH05

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 演算結果をワード長で出力する演算回路
    と、 上記演算回路の演算結果を格納する中間レジスタと、 上記中間レジスタに格納されたデータを任意のビット数
    のシフト演算をするシフト演算回路と、 上記シフト演算回路によりシフト演算されたデータを任
    意のビット長に飽和させる飽和回路と、 上記飽和回路が飽和させたデータをサブワードとして格
    納し、サブワードとして格納するデータの入力に応じ
    て、格納しているデータをサブワード単位で上位ビット
    から下位ビットへ順次シフトしていく出力レジスタとを
    備えることを特徴とする情報処理装置。
  2. 【請求項2】 上記飽和回路が飽和させた演算結果を、
    サブワード単位で上記出力レジスタの任意の位置に格納
    するマルチプレクサを備え、 上記出力レジスタは、上記飽和回路が飽和させた演算結
    果をサブワードとして格納することを特徴とする請求項
    1記載の情報処理装置。
  3. 【請求項3】 上記演算回路は、内積演算ユニットと算
    術論理演算ユニットとを有することを特徴とする請求項
    1記載の情報処理装置。
  4. 【請求項4】 ソースデータをサブワード単位で分割し
    て格納する入力レジスタと、 係数データをサブワード単位で分割して格納する係数レ
    ジスタとを有し、 上記内積演算ユニットは、上記入力レジスタに格納され
    たソースデータと上記係数レジスタに格納された係数デ
    ータに対して、サブワード単位でSIMD(Single Ins
    truction Multiple data stream)型の内積演算をする
    ことを特徴とする請求項3記載の情報処理装置。
  5. 【請求項5】 上記飽和回路が飽和させた演算結果を、
    サブワード単位で上記出力レジスタの任意の位置に格納
    するマルチプレクサを備え、 上記出力レジスタは、上記飽和回路が飽和させた演算結
    果をサブワードとして格納することを特徴とする請求項
    3記載の情報処理装置。
  6. 【請求項6】 上記出力レジスタから上記算術論理演算
    ユニットの入力レジスタへのデータ転送パスを有するこ
    とを特徴とする請求項3記載の情報処理装置。
  7. 【請求項7】 ソースデータをサブワード単位で分割し
    て格納する入力レジスタと、 係数データをサブワード単位で分割して格納する係数レ
    ジスタと、 上記入力レジスタに格納されたソースデータと上記係数
    レジスタに格納された係数データに対して、サブワード
    単位でSIMD(Single Instruction Multiple data s
    tream)型の内積演算処理をし、演算結果をワード長で
    出力する内積演算ユニットと、 上記内積演算ユニットの演算結果を格納する中間レジス
    タと、 上記中間レジスタに格納されたデータを任意のビット数
    のシフト演算をするシフト演算回路と、 上記シフト演算回路によりシフト演算されたデータを任
    意のビット長に飽和させる飽和回路と、 上記飽和回路が飽和させたデータをサブワードとして格
    納し、サブワードとして格納するデータの入力に応じ
    て、格納しているデータをサブワード単位で上位ビット
    から下位ビットへ順次シフトしていく出力レジスタとを
    備えることを特徴とする情報処理装置。
  8. 【請求項8】 上記飽和回路が飽和させた演算結果をサ
    ブワードとして、上記出力レジスタの任意の位置に格納
    するマルチプレクサを備え、 上記出力レジスタは、上記飽和回路が飽和させた演算結
    果をサブワードとして格納することを特徴とする請求項
    7記載の情報処理装置。
  9. 【請求項9】 算術論理演算ユニットを有することを特
    徴とする請求項7記載の情報処理装置。
  10. 【請求項10】 上記出力レジスタから上記算術論理演
    算ユニットの入力レジスタへのデータ転送パスを有する
    ことを特徴とする請求項9記載の情報処理装置。
  11. 【請求項11】 命令フェッチ、上記入力レジスタ又は
    上記係数レジスタへのデータの格納、第1の実行ステー
    ジ、第2の実行ステージ、並びに、上記出力レジスタか
    ら外部バッファへの書き込みを、パイプラインで行う制
    御回路を有することを特徴とする請求項7記載の情報処
    理装置。
  12. 【請求項12】 制御回路は、 命令をフェッチし、 上記係数レジスタに係数データをロードすることを特徴
    とする請求項11記載の情報処理装置。
  13. 【請求項13】 制御回路は、 命令をフェッチし、 上記係数レジスタに係数データをロードし、 第1の実行ステージにより出力レジスタに格納するデー
    タを0とすることを特徴とする請求項11記載の情報処
    理装置。
  14. 【請求項14】 制御回路は、 命令をフェッチし、 上記入力レジスタにソースデータをロードし、 第1の実行ステージで上記内積演算ユニットが上記入力
    レジスタに格納されたソースデータと上記係数レジスタ
    に格納された係数データとをサブワード単位で内積演算
    するとともに、演算結果を上記中間レジスタに格納し、 第2の実行ステージで上記中間レジスタに格納されたデ
    ータをワード長のまま上記出力レジスタに格納し、 上記出力レジスタに格納されたデータを外部バッファに
    書き込むことを特徴とする請求項11記載の情報処理装
    置。
  15. 【請求項15】 制御回路は、 命令をフェッチし、 上記入力レジスタにソースデータをロードし、 第1の実行命令により上記内積演算ユニットが上記入力
    レジスタに格納されたソースデータと上記係数レジスタ
    に格納された係数データとをサブワード単位で内積演算
    するとともに、演算結果を上記中間レジスタに格納し、 第2の実行ステージで上記中間レジスタに格納された演
    算結果を上記シフト演算回路が任意のビット数シフトさ
    せる演算をするとともに上記飽和回路が上記シフト演算
    回路がシフトした演算結果を上記任意のビット長で飽和
    させ、上記中間レジスタのデータをサブワード単位で上
    記出力レジスタに格納し、 上記出力レジスタに格納されたデータを外部バッファに
    書き込むことを特徴とする請求項11記載の情報処理装
    置。
  16. 【請求項16】 制御回路は、 命令をフェッチし、 上記入力レジスタに格納されているソースデータを1サ
    ブワード分シフトし、 第1の実行ステージで上記内積演算ユニットが上記入力
    レジスタに格納されたソースデータと上記係数レジスタ
    に格納された係数データとをサブワード単位で内積演算
    するとともに、演算結果を上記中間レジスタに格納し、 第2の実行ステージで、上記出力レジスタが格納してい
    るデータをサブワード単位でシフトしながら、同時に上
    記中間レジスタに格納された演算結果を上記シフト演算
    回路が任意のビット数シフトさせる演算をするとともに
    上記飽和回路が上記シフト演算回路がシフトした演算結
    果を上記任意のビット長で飽和させ、上記中間レジスタ
    のデータをサブワード単位で上記出力レジスタに格納
    し、 上記出力レジスタに格納されたデータを外部バッファに
    書き込むことを特徴とする請求項11記載の情報処理装
    置。
JP11127340A 1999-05-07 1999-05-07 情報処理装置 Withdrawn JP2000322235A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP11127340A JP2000322235A (ja) 1999-05-07 1999-05-07 情報処理装置
US09/564,279 US6687724B1 (en) 1999-05-07 2000-05-04 Information processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11127340A JP2000322235A (ja) 1999-05-07 1999-05-07 情報処理装置

Publications (1)

Publication Number Publication Date
JP2000322235A true JP2000322235A (ja) 2000-11-24

Family

ID=14957509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11127340A Withdrawn JP2000322235A (ja) 1999-05-07 1999-05-07 情報処理装置

Country Status (2)

Country Link
US (1) US6687724B1 (ja)
JP (1) JP2000322235A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008077663A (ja) * 2006-09-20 2008-04-03 Intel Corp ドット積演算を行うための命令および論理
JP2010539593A (ja) * 2007-09-13 2010-12-16 フリースケール セミコンダクター インコーポレイテッド 重複オペランドを使用したsimdの内積演算
JP2012505455A (ja) * 2008-10-08 2012-03-01 アーム・リミテッド Simd積和演算動作を行うための装置及び方法
WO2013145221A1 (ja) * 2012-03-29 2013-10-03 富士通株式会社 パイプライン型プロセッサ

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216140B1 (en) * 2000-09-30 2007-05-08 Intel Corporation Efficient implementation of n-point DCT, n-point IDCT, SA-DCT and SA-IDCT algorithms
FI118654B (fi) * 2002-11-06 2008-01-31 Nokia Corp Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
US7730292B2 (en) * 2003-03-31 2010-06-01 Hewlett-Packard Development Company, L.P. Parallel subword instructions for directing results to selected subword locations of data processor result register
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
US11275562B2 (en) 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60140429A (ja) * 1983-12-28 1985-07-25 Hitachi Ltd 10進乗算装置
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US6237016B1 (en) * 1995-09-05 2001-05-22 Intel Corporation Method and apparatus for multiplying and accumulating data samples and complex coefficients
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008077663A (ja) * 2006-09-20 2008-04-03 Intel Corp ドット積演算を行うための命令および論理
JP4697639B2 (ja) * 2006-09-20 2011-06-08 インテル・コーポレーション ドット積演算を行うための命令および論理
JP2010539593A (ja) * 2007-09-13 2010-12-16 フリースケール セミコンダクター インコーポレイテッド 重複オペランドを使用したsimdの内積演算
JP2012505455A (ja) * 2008-10-08 2012-03-01 アーム・リミテッド Simd積和演算動作を行うための装置及び方法
WO2013145221A1 (ja) * 2012-03-29 2013-10-03 富士通株式会社 パイプライン型プロセッサ

Also Published As

Publication number Publication date
US6687724B1 (en) 2004-02-03

Similar Documents

Publication Publication Date Title
JP3592230B2 (ja) データ処理装置
US5864703A (en) Method for providing extended precision in SIMD vector arithmetic operations
US5473554A (en) CMOS multiplexor
US6671797B1 (en) Microprocessor with expand instruction for forming a mask from one bit
JPH10134036A (ja) マルチメディア信号プロセッサの単一命令多重データ処理
JPH09311786A (ja) データ処理装置
US20080184007A1 (en) Method and system to combine multiple register units within a microprocessor
JP2011090592A (ja) 情報処理装置とその命令デコーダ
JP2000322235A (ja) 情報処理装置
JPH05150979A (ja) 即値オペランド拡張方式
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
JP4955149B2 (ja) ビットfifoを有するディジタル信号プロセッサ
US5958000A (en) Two-bit booth multiplier with reduced data path width
US7047396B1 (en) Fixed length memory to memory arithmetic and architecture for a communications embedded processor system
JPH08123769A (ja) 並列プロセッサ
JP2010117806A (ja) 半導体装置、および、半導体装置によるデータ処理方法
US7308553B2 (en) Processor device capable of cross-boundary alignment of plural register data and the method thereof
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
US20220261251A1 (en) Processing device with vector transformation execution
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6859872B1 (en) Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
EP3030963B1 (en) Flexible configuration hardware streaming unit
GB2380283A (en) A processing arrangement comprising a special purpose and a general purpose processing unit and means for supplying an instruction to cooperate to these units

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20060801