JP4020804B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP4020804B2
JP4020804B2 JP2003060099A JP2003060099A JP4020804B2 JP 4020804 B2 JP4020804 B2 JP 4020804B2 JP 2003060099 A JP2003060099 A JP 2003060099A JP 2003060099 A JP2003060099 A JP 2003060099A JP 4020804 B2 JP4020804 B2 JP 4020804B2
Authority
JP
Japan
Prior art keywords
data
register
output
unit
bit
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
JP2003060099A
Other languages
English (en)
Other versions
JP2003337696A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2003060099A priority Critical patent/JP4020804B2/ja
Publication of JP2003337696A publication Critical patent/JP2003337696A/ja
Application granted granted Critical
Publication of JP4020804B2 publication Critical patent/JP4020804B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、データ処理装置に関し、映像データ、音声データの復号処理といったメディア処理や、通信データの復調処理を効率良く行う場合の改良に係る。
【0002】
【従来の技術】
映像データ、音声データの復号処理といったメディア処理や通信データの復調処理では、N×Mといった2次元的な配置をなす行列状のデータを処理する機会が非常に多い。データ行列に対する処理を高速に行うため、メディア処理を行うデータ処理装置には、複数のデータ処理の並列化に適したアーキテクチャが採用される傾向がある。通説によれば、データ行列に対する高速処理は、プロセッシングエレメント(Processing Element(以下PEと略す))数を増やすという量的な拡張により達成される。PEとは、演算ユニット、演算ユニットにデータを供給するためのレジスタ等を含むハードウェアの拡張単位である。並列実行すべき演算数に応じたPEをプロセッサに具備させることにより、プロセッサを並列化に適合させるというのが従来のメディア処理向けのデータ処理装置のアーキテクチャである。
【0003】
データ行列が縦16×横16の要素からなる場合、データ処理装置をどのように構成するかについて説明する。メモリデバイスに縦16×横16のデータ要素からなるデータ行列を格納させておき、データ行列における縦16個のデータ列を、16個のPEのそれぞれに割り当てる。データ行列における横16個のデータが、メモリデバイスから読み出される度に、割り当てられたデータについての処理を16個のPEに同時に行わせる。そうすれば横16個のデータに対する処理は1サイクルで完遂する。同様の処理を16サイクル繰り返すことにより、縦16×横16に対する処理を16サイクルで完遂させる。
【0004】
尚、PEを複数有したデータ処理装置には、下記の特許文献1、2に記載されているものがある。
【0005】
【特許文献1】
国際公開第01/82227号パンフレット
【0006】
【特許文献2】
国際公開第01/82630号パンフレット
【0007】
【発明が解決しようとする課題】
ところで16個の演算の並列化は、オペランドとするデータが16個のPE内の演算ユニットに16個同時に供給されて初めて達成される。自身に割り当てられた縦16個のデータ列ではなく、異なる縦16個のデータ列をオペランドとする演算を、PE内の演算ユニットが行おうとすると、データ行列におけるデータの配置を入れ替えた上でPEに供給せねばならない。その入れ替え処理に時間が費やされれば、同時供給は不可能となり、PEの稼動効率は極端に低下する。つまり複数のPEを有したアーキテクチャは、オペランドとなるデータ列の供給に変化が起こると、処理効率を極度に落とすという脆弱性を孕んでいる。
【0008】
メディア処理において、データ行列の要素に入れ替えが生じるケースには多くのものがあり枚挙にいとまが無い。上述したようなデータ列の供給変化だけではなく、データ列の内部で、データの配置が入れ代わることもあり得る。要素入れ替えの度に稼動効率が落ちたのでは、とてもではないがデジタル家電機器に求められる厳しい動作スぺックを満たすことができない。そのためプロセッサの開発者は、メディア処理においてPEが行うべき演算の種別を絞り、対象となる演算の種別毎に、アーキテクチャの設計をやり直すという手間を払っている。設計のやり直しの手間に開発者は忙殺され、メディア処理を行うデータ処理装置の開発は長期化する傾向があるといわれてきた。
【0009】
本発明の目的は、オペランドの割り当て等に変化が生じようとも、普遍的にデータ処理装置の稼動効率を維持できるデータ処理装置を提供することである。
【0010】
【課題を解決するための手段】
上記目的を達成するため、本発明に係るデータ処理装置は、x行×y列からなる行列状データを格納したn個のレジスタファイルと(x,yは1≦x≦n,1≦y≦nを満たす整数)、n個の演算ユニットとを含むn個のプロセッシングエレメントと、コマンドを解読して、読出指示、及び、書込指示をn個のプロセッシングエレメントにおけるレジスタファイルのそれぞれに対して出力するブロックデコーダと、第1系統セレクタ、第2系統セレクタを備え、第1系統セレクタ、第2系統セレクタのそれぞれが、何れかのプロセッシングエレメント内のレジスタファイルを入力元とし、何れかのプロセッシングエレメント内の演算ユニットを出力先とした入出力を、n個同時に実行するネットワーク部とを備え(n 2 以上の整数)、ブロックデコーダにより読出指示がなされた場合、各プロセッシングエレメント内に存在するレジスタファイルは、行列状データにおいて同じ列に存在する2つのデータを読み出して、それら2つのデータを第1系統セレクタ及び第2系統セレクタのそれぞれに出力して、第1系統セレクタ及び第2系統セレクタは、それぞれ、n個の入出力を同時に行うことで各レジスタファイルから読み出されたデータの水平位置の入れ替えを行い、各プロセッシングエレメント内の演算ユニットは、第1系統セレクタから出力されたデータ、第2系統セレクタから出力されたデータの供給をうけ、ブロックデコーダにより書込指示がなされた場合、各プロセッシングエレメント内に存在するレジスタファイルは、同じプロセッシングエレメント内に存在する演算ユニットから出力された2つのデータを、自身の内部に存在する複数レジスタのうち、何れか2つに書き込むことを特徴としている。
【0011】
【発明の実施の形態】
以下本発明に係るデータ処理装置の実施形態について説明する。
(第1実施形態)
第1実施形態に係るデータ処理装置は、縦16×横16の要素からなる行列を処理するよう、図1に示すように構成されている。図1は、第1実施形態に係るデータ処理装置の概略構成を示す図である。データ処理装置は、行列の横の要素数と同数のPE0〜15からなる。各PEは算術演算ユニット(以下ALUと略す)と、レジスタファイル(以下RFと略す)とを含む。各PE内の算術演算ユニット、各PE内のレジスタファイルは共にネットワーク部20と接続されている。
【0012】
16個のPE内のALUは、RFに格納されている要素をオペランドとした演算を実行するものである。16個のPEのそれぞれにALUが存在するため、16個の演算が並列に実行されることになる。
各PE内のRFは、行列の縦の要素数と同数のレジスタr0〜r15を含む。かかるRFが、16個のPEのそれぞれの中に存在するので、データ処理装置では、縦16×横16の要素からなる行列が、縦16×横16のレジスタにより保持されることになる。
【0013】
パスA,Bは、RFから同じPEに含まれるALUへと2つのデータを伝送するための接続線であり、パスY,Zは、ALUから同じPEに含まれるRFへと2つのデータを伝送するための接続線である。パスC,Dは、ネットワーク部20を介して、任意のPE内のALUに2つのデータを伝送する接続線である。
ネットワーク部20は、各PEのRFからパスC,Dを介して伝送された32個のデータを、任意のPE内のALUに転送する。
【0014】
以上が第1実施形態に係るデータ処理装置の概略構成である。続いてPE内の構成要素の詳細を、ALU、RFの順に説明する。
ALUは、RFからパスA,Bを介して伝送された2つのデータと、ネットワーク部20からパスC,Dを介して伝送された2つのデータとをオペランドとする演算を2つ同時に実行する。2つの演算の同時実行により得られた2つの演算結果を同じプロセッシングエレメント内に含まれるRFの入力ポートY、入力ポートZに出力する。
【0015】
続いてRFについて図2を参照しながら説明する。図2は、RFの内部構成を詳細に示す図である。本図に示すようにRFは、16個のレジスタr0〜r15と、4つの出力ポートA,B,C,Dと、3つの入力ポートX,Y,Zとを備え、4r-3wのレジスタ読み書きを実現する。各レジスタの語長(ワード)は、2バイト(=16ビット)であり、16個のRFは、計16×2バイトのデータを保持することができる。"4r"とは、4つのレジスタからデータを読み出し、その4つのデータを4つの出力ポートA,B,C,Dを介して出力するという意味であり、16個のレジスタのうち任意の4つのレジスタからの読み出しを4つ同時に実行することを意味する。4つの出力ポートA,B,C,Dのうち2つ(A,B)は同じPE内のALUと接続され、残り2つ(C,D)はネットワーク部20に接続される。このため、自身が保持している16個の要素のうち2つを、ポートA,Bを介して同じPE内のALUに供給することができ、別の2つを、ポートC,Dを介して別のPE内のALUに供給することができる。4つの出力ポートに出力すべきデータを、4つのどのレジスタから読み出すか、即ち、4つの読出元レジスタの指定は、4つのポートE,F,G,Hにより指定される。
【0016】
"3w"とは、3つの入力ポートX,Y,Zからデータを取り込み、その3つのデータを3つのレジスタに書き込むという意味であり、16個のレジスタのうち任意の3つのレジスタへの書き込みを3つ同時に実行することを意味する。3つの入力ポートX,Y,Zのうち、入力ポートXは、データ行列を格納するメモリデバイス(不図示)に、入力ポートY,ZはALUにそれぞれに接続されている。3つの入力ポートから入力される3つのデータを、3つのどのレジスタに書き込むか、つまり書込先となる3つのレジスタは、3つの書込先指定ポートI,J,Kにより指定される。
【0017】
以上がPEの内部構成の説明である。続いてネットワーク部20の内部構成について説明する。図3は、ネットワーク部20の内部構成を示す図である。本図に示すようにネットワーク部20は、2つの16入力-16出力セレクタ(第1系統セレクタ21、第2系統セレクタ22という)からなる。
図4は、ネットワーク部20を構成する2つのセレクタのうち、第1系統セレクタ21を示す図である。第1系統セレクタ21は16個の入力ポートin0,1,2,3,4・・・・14,15と、16個の出力ポートOut0,1,2,3,4・・・・14,15とを備える。16個の入力ポートin0,1,2,3,4・・・・14,15のそれぞれは、16個のRFのそれぞれと対応しており、その対応するRFが具備している4つの出力ポートA,B,C,Dのうち、出力ポートCが16入力-16出力セレクタ側の入力ポートin0,1,2,3,4・・・・14,15と接続されている。一方16入力-16出力セレクタの16個の出力ポートOut0,1,2,3,4・・・・14,15は、16個のALUのそれぞれに対応しており、その対応するALUが具備している4つの入力ポートA,B,C,Dのうち、入力ポートCが16入力-16出力セレクタ側の出力ポートと接続されている。
【0018】
以上の第1系統セレクタ21についての接続関係を具体的にいい直すと以下の通りである。第1系統セレクタ21の1つ目の出力ポートout0はPE0のALUの入力ポートC、2つ目の出力ポートout1はPE1のALUの入力ポートC、3つ目の出力ポートout2はPE2のALUの入力ポートCとそれぞれ接続されている。また第1系統セレクタ21において、1つ目の入力ポートin0はPE0のRFの出力ポートC、2つ目の入力ポートin1はPE1のRFの出力ポートC、3つ目の入力ポートin2はPE2のRFの出力ポートCとそれぞれ接続されている。
【0019】
図5は、第2系統セレクタ22を示す図である。第2系統セレクタ22における16個の入力ポートin0,1,2,3,4・・・・14,15のそれぞれも、16個のRFのそれぞれと対応しており、その対応するRFが具備している4つの出力ポートA,B,C,Dのうち、出力ポートDと接続されている。一方16入力-16出力セレクタの16個の出力ポートout0,1,2,3,4・・・・14,15のそれぞれは、16個のALUのそれぞれに対応しており、その対応するALUが具備している4つの出力ポートA,B,C,Dのうち、出力ポートDと接続されている。
【0020】
第2系統セレクタ22についての接続関係を具体的にいい直すと以下の通りである。第2系統セレクタ22の1つ目の出力ポートout0はPE0のALUの入力ポートD、2つ目の出力ポートout1はPE1のALUの入力ポートD、3つ目の出力ポートout2はPE2のALUの入力ポートDとそれぞれ接続されている。また第2系統セレクタ22において、1つ目の入力ポートin0はPE0のRFの出力ポートD、2つ目の入力ポートin1はPE1のRFの出力ポートD、3つ目の入力ポートin2はPE2のRFの出力ポートDとそれぞれ接続されている。
【0021】
16個の入力ポートin0,1,2,3,4・・・・14,15、16個の出力ポートout0,1,2,3,4・・・・14,15がこのように接続されているので、16個の入出力を同時に実行することにより、RFの出力ポートC,Dからの出力値が、任意のALUの入力ポートC,Dに16個同時に伝送されることになる。ネットワーク部20は、共通のRFを入力元とした2つの入出力や、共通のALUを出力先とした2つの入出力も行うことができる。これにより1つのPEのRFに格納されているデータを2以上のALUに同時に転送することもできる。
【0022】
RFからの4つの格納値の同時出力が可能であり、ネットワーク部20はそうして出力された格納値を他のPE内のALUに出力することが可能なので、図6のようなデータ供給が可能となる。ここでi番目のPEiのRFにおいて、j番目のレジスタjに格納されているデータをdata(i,j)とすると、矢印ty1,2に示すようにRFの格納値のうち、data(0,1)、data(0,2)がPE0内のALUに供給され、PE1のRF内のdata(1,2)、PE2のRF内のdata(2,2)も矢印ty3,ty4に示すようにネットワーク部20を介してPE0に供給されていることがわかる。またPE0内のALUは、PE0のRFから出力されたdata(0,1)、data(0,2)と、PE1、PE2から出力されたdata(1,2)、data(2,2)とを加えた計4つの要素をオペランドとすることができる。
【0023】
以上のように本実施形態によれば、複数PEのそれぞれに内蔵されているALUは、同じPEに内蔵されているRF以外だけではなく、他のPEに含まれるRFに格納されているデータをもオペランドとすることができるので、演算の対象となる範囲を増やすことができる。
ネットワーク部20におけるセレクタ21,22の入力元の数は、レジスタと同数のn個としたが、入力元の個数は、n以外の数としてもよい。入力元の数をn個より少なくすることは勿論のこと、入力元の数をn個より大きくしても良い。つまり各PEのレジスタファイルには、4つの出力ポートA,B,C,Dが存在するので、このうちg個の(gは、2≦g≦4を満たす整数)の出力ポートをセレクタ21,22に割り当てて、g・n入力−n出力セレクタを構成する。そして、ネットワーク部20内にこのセレクタを内蔵して、g×n個の入力元と、n個の出力先とについての入出力を、このg・n入力−n出力セレクタに行わせるのである。
【0024】
(第2実施形態)
本実施形態は、データ処理装置を動き補償といった用途、フィルタ処理といった用途の2つの用途に応用する場合の改良に関する。
動き補償及びフィルタ処理を行う場合のALUの内部構成について説明する。本実施形態に係るALUは、4つの入力ポートA,B,C,Dに入力されてくる4つのデータをオペランドA,B,C,Dとして、オペランドA+オペランドB×(オペランドC+オペランドD)という演算を行う。図7は本実施形態に係るALUの内部構成を示す図であり、本図に示すようにALUは、オペランドCとオペランドDとを加算する加算器23、加算結果(オペランドC+オペランドD)にオペランドBを乗ずる乗算器24、乗算結果オペランドB×(オペランドC+オペランドD)にオペランドAを加算して、加算結果(オペランドA+オペランドB×(オペランドC+オペランドD))を得るアキュムレータ25を備える。尚、本明細書において加算機能を有する構成要素は、加算処理に留まらず、減算処理まで実行できるものとする。
【0025】
以上のように構成されたALUと、第1実施形態に示したRF、ネットワーク部20とを用いて動き補償及びフィルタ処理を実現する。
先ず始めに動き補償にデータ処理装置を応用する場合の応用例について説明する。動き補償には、Pピクチャについての動き補償と、Bピクチャについての動き補償とがある。Pピクチャとは、過去方向の参照画像との差分により表現された画像データであり、Pピクチャに対する動き補償は、過去方向の画像の画素に、Pピクチャの画素を加算してゆくという処理により実現される。Bピクチャとは、過去方向の参照画像と、未来方向の参照画像との差分により表現された画像データであり、Bピクチャに対する動き補償は、過去方向画像の画素と、未来方向の画像とに、Bピクチャの画素を加算してゆくという処理により実現される。
【0026】
図8は、Pピクチャについての動き補償にデータ処理装置を応用する場合の応用例を示す図である。本図におけるD0〜D7は、差分画像の一ライン上の画素である。またP0〜P7は、過去方向における参照画像の一ライン分の画素である。図8の一例ではD0〜D7がPE0〜PE7のレジスタr0に、P0〜P7がPE0〜PE7のレジスタr1にそれぞれ格納されている。これらの画素は、RFから同じPE内のALUにそれぞれ転送される。図9は、本実施形態に係るデータ処理装置が、動き補償を行う場合の動作を示す図である。画素D0,P0は矢印uy1,uy2に示すようにPE0のALUに、画素D1,P1は、矢印uy3,uy4に示すようにPE1内のALU、画素D2,P2は矢印uy5,uy6に示すようにPE2内のALUにそれぞれ転送される。
【0027】
図9においてALUは、転送された画素同士の加算を行う。PE0内のALUの加算器は画素D0と画素P0との加算を、PE1内のALUの加算器は画素D1と画素P1との加算を、PE2内のALUの加算器は画素D2と画素P2との加算をそれぞれ行う。以上のようなALUの加算によりPピクチャに対する動き補償が実現される。
図10は、Bピクチャに対する動き補償を行う場合のRFの格納例を示す図である。図9同様、PE0〜PE7のレジスタr0にはD0〜D7が、レジスタr1にはP0〜P7が、レジスタr2にはB0〜B7がそれぞれ格納される。各PEのRFは、これらの画素を同じPE内のALUに転送する。図11は、Bピクチャに対する動き補償を行う場合にALUがどのような演算を行うかを示す図である。PE0のRFは、矢印By0,1,2に示すように画素D0,B0,P0を、PE1のRFは矢印By3,4,5に示すように画素D1,B1,P1を、PE2のRFは、矢印By6,7,8に示すように画素D2,B2,P2をそれぞれ出力する。各PE内のALUは、このように転送された画素に対する動き補償を実行する。PE0内のALUではB0+P0の加算が加算器によりなされ、加算結果(B0+P0)に1/2を乗ずる乗算がPE0内の乗算器によりなされる、更に乗算結果1/2・(B0+P0)に、D0を加算する演算がPE0内のアキュムレータによりなされる。以上がBピクチャに対する動き補償である。
【0028】
続いて、動画の圧縮処理/伸張処理、リサイズを行う場合に頻繁に用いられるフィルタ処理に、データ処理装置を応用する場合の応用例について説明する。画像リサイズの実現には、FIR(Finite Impulse Response)フィルタ等、フィルタ係数が対称であるという性質をもったフィルタ演算が有効である。ここで対象となる画素Xjに対して対称型フィルタを施す場合、Xjからi個先にある画素Xj+iと、Xjからi個手前にある画素Xj-iに乗ずるべきフィルタ係数がそれぞれ同じとなる。1つのライン上に存在するX0〜X31に対し、対称型フィルタを施す場合の演算例を以下に説明する。図12は、一ライン上に存在する32個の画素X0〜X31のうち、4つの画素X7,X8,X9,X10に対してフィルタ処理を施す場合の演算式を示す図である。図12(a)はX0〜X31のうちX7の画素値を、図12(b)はX8の画素値を、図12(c)はX9の画素値を、図12(d)はX10の画素値を対称型フィルタによりそれぞれ算出する場合の一例を示している。図12(a)では画素X7の画素値にはフィルタ係数a0を乗じ、画素X6及びX8の画素値にはフィルタ係数a1を、画素X5及びX9の画素値にはフィルタ係数a2を、画素X4及びX10の画素値にはフィルタ係数a3を、画素X3及びX11の画素値にはフィルタ係数a4をそれぞれ乗じている。画素X6とX8、X5とX9、X4とX10、X3とX11をそれぞれ同じフィルタ係数としているのは、これらが画素X7に対して線対称な関係にあるからである。
【0029】
図12(a)〜(d)において式1,2,3,4は、画素X7,X8,X9,X10に対して対称型フィルタを施す場合の演算式を示す。データ処理装置は、これらの演算式を複数の部分項に分け、これら部分項を同時に実行するものとする。つまり図12(a)〜(d)の式のうち部分項Stage1を画素X7,X8,X9,X10に対して同時に実行し、続いて部分項Stage2を画素X6,X7,X8,X9,X10,X11に対して同時に実行する。部分項Stage3を画素X5,X6,X7,X8,X9,X10,X11,X12に対して同時に実行し、部分項Stage4を画素X4,X5,X6,X7,X8,X9,X10,X11,X12,X13に対して同時に実行する。4つの画素に対する対称型フィルタを実現するRFの設定例について、図13を参照しながら説明する。図13は、対称型フィルタを実現する場合のRFの格納例を示す図である。PE0〜PE15のレジスタr0にはX0〜X15が格納され、PE0〜PE15のレジスタr1にはX16〜X31が格納される。
【0030】
PE0〜PE15のレジスタr2は、各PEの演算結果の格納のために割り当てられている。PE0のレジスタr2は、PE0のALUの演算結果の格納のために、PE1のレジスタr2は、PE1のALUの演算結果、PE2のレジスタr2は、PE2のALUの演算結果、PE3のレジスタr2は、PE3のALUの演算結果の格納のためにそれぞれ割り当てられている。
PE0〜PE15のレジスタr3〜レジスタr7には、a0〜a4といったフィルタ係数がそれぞれ格納される。つまりPE0のレジスタr3〜レジスタr7にはフィルタ係数a0〜a4が、PE1のレジスタr3〜レジスタr7にもa0〜a4、PE2のレジスタr3〜レジスタr7にはa0〜a4がそれぞれ格納される。フィルタ係数及び画素値がこのように格納されるので、PE内のALUは、自身と同じPEに含まれるRFから、所望の画素の画素値を取り出することができ、またネットワーク部20を介して、隣接方向にある所望の画素を取り出することができる。
【0031】
続いて対称型フィルタがどのように実行されるかについて説明する。対称型フィルタを行うための演算は、Stage1〜Stage4という4つの部分項から構成されているので、先ず始めに、部分項Stage1の演算、つまりa0・X7、a0・X8、a0・X9、a0・X10の演算を実行する。
<Stage1>
図14は、このStage1におけるRFの読み書き及びALUによる演算を示す。画素X7、X8、X9、X10に対して対称型フィルタを行うべきPE7〜PE10のALUは、自身に対応するRFから矢印cy0,1,2,3に示すように画素X7、X8、X9、X10の画素値を読み出し、フィルタ係数a0を矢印cy4,5,6,7に示すように読み出す。読み出しの後、PE7の乗算器はフィルタ係数a0に画素値X7を乗じ、PE8の乗算器はフィルタ係数a0に画素値X8を、PE9の乗算器はフィルタ係数a0に画素値X9を、PE10の乗算器はフィルタ係数a0に画素値X10をそれぞれ乗ずる。これらの乗算により得られた演算結果a0・X7、a0・X8、a0・X9、a0・X10を、PE0〜PE15のレジスタr2にそれぞれ書き込む。
【0032】
<Stage2>
図15は、Stage2においてネットワーク部20により行われるPE間の転送を示す。Stage2では、隣接する画素が必要となるから、隣接する画素を、ネットワーク部20は図15に示すように転送する。PE6及びPE8のRFに格納される画素X6、X8の画素値をPE7のALUに、PE7及びPE9のRFに格納される画素X7、X9の画素値をPE8のALUに、PE9及びPE11のRFに格納される画素X9、X11の画素値をPE10のALUにそれぞれ転送する。図16は、各PE内のRFからALUにどのようなデータが転送されるかを示す図である。本図において矢印ey0,1,2,3に示すように、PE7、PE8、PE9、PE10の演算結果a0・X7、a0・X8、a0・X9、a0・X10が同じPE内のALUに転送されており、これとともにフィルタ係数a1が矢印ey4,ey5,ey6,ey7に示すように転送されている。ネットワーク部20からは図15に示すようにPE7に画素X6、X8の画素値が、PE8に画素X7、X9の画素値が、PE9に画素X10、X8の画素値が、PE10に画素X9、X11の画素値がそれぞれ転送されるので、各PE内のALUは、転送された画素値及びフィルタ係数を用いた乗算及び加算を実行する。
【0033】
PE7のALU内の加算器は、図16(a)に示すように画素値X6+X8の加算を行い、PE7の乗算器はa1・(X6+X8)の乗算を、PE7のアキュムレータ25は、a1・(X6+X8)にStage1の演算結果a0・X7を加算する処理を行う。その演算結果a0・X7+a1・(X6+X8)は同じPE内のレジスタr2に書き込まれる。
PE8のALU内の加算器は図16(b)に示すようにX7+X9の加算を行い、PE8の乗算器24はa1・(X7+X9)の乗算を、PE8のアキュムレータはa1・(X7+X9)にStage1の演算結果a0・X8を加算する処理を行う。その演算結果a0・X8+a1・(X7+X9)は同じPE内のレジスタr2に書き込まれる。
【0034】
PE9のALUも同様に図16(c)に示すようにa0・X9+a1・(X10+X8)の演算を、PE10のALUも同様に図16(d)に示すようにa0・X10+a1・(X11+X9)の演算を行うことにより、図12(a)〜(d)のStage2の部分項までの計算が完了する。
<Stage3>
図17は、Stage3においてネットワーク部20によりなされるPE間の転送を示す。Stage3では、2画素先にある画素が必要となるから、2画素先にある画素を、ネットワーク部20は図17に示すように転送する。PE5及びPE9のRFに格納される画素X5及びX9の画素値をPE7のALUに、PE6及びPE10のRFに格納される画素X6及びX10の画素値をPE8のALUに、PE7及びPE11のRFに格納される画素X7及びX11の画素値をPE9のALUに、PE8及びPE12のRFに格納される画素X8及びX12の画素値をPE10のALUにそれぞれ転送する。図18は、各PE内のRFからALUにどのようなデータが転送されるかを示す図である。本図において矢印fy0,1,2,3に示すように、PE7、PE8、PE9、PE10の演算結果a0・X7+a1・(X6+X8)、a0・X8+a1・(X7+X9)、a0・X9+a1・(X10+X8)、a0・X10+a1・(X9+X11)が同じPE内のALUに転送されており、これとともに矢印fy4,5,6,7に示すようにフィルタ係数a2が転送されている。ネットワーク部20からは図17に示すようにPE7に画素値X5,X9が、PE8に画素値X6,X10が、PE9に画素値X11,X7が、PE10に画素値X8,X12がそれぞれ転送されるので、各PE内のALUは、転送された画素値及びフィルタ係数を用いた乗算及び加算を実行する。
【0035】
PE7の加算器は図18(a)に示すようにX5+X9の加算を行い、PE7の乗算器はa2・(X5+X9)の乗算を、PE7のアキュムレータはa2・(X5+X9)にStage1の演算結果a0・X7+a1・(X6+X8)を加算する処理を行う。その演算結果a0・X7+a1・(X6+X8)+a2・(X5+X9)は同じPE内のレジスタr2に書き込まれる。
PE8の加算器は図18(b)に示すようにX6+X10の加算を、PE8の乗算器はa2・(X6+X10)の乗算を、PE8のアキュムレータはa2(X6+X10)にStage1の演算結果a0・X8+a1・(X7+X9)を加算する処理を行う。その演算結果a0・X8+a1・(X7+X9)+a2・(X6+X10)は同じPE内のレジスタr2に書き込まれる。
【0036】
PE9も同様に図18(c)に示すようにa0・X9+a1・(X10+X8)+a2・(X11+X7)の演算を、PE10も同様に図18(d)に示すようにa0・X10+a1・(X11+X9)+a2・(X8+X12)の演算を行うことにより、図12(a)〜(d)のStage2の部分項までの計算が完了する。
<Stage3>
図19は、Stage3における読み書き及びALUによる演算を示す。Stage3では、3画素先にある画素が必要となるから、3画素先にある画素を、ネットワーク部20は図19に示すように転送する。PE4及びPE10のRFに格納されるX4及びX10をPE7のALUに、PE5及びPE11のRFに格納されるX5及びX11をPE8のALUに、PE6及びPE12のRFに格納されるX6及びX12をPE9のALUに、PE7及びPE13のRFに格納されるX7及びX13をPE10のALUにそれぞれ転送する。図20は、各PE内のRFからALUにどのようなデータが転送されるかを示す図である。本図においてが矢印gy0,1,2,3に示すように、PE7、PE8、PE9、PE10の演算結果a0・X7+a1・(X6+X8)+a2・(X5+X7)、a0・X8+a1・(X7+X9)+a2・(X6+X10)、a0・X9+a1・(X10+X8)+a2・(X11+X7)、a0・X10+a1・(X9+X11)+a2・(X8+X12)が同じPE内のALUに転送されており、これとともにフィルタ係数a3が矢印gy4,5,6,7に示すように転送されている。ネットワーク部20からは図19に示すようにPE7にX4,X10の画素値が、PE8にX5,X11の画素値が、PE9にX12,X6の画素値が、PE10にX7,X13の画素値がそれぞれ転送されるので、各PE内のALUは、転送された画素値及びフィルタ係数を用いた乗算及び加算を実行する。
【0037】
PE7のALU内の加算器は図20(a)に示すようにX4+X10の加算を行い、PE7の乗算器24はa3・(X4+X10)の乗算を、PE7のアキュムレータはa3・(X4+X10)にStage1の演算結果a0・X7+a1・(X6+X8)+a2・(X5+X9)を加算する処理を行う。その演算結果a0・X7+a1・(X6+X8)+a2・(X5+X9)+a3・(X4+X10)は同じPE内のレジスタr2に書き込まれる。
【0038】
PE8の加算器は図20(b)に示すようにX5+X11の加算を行い、PE8の乗算器はa3(X5+X11)の乗算を、PE8のアキュムレータは乗算結果a3・(X5+X11)にStage1の演算結果a0・X8+a1・(X7+X9)+a2・(X6+X10)を加算する処理を行う。その演算結果a0・X8+a1・(X7+X9)+a2・(X6+X10)+a3・(X5+X11)は同じPE内のレジスタr2に書き込まれる。
【0039】
PE9も、同様に図20(c)に示すようにa0・X9+a1・(X10+X8)+a2・(X11+X7)+a3・(X12+X6)の演算を、PE10も同様に図20(d)に示すようにa0・X10+a1・(X11+X9)+a2・(X8+X12)+a3・(X7+X13)の演算を行うことにより、図12(a)〜(d)のStage3の部分項までの計算が完了する。
以下、Stage4についても同様の手順を繰り返す。図21は、Stage4において、ネットワーク部20によりなされる転送を示す。図22は、Stage4において、ALUによりなされる演算を示す。
【0040】
以上のような処理をデータ処理装置が行うことにより、フィルタ係数が4つの対称型フィルタを、4つのステージで実行することができる。
以上のように本実施形態によれば、RFの設定及びネットワーク部20の転送の組み合わせを変更することにより、データ処理装置を動き補償に用いることができ、またデータ処理装置を対称型フィルタに用いることもできるので、動き補償といった用途と、対称型フィルタといった用途とでデータ処理装置を共用することができる。
【0041】
(第3実施形態)
本実施形態は、動き補償やフィルタ処理を実現するにあたって、画素をある一定間隔で読み出すという制御をどのように実現するかを開示する。図23は、本実施形態に係るデータ処理装置の内部構成を示す図である。本図において特徴的なのは、差分加算器(DDA)26がPE0のALU内に設けられている点である。DDA26はPE0からPE15の全てに設けられており、第1系統セレクタ21だけでなく第2系統セレクタ22に対しても接続されている。しかし簡略化を期するため、以降の説明は、PE0内のDDA26を対象とする。
【0042】
DDA26は、行列におけるs列目の要素data[s]、一定間隔をαとした場合に、この一定間隔を差分としてs←s+αという計算により変数sを更新しつつ、要素data[s]をALUに出力するよう、ネットワーク部20を制御する。行列におけるs列目の要素data[s]は、PE[s]のRFに格納されているので、DDA26は、このRF内の要素data[s]を自身に供給するようネットワーク部20による入出力を制御する。
【0043】
変数sの初期値を0とし、一定間隔αを"3"とした場合、DDA26は、PE0,PE3,PE6,PE9,PE12に格納されているdata[0],[3],[6],[9],[12]・・・・を転送するよう、[0],[3],[6],[9],[12]をネットワーク部20に出力する。
変数sの初期値を0とし、一定間隔αを"2"とした場合、DDA26は、PE0,PE2,PE4,PE6,PE8に格納されているdata[0],[2],[4],[6],[8]・・・・を転送するよう、[0],[2],[4],[6],[8]をネットワーク部20に出力する。
【0044】
以上のように本実施形態によれば、複数の画素の画素値を、二画素置き、三画素置きに読み出してゆくという動作を高速に実行でき、第2実施形態に示したフィルタ処理を好適に実行することができる。
尚、DDA26が加算すべきオフセットは、命令により設定できるようにしておくのが望ましい。データを読み出すべき一定間隔を、プログラマブルに設定することができるからである。
【0045】
(第4実施形態)
本実施形態は、DDA26により加算されるべき一定間隔が小数点付きの整数である場合の改良に関する。ここでsの初期値が0であり、一定間隔αが1.5である場合、DDA26は、[0],[1.5],[3.0],[4.5],[6.0]・・・・・という値を出力する。これにより行列における0列目,1.5列目,3.0列目,4.5列目,6.0列目・・・・・の要素が指定されることになる。
【0046】
つまりDDA26による演算結果が"t+β"である場合(tは整数であり、βは小数部分)、t+β列目の要素は、以下の式5により算出されるものとする。
<式5>
data[t+β]=β×data[t]+(1-β)×data[t+1]
この式5において「β×data[t]+(1-β)×data[t+1])」の意義は以下の通りである。即ち、行列においてt+β列目に位置する要素は、t列目に位置する要素の影響をβだけ受け、t+1列目に位置する要素の影響を(1-β)だけ受けていることを意味する。
【0047】
本実施形態に係るデータ処理装置は、二度をかけて行列の要素読み出しを行う。一度目は、行列におけるt列目の要素data[t]と、係数βとを読み出す。ALU内の乗算器24は、要素data[t]にβを乗じて乗算結果β・data[t]をRFに書き戻す。
二度目は、行列におけるt+1列目の要素data[t+1]と、係数βと、乗算結果β・data[t]とを読み出す。ALU内の加算器23は、1-βを算出し、ALU内の乗算器24は、要素data[t+1]に1-βを乗じて乗算結果(1-β)・data[t+1]を得る。アキュムレータ25は、乗算結果β・data[t]と乗算結果(1-β)・data[t+1]とを足し合わせて、β×data[t]+(1-β)×data[t+1]を得る。
【0048】
以上のように本実施形態によれば、複数の画素の画素値を、1.5画素置き、3画素置きに読み出してゆくことができ、第2実施形態に示したフィルタ処理を好適に実行することができる。
(第5実施形態)
本実施形態は、第2実施形態で示したフィルタ処理の結果を得るための改良を開示する。図24は、本実施形態に係るデータ処理装置の内部構成を示す図である。本図では第2実施形態に示した加算器23、乗算器24、アキュムレータ25と、第3実施形態に示したDDA26とを同じALU内に配置して描いている。この他にもシフタ27をALU内に設けている。本図においてDDA26は、4つの入力ポートから入力されてくるオペランドを取り込むよう、パスHA,HB,HC,HDと接続されている。一方シフタ27は、パスHE,HFを介して、パスHA又はHB、パスHDと接続されている。
【0049】
シフタ27は、アキュムレータ25による積算結果に対してシフトを行う。シフトを行うのは以下の2つの意義のためである。1つ目の意義は、アキュムレータ25による積算結果を、これまで加算していった画素の個数で割るという目的のためである。2つ目の意義は、積算結果における小数点の調整の目的である。乗算器24が乗ずるべきフィルタ係数は小数点付き整数であり、この乗算器24による乗算結果も小数点付き整数となる。このような乗算結果をアキュムレータ25が加算してゆくと、積算結果における小数点の位置が変動してしまうことがある。このような小数点位置を元の位置に戻すべくシフタ27がシフトを行うのである。シフタ27は、パスHEを介して入力されてくる積算結果を、パスHFに示されるシフト量だけシフトする。そのシフト結果を、RFに書き込む。以上がシフタ27の説明である。シフタ27の追加に伴い、本実施形態に係るDDA26には以下のような機能追加がなされている。
【0050】
本実施形態におけるDDA26は、ハイブリッド型の加算器として機能するものでありシフタ27のシフトにより小数点が調整された積算結果と、2つの定数C1,C2とのバタフライ演算を実行する。ハイブリッド型の加算器とは、1つのDDA26が2つの加算器の組みとして機能することである。図25は、DDA26がハイブリッド型の加算器としてどのように機能するかを示す図である。本図に示すようにDDA26は、パスHA及びパスHBを介して伝送されてくるデータを加算する加算器、及び、パスHC及びパスHDを介して伝送されてくるデータを加算する加算器として機能する。DDA26が2つの加算器として機能することにより、DDA26は2つの加算処理を同時に実行することができる。
【0051】
またバタフライ演算は、小数点が調整された積算結果と、定数C1との加算(i)、小数点が調整された積算結果から、定数C2を減じる減算(ii)といった(i)(ii)の演算から構成される(ここで定数C2は、定数C1に所定の乗数を乗じてえられたものとなる)。つまりDDA26は、パスHA,HBを介して2つの定数C1,C2を取得すると共に、パスHC,HDを介して積算結果を取得する。これらの積算結果及び定数C1,C2を用いてバタフライ演算を行い、バタフライ演算の演算結果を、RFに書き込む。
【0052】
かかるバタフライ演算は、DCT(Discrete Cosine Transform),FFT(Fast Fourier Transform)といった直交変換処理を行うために必要不可欠な処理である。図24に示した構成により、フィルタ処理の結果に直交変換処理を施すことが容易になるので、画像処理を効率的に行うことができる。
尚、シフタ27のシフト処理の前段又は後段に、積算結果を所定範囲に丸め込むという飽和演算を行うことが望ましい。
【0053】
(第6実施形態)
本実施形態は、第1実施形態〜第5実施形態に示したデータ処理装置を、ビタビ復号に応用する場合の改良に関する。ビタビ復号は、トレリス図から最も確からしい情報系列を探索するという処理にて実現される。図26は、トレリス図の一例を示す。トレリス図は、図26(b)に示すようにノード部にあたる"ステージ"と、エッジ部にあたる"ブランチ"とが複数結合してなる。ステージは、時間t=0,1,2,3のそれぞれにおける受信装置の内部状態を表し、ブランチは、各ステージへと移行する確率であり受信系に一意な値となる。図26のトレリス図においてt=0には、値が"00"であるステージしかない。t=1では、値が"00"であるステージと、値が"10"であるステージの2つがある。t=2では、値が00,01,10,11といった4つのステージがある。実線のブランチjs1は、受信装置への値"00"の入力であり、破線のブランチhs1は、受信装置への値"11"の入力である。受信装置の状態は、このブランチをトリガとしてステージからステージへと遷移する。トレリス図においてステージとブランチとを連鎖してなる一本の経路が情報系列であり、ビタビ復号では、トレリス図に現れる何通りもの情報系列のうち、最も確からしい1つのものを選ぶという処理が行われる。その選別の詳細は以下の通りである。トレリス図には図26(b)に示すように、あるステージと、別のステージとが1つのステージで合流している箇所が何ヶ所かある。この合流点こそ、情報系列の選別のための着眼箇所である。つまり、合流点に至る2つ以上のブランチ及びステージのうち尤度が大きいものを選ぶという処理を、全ての合流点について繰り返す。この繰り返しが、最も確からしい情報系列の特定処理である。情報系列の選別は、1つのステージに合流する複数のステージの値とブランチの値に対してacs演算を行うことにより具現される。つまり、ステージの値とブランチの値との和が小さいものは、この尤度が高いと考えられるので、あるステージに合流する複数のブランチについて、ステージの値とブランチの値との和を求め(acs演算の"a(=add)")、この和を複数のブランチ同士で比較し(acs演算の"c(=compare)")、この和が小さいブランチと、このブランチの分岐元になるステージとを残す(acs演算の"s(=select)")のである。このacs処理を全ての合流点で行う。そうすると尤度が大きいステージ−ブランチを連ねた情報系列を特定することができる。
【0054】
続いてデータ処理装置を用いて、合流点における尤度比較をどのように実現するかについて説明する。図27は、ビタビ復号の実現時にあたってのデータ処理装置に対する機能割り当てを示す図である。PE0〜PE3のRFは、時間tにおけるステージの値及びブランチの値の格納に割り当てられる。つまりPE0のRFには、時間tにおけるステージg0の値と、ステージg0を分岐元としたブランチb0の値とを、PE1のRFには、時間tにおけるステージg1の値と、ステージg1を分岐元としたブランチb1の値とをそれぞれ格納しておく。一方、PE0〜PE3のALUには、時間t+1における複数合流点のそれぞれが割り当てられる。そしてその合流点において、時間tにおけるステージ及びブランチを選ぶためのacs演算を実施する。つまりPE0のALUは、時間tにおけるステージg0の及びブランチb0、時間tにおけるステージg1及びブランチb1のうち、何れを残すかのacs演算を行う。PE1のALUは、時間tにおけるステージg1及びブランチb1、時間tにおけるステージg2及びブランチb2のうち何れを残すかのacs演算を、PE2のALUは、時間tにおけるステージg2及びブランチb2、時間tにおけるステージg3及びブランチb3のうち何れを残すかのacs演算をそれぞれ行う。
【0055】
ネットワーク部20は、トレリス図に従い、時間tにおけるステージを格納したレジスタファイルから、時間t+1における合流点に割り当てられた算術演算ユニットへの入出力を実現する。
レジスタファイル、ネットワーク部と、算術演算ユニットに図27のような機能割り当てを行うことにより、ビタビ復号において最適経路を探索するという処理を好適に実現することができる。
【0056】
図28は、acs(add compare select)演算を好適に行うための本実施形態に係るALUの内部構成を示す図である。図28におけるALUには、図24に示したDDA23、乗算器24、アキュムレータ、DDA26の他に減算器28、セレクタ29、セレクタ30が新規に設けられている。先ず本実施形態に係るDDA26がどのような機能を実現するかについて説明する。DDA26は、acs演算のうち、"add"の部分を実現する。つまり第5実施形態に述べたように、DDA26は、2つの加算処理を同時に実現するというハイブリッド加算機能を有するので、自身と同じレジスタファイルに格納されたステージ及びブランチの加算と、ネットワーク部を介して他のPEのレジスタファイルから転送されてくるステージ及びブランチの加算とを同時を実行する。以上がDDA26についての説明である。続いて本実施形態において新規に設けられた減算器28、セレクタ29、セレクタ30について説明する。
【0057】
減算器28は、acs演算のうち、"compare"の部分を実現する。つまり一方の加算結果から他方の加算結果を減じるという減算を実行する。
セレクタ29は、減算器28による減算結果に基づき、加算結果が大きい方、又は小さい方を選択的に出力する。これによりacs演算のうち、"select"の部分を実現するのである。
【0058】
セレクタ30は、減算器28の減算結果及びセレクタ29の出力の何れか一方を選択的に出力する。
以上のように本実施形態によれば、ビタビ復号において求められる情報経路の探索を、第5実施形態までに示したデータ処理装置の内部構成を用いて好適に実施するので、通信系のメディア処理にデータ処理装置を応用することができ、データ処理装置の用途の範囲を増やすことができる。
【0059】
(第7実施形態)
本実施形態は、複数PE内のRFの読み書きを1つの共通の命令に基づき実現する実施形態に関する。図29は、本実施形態に係るデータ処理装置の内部構成を示す図である。図29においてブロックデコーダ31、変換部32、変換部33、変換部34が新規に設けられていることに注目されたい。
【0060】
ブロックデコーダ31は、以下のフォーマットを有する命令に従って、PE0〜PE15内のRFに対する読み書きを実施する。
オペコード src1,src2,src3,src4,dst1,dst2,dst3
"src"は読出先となる最大4つのレジスタの指定、"dst"は書込先となる最大3つのレジスタの指定を示す。これらの指定にはRFを構成する16個のレジスタのそれぞれの識別番号r0〜r15が用いられる。図29におけるパスph1,2,3,4,5,6,7は、読出先となる4つのレジスタ番号、書込先となる3つのレジスタ番号を伝送するための接続線である。
【0061】
変換部32,33,33は、パスph1,2,3,4,5,6,7に伝送されているレジスタ番号に対して変換を行って、PE0〜PE3のRFに出力する。図30は、PE0における変換部の内部構成を示す図である。ポートE,F,G,H用加算器41,42,43,44は、各PEのポートE,F,G,Hのそれぞれについて設けられており、ブロックデコーダ31から出力されたレジスタ番号に、そのPE固有のオフセットE,F,G,Hを加算して加算結果をRFのポートE、ポートF、ポートG、ポートHに出力する。図29では、説明の便宜のため変換部がPE0〜PE3に接続されている一例を示したがPE0〜PE15の全てに接続してよいことはいうまでもない。
【0062】
ポートI,J,K用加算器45,46,47は、各PEのポートI,J,Kのそれぞれについて設けられており、ブロックデコーダ31から出力されたレジスタ番号に、そのPE固有のオフセットI,J,Kを加算して加算結果をRFのポートI、ポートJ、ポートKに出力する。
ブロックデコーダ31から出力されたレジスタ番号に、そのPE固有のオフセットが加算されてRFのポートE〜ポートKに出力されるので、ブロックデコーダ31の解読結果にて指定されたデータを基準とし、これ入力ポート固有のオフセットを加えたレジスタからデータが読み出されることになる。
【0063】
以上のように本実施形態によれば、16個のPEに含まれているRFからのデータ読み出しを単一の命令にて制御することができるので、データ処理装置をSIMD(Single Instruction Multi Data)プロセッサとして利用することができる。ポートE,F,G,H用加算器41,42,43,44、ポートI,J,K用加算器45,46,47におけるオフセットは、外部から供給される命令に応じて、ブロックデコーダ31が逐次設定できるようにしてもよい。これにより、変換部による変換をプログラマブルに設定することができる。
【0064】
(第8実施形態)
前の実施形態までに示したデータ処理装置は、各PE内のRFに縦16個のデータ列が格納されており、このRFと直列にALUが接続されているので、縦16個のデータ列を垂直方向に加算するという加算処理は効率良く行なえる。しかし、行列を横16個のデータ列毎に水平方向に加算するという加算処理には向いているとはいえない。そこで本実施形態では、前の実施形態までに説明した回路構成の限度内で、かかる水平方向の加算を実現する。
【0065】
水平方向の加算を実現するにあたって、各PE内のRFは、どのように要素の出力を行うべきかについて説明する。
つまり水平方向の加算を実現するには、PEiは、kサイクルにて、レジスタjからデータを読み出せばよい。ここでjは、i,jを式6に適用することにより算出される。
【0066】
<式6>
j=mod((i+k-1)/n)
尚、縦16×横16の一例で説明を行えば説明が複雑になるので、以降の説明は、縦4×横4の要素からなる行列に対して水平方向の加算を行う場合を対象とすることにより簡略化を期す。
【0067】
続いて本実施形態に係るデータ処理装置の内部構成について説明する。尚水平方向の加算は、データ処理装置の内部構成のうち図31に示すものにより実現される。図31は水平方向加算を実現するために必要な構成要素のみをデータ処理装置から抜き出して描いた図である。図31に示すように、水平方向の加算処理は、図31に示すブロックデコーダ31、ポートE用加算器51,52,53,54により実現される。本実施形態に係るブロックデコーダ31は、水平方向の加算を指示する命令の解読を行い、kサイクルにおいてk-1を示す3ビットの値を出力するという処理を行う。
【0068】
ポートE用加算器51,52,53,54は、何れもPE0〜PE3内のRFに接続された変換部内の加算器の1つであり、3ビットのオフセットと、デコーダ31から出力された3ビットの変数k-1とを加算して、加算結果の下位2ビットをRFのポートEに出力する。
図31におけるポートE用加算器51,52,53,54は、構成上は互いに同一であるが、オフセットの値が互いに異なる。つまりポートE用加算器51,52,53,54はそれぞれ、000,001,010,011に設定されている。
【0069】
デコーダの解読結果がk-1=0,1,2,3と変化した場合、ポートE用加算器51,52,53,54の出力がどう変化するかを図32を参照しながら説明する。図32は、4つのRFにおいて読出対象となるレジスタを示す図である。k-1=0がデコーダから出力された場合、ポートE用加算器51,52,53,54の出力結果は000,001,010,011となり、これらのうち下位2ビットが各RFのポートEに出力される。その結果、図32(a)の太い枠で囲んだ範囲が読み出し対象となる。k-1=1がデコーダから出力された場合、ポートE用加算器51,52,53,54の出力結果は001,010,011,100となりそのうち下位2ビットがポートEに出力されるので図32(b)の太い枠で囲んだ範囲が読み出し対象、k-1=2がデコーダ31から出力された場合、ポートE用加算器51,52,53,54の出力結果は010,011,100,001となりポートEに出力されるので図32(c)の太い枠で囲んだ範囲が読み出し対象、k-1=3がデコーダから出力された場合、ポートE用加算器51,52,53,54の出力結果は011,100,101,110となり、図32(d)の太い枠で囲んだ範囲が読み出し対象となる。
【0070】
第1系統セレクタ21は、kサイクルにて、PEiのRFから読み出されたデータを、PEjに出力する。ここでjは、iを式7に適用することにより算出される。
<式7>
j=mod((i+k-1)/n)
k-1=0とした場合、第1系統セレクタ21は、PE0〜PE3のRFから読み出されたデータを、PE0〜PE3のALUに出力する。k-1=1とした場合、第1系統セレクタ21はPE3、PE0、PE1、PE2から読み出されたデータをPE0、PE1、PE2、PE3にそれぞれ出力し、k-1=2とした場合、第1系統セレクタ21はPE2、PE3、PE0、PE1から読み出されたデータをそれぞれPE0、PE1、PE2、PE3にそれぞれ出力する。k-1=3とした場合、第1系統セレクタ21は、PE1、PE2、PE3、PE0からのデータをそれぞれPE0、PE1、PE2、PE3に出力する。
【0071】
以上のように構成された本実施形態に係るデータ処理装置の動作を、図33を参照しながら説明する。図33は、本実施形態に係るデータ処理装置の動作を示す図である。図33(a)はk-1=0の場合、図33(b)は、k-1=1の場合、図33(c)は、k-1=2の場合、図33(d)は、k-1=3の場合をそれぞれ示す。
k-1=0とし、i=0,1,2,3とした場合、(i,j)は、(0,0)(1,1)(2,2)(3,3)となる。これにより図33(a)に示す通り、PE0からはレジスタr0に格納されたdata(0,0)を、PE1からはレジスタr1に格納されたdata(1,1)、PE2からはレジスタr2に格納されたdata(2,2)、PE3からはレジスタr3に格納されたdata(3,3)をそれぞれ読み出す。第1系統セレクタ21は、PE0〜PE3から読み出されたdata(0,0)−data(1,1)−data(2,2)−data(3,3)を、PE0〜PE3のALUに出力する。
【0072】
k-1=1,つまり2サイクルにおいて図33(b)に示す通りPE0からはレジスタr1に格納されたdata(0,1)、PE1からはレジスタr2に格納されたdata(1,2)、PE2からはレジスタr3に格納されたdata(2,3)、PE3からはレジスタr0に格納されたdata(3,0)をそれぞれ読み出し、第1系統セレクタ21に出力する。第1系統セレクタ21はPE3から読み出されたdata(3,0)をPE0のALUに、PE0から読み出されたdata(0,1)をPE1に、PE1から読み出されたdata(1,2)をPE2、PE2から読み出されたdata(2,3)をPE3にそれぞれ出力する。PE0〜PE4のALUは、data(3,0)−data(0,1)−data(1,2)−data(2,3)を、k=1の際に読み出されたdata(0,0)−data(1,1)−data(2,2)−data(3,3)に加算する。
【0073】
k-1=2、つまり3サイクル目において図33(c)に示す通り、PE0からはレジスタr2に格納されたdata(0,2)、PE1からはレジスタr3に格納されたdata(1,3)、PE2からはレジスタr0に格納されたdata(2,0)、PE3からはレジスタr1に格納されたdata(3,1)をそれぞれ読み出し、第1系統セレクタ21に出力する。第1系統セレクタ21はPE2から読み出されたdata(2,0)をPE0に、PE3から読み出されたdata(3,1)をPE1、PE0から読み出されたdata(0,2)をPE2、PE1から読み出されたdata(1,3)をPE3にそれぞれ出力する。
【0074】
k-1=3、つまり4サイクルにおいて図33(d)に示す通り、PE0のRFからはレジスタr3のdata(0,3)、PE1からはレジスタr0のdata(1,0)、PE2からはレジスタr1のdata(2,1)、PE3からはレジスタr2のdata(3,2)がそれぞれ読み出される。第1系統セレクタ21は、PE1からのdata(1,0)をPE0、PE2からのdata(2,1)をPE1、PE3からのdata(3,2)をPE2、PE0からのdata(0,3)をPE3にそれぞれ出力する。以上の繰り返しによりPE0のALUは、data(0,0)−data(3,0)−data(2,0)−data(1,0)の積算を、PE1のALUはdata(1,1)−data(0,1)−data(3,1)−data(2,1)の積算を、PE2のALUはdata(2,2)−data(1,2)−data(0,2)−data(3,2)の積算、PE3のALUは、data(3,3)−data(2,3)−data(1,3)−data(0,3)の積算をそれぞれ行う。
【0075】
以上のように本実施形態によれば、第7実施形態までに説明したネットワーク部20を用いることにより、水平方向に行列の要素を加算してゆくという処理を高速に行うことができる。
尚、本実施形態では説明の都合上、水平方向の加算を行うべき範囲を行列のうち縦4個×横4個の範囲に留めたが、縦16個×横16個の範囲で加算を行うには以下のような変更を加えれば良い。
【0076】
16個のレジスタr0〜r15の全てに対して水平加算を実現するには、ポートEに入力されるべきレジスタ番号を4ビット(0000〜1111)で表現せねばならない。そこでPE0〜PE15における変換部内のポートEのオフセットについては5ビット長で表現する。一方、デコーダ31から出力される変数k-1も5ビット長で表現する。そして5ビット長のオフセットと、5ビット長の変数k-1との加算結果のうち、その下位4ビットを式6の変数jとしてRFのポートEに出力するのである。
【0077】
第1系統セレクタ21は、式7に従い、kサイクルにてPEiのRFから読み出されたデータを、PEjに出力する。
このように逐次処理部21から出力されたデータをPE0〜PE15の算術演算ユニットが積算してゆく。そうすれば、16個のPEの16個のレジスタに対する水平方向の加算を実現することができる。
【0078】
(第9実施形態)
本実施形態は、行列の転置行列を実現する場合のデータ処理装置の改良に関する。メディア処理では、行列の転置変換が必要な場合があり、行列の要素の配置を入れ替えたいケースが多々ある。しかしレジスタ間の結線により配置入れ替えを実現しようとすると、そのレジスタ間の結線のための配線量は「RF内のレジスタ数×PE数」といったオーダーになり、膨大なものとなる。そこで本実施形態では、前の実施形態までに示した構成を巧みに利用して、少ない回路規模で行列の転置変換を実現する。尚、縦16×横16の一例で説明を行えば説明が複雑になるので、以降の説明は、第8実施形態同様縦4×横4の要素からなる行列に対して転置変換を行う場合を対象として簡略化を期する。
【0079】
上述した転置変換は、i行j列に位置する要素(i,j)と、j行i列に位置する要素(j,i)とを入れ替えるという処理を、全ての要素に対して行うことにより実現される。このi,jを本実施形態では以下の<式8>により特定する。
<式8>
j=mod((k+i)/n)
kは、転置変換を初めて何サイクル目かを示す。
転置処理は、以下の処理により実現される。つまりPEiのレジスタjに格納されているデータ(i,j)と、PEjのレジスタiに格納されているデータ(j,i)とを同時に読み出し第1系統セレクタ21及び第2系統セレクタ22に出力する。出力されたデータ(i,j)をPEjのレジスタiに書き込み、出力されたデータ(j,i)をPEiのレジスタjに書き込む。
【0080】
図34は、データ処理装置の構成要素のうち転置変換処理に必要なもののみを選んで示した図である。図31同様、データ処理装置にはブロックデコーダ31、ポートE用加算器51,52,53,54が備えられている。この他にポートJ用加算器55,56,57,58、ポートF用加算器61,62,63,64、ポートI用加算器65,66,67,68が設けられている点は前の実施形態との差違点である。先ず始めに本実施形態におけるブロックデコーダ31、ポートE用加算器51,52,53,54の改良点について説明する。
【0081】
本実施形態に係るブロックデコーダ31は、水平方向の加算を指示する命令の解読を行い、kサイクルにおいて、変数kを示す3ビットの値を出力するという処理を行う。
ポートE用加算器51,52,53,54は、前の実施形態同様、3ビットのオフセットと、デコーダから出力された3ビットの変数kとを加算して、加算結果の下位2ビットをRFのポートEに出力する。オフセットについては、それぞれ000,001,010,011に設定されている。
【0082】
以上が本実施形態におけるブロックデコーダ31、ポートE用加算器51,52,53,54についての改良点である。続いて図34において新規に追加された構成要素について説明する。
ポートJ用加算器55,56,57,58は、ポートE用加算器51,52,53,54同様3ビットのオフセットと、デコーダから出力された3ビットの変数kとを加算して、加算結果の下位2ビットをRFのポートIに出力する。オフセットもポートE用加算器51,52,53,54同様、それぞれ000,001,010,011に設定されている。
【0083】
ポートF用加算器61,62,63,64は、ポートE用加算器51,52,53,54同様、3ビットのオフセットと、デコーダから出力された3ビットの変数kとを加算して、加算結果の下位2ビットをRFに出力する。オフセットはポートE用加算器51,52,53,54と異なり、それぞれ010,011,100,101に設定されている。
ポートI用加算器65,66,67,68は、ポートE用加算器51,52,53,54同様、3ビットのオフセットと、デコーダから出力された3ビットの変数kとを加算して、加算結果の下位2ビットをRFに出力する。オフセットはポートF用加算器51,62,63,64と同様、それぞれ010,011,100,101に設定されている。
【0084】
以上が転置変換を実現するためのデータ処理装置の内部構成である。続いてデコーダの解読結果がk=1,2と変化した場合、ポートE用加算器51,52,53,54、ポートJ用加算器55,56,57,58の出力がどう変化するかを図35及び図36を参照しながら説明する。図35は、変数kの変化に伴う、RFからの出力の遷移を示す図である。図36は、各加算器の出力の遷移により、PE0〜PE3内のRFのうち、どの範囲が読出範囲になるかを示す図である。
【0085】
k=1がデコーダから出力された場合、ポートE用加算器51,52,53,54及びポートJ用加算器55,56,57,58の出力結果は001,010,011,100となり、図36(a)の太い枠で囲んだ範囲が読み出しの対象となる。
一方、ポートF用加算器61,62,63,64及びポートI用加算器65,66,67,68の出力結果は011,100,101,110となり、図36(b)の太い枠で囲んだ範囲が読み出しの対象となる。k=2の場合、ポートE用加算器51,52,53,54及びポートJ用加算器55,56,57,58の出力結果は010,011,100,101となり、図36(c)の太い枠で囲んだ範囲が読み出しの対象となる。
【0086】
以上のように構成されたデータ処理装置の動作を図37及び図38を参照しながら説明する。
k=1の場合、つまり1サイクル目にjがどのように設定されるかについて図37を参照しながら説明する。ここでk=1とし、i=0,1,2,3とする場合、上述した式8によると(i,j)は(0,1)(1,2)(2,3)(3,0)となる。これらには、data(0,1)−data(1,2)−data(2,3)−data(3,0)が格納されているので、図37(a)に示すようにRFからの読み出しにより、これらdata(0,1)−data(1,2)−data(2,3)−data(3,0)が第1系統セレクタ21に出力されることになる。一方k=1とし、i=0,1,2,3とする場合、(j,i)は(0,3)(1,0)(2,1)(3,2)となるので、図37(b)に示すようにこれらに格納されているdata(0,3)−data(1,0)−data(2,1)−data(3,2)は第2系統セレクタ22に出力される。
【0087】
ネットワーク部20は、図37(c)に示すようにRFから読み出された横一行のデータの並びを並べ替えて、各ALUに出力する。変数iに従ったデータの並びを、変数jに従った並びに並べ替えることを意味する。第1系統セレクタ21は、PE0を入力元としたdata(0,1)をPE1に、PE1を入力元としたdata(1,2)をPE2、PE2を入力元としたdata(2,3)をPE3、PE3を入力元としたdata(3,0)をPE0にそれぞれ出力する。
【0088】
一方、RFから第2系統セレクタ22に出力されるデータ列は要素(j,i)であり、水平方向は変数jの順序で並んでいる。第2系統セレクタ22は図37(d)に示すようにこれを変数iの順序に並びかえる。第2系統セレクタ22は、図37(d)に示すようにPE0を入力元としたdata(0,3)をPE3、PE1を入力元としたdata(1,0)をPE0、PE2を入力元としたdata(2,1)をPE1、PE3を入力元としたdata(3,2)をPE2にそれぞれ出力する。
【0089】
RFは、ポートI用加算器65,66,67,68及びポートJ用加算器55,56,57,58の出力に従い、第1系統セレクタ21から出力された横一行の要素を、RFに書き込んでゆく。図37(e)に示すように第1系統セレクタ21を介して出力されたdata(3,0)をPE0のレジスタr3に、data(0,1)をPE1のレジスタr0に、data(1,2)をPE2のレジスタr1に、data(2,3)をPE3のレジスタr2にそれぞれ書き込む。同様に、図37(f)に示すように第2系統セレクタ22から出力されたdata(1,0)をPE0のレジスタr1に、data(2,1)をPE1のレジスタr2、data(3,2)をPE2のレジスタr3に、data(0,3)をPE3のレジスタr0にそれぞれ書き込む。
【0090】
続いてk=2の場合、つまり2サイクル目にjがどのように設定されるかについて図38を参照しながら説明する。k=1における転置を経て、各PE内のRFの内容は、図38(a)のようになっている。ここでk=2とし、i=0,1,2,3とする場合、(i,j)は(0,2)(1,3)(2,0)(3,1)となる。RFは、図38(b)に示すようにPE0からはレジスタr2のdata(0,2)を、PE1からはレジスタr3のdata(1,3)を、PE2からはレジスタr0のdata(2,0)を、PE3からはレジスタr1のdata(3,1)をそれぞれ読み出し、data(0,2)−data(1,3)−data(2,0)−data(3,1)のデータ列を第1系統セレクタ21に出力する。
【0091】
第1系統セレクタ21は、図38(c)に示すようにdata(0,2)−data(1,3)−data(2,0)−data(3,1)のデータ列を、data(2,0)−data(3,1)−data(0,2)−data(1,3)の順序に並べ替える。
RFは、図38(d)に示すようにdata(2,0)をPE0のレジスタr2に、data(3,1)をPE1のレジスタr3に、data(0,2)をPE2のレジスタr0に、data(1,3)をPE3のレジスタr1にそれぞれ書き込む。
【0092】
以上のように本実施形態によれば、ハードウェア規模を増大化させることなく行列の転置変換を実現することができる。
尚、本実施形態では説明の都合上、転置変換を行うべき範囲を行列のうち縦4個×横4個の範囲に留めたが、縦16個×横16個の範囲で転置変換を行うには以下のような変更を加えれば良い。
【0093】
16個のレジスタr0〜r15の全てに対して転置変換を実現するには、ポートE,F,I,Jに入力されるべきレジスタ番号を4ビット(0000〜1111)で表現せねばならない。そこでPE0〜PE15における変換部内のポートE,F,I,Jのオフセットについては5ビット長で表現する。一方、デコーダ31から出力される変数k-1を5ビット長で表現する。そして5ビット長のオフセットと、5ビット長の変数k-1との加算結果のうち、その下位4ビットを式8の変数jとして各RFのポートE,F,I,Jに出力するのである。
【0094】
そのようにしてポートE、ポートFに出力された4ビットの変数jに従いPEiのレジスタjに格納されているデータ(i,j)と、PEjのレジスタiに格納されているデータ(j,i)とが同時に読み出され第1系統セレクタ21及び第2系統セレクタ22に出力される。
第1系統セレクタ21及びIQ部22は、式9に従いkサイクルにてPEiのRFから読み出されたデータを、PEjに出力する。
【0095】
ポートI、ポートJに出力された4ビットの変数jに従いレジスタファイルは、出力されたデータ(i,j)をPEjのレジスタiに書き込み、出力されたデータ(j,i)をPEiのレジスタjに書き込む。このような読み書きを実現することにより、16個のPEの16個のレジスタに対する転置変換が実現される。
(第10実施形態)
本実施形態は、ブロックデコーダ31の周辺構成を開示するための実施形態である。図39は、本実施形態に係るデータ処理装置の内部構成を示す図である。図39において、フェッチ部72、命令メモリ73、プログラムカウンタ74、外部メモリデバイス75が新規に追加されている点に着目されたい。
【0096】
本図においてブロックデコーダ31は、全体デコーダ71と接続されている。フェッチ部72は、命令列を記憶している命令メモリ73から、プログラムカウンタ74により指示されるアドレスの命令を取り出し、全体デコーダ71は、取り出された命令を解読する。解読された命令がRFの読み書きを伴うものなら、ブロックデコーダ31に命令解読及びRFに対する読み書き制御を委ねる。
【0097】
ここで全体デコーダ71について説明する。ブロックデコーダ31は既に述べたようにRFの読出先、書込先のレジスタを指定していた。これに対して全体デコーダ71は、命令に対して、分岐制御を実現する。ここで取り出された命令が、分岐先を絶対アドレスで指定している場合、全体デコーダ71は命令のオペランドから即値として指定されている絶対アドレスを取り出し、プログラムカウンタ74に書き込む。分岐先が相対アドレスで指定されている場合、全体デコーダ71は命令のオペランドから即値として指定されている相対アドレスを取り出し、この相対アドレスをもとに分岐先を算出して、算出された分岐先をプログラムカウンタ74に書き込む。
【0098】
全体デコーダ71による分岐制御と、ブロックデコーダ31によるレジスタの読書制御との時間的な関係について説明する。図40は、データ処理装置の動作タイミングを示すタイミングチャートである。本図において"IF1 IF2"は、メモリデバイスから命令を取り出すステージであり、"DEC1ステージ"は全体デコーダ71により命令の解読がなされるステージである。"DEC2ステージ"とは、命令にオペランドが指定されており、オペランドを用いて演算を行うことにより、読出先及び書込先レジスタの指定が特定される場合に、その演算が実施されるステージである。つまり全体デコーダ71、ブロックデコーダ31は、DEC1ステージ、DEC2ステージという2つのデコードステージにおいて別々に実行されるのである。
【0099】
分岐制御のための全体デコーダ71と、レジスタの読書制御のためのブロックデコーダ31とを別構成とし、それぞれを別のデコーダステージで実行させたのは、マシンサイクルの長期化を避けるという目的である。仮に全体デコーダ71とブロックデコーダ31とを一体構成とした場合、全体デコーダ71とブロックデコーダ31とがクリティカルパスを構成することになり、分岐制御に要する期間T1と、演算制御に要する期間T2とを足し合わせた期間T1+T2に基づき、データ処理装置のマシンサイクルは設定され、マシンサイクルは長めになってしまう。そこで本実施形態では、分岐制御を行う全体デコーダ71と、読書制御を行うブロックデコーダ31とを別構成とし、分岐制御及び演算制御を別々のデコーダステージで実行している。これにより分岐制御に要するT1、読書制御に要するT2の何れか長い方を目安に、データ処理装置のマシンサイクルを決定することができ、データ処理装置を高速動作させることができる。
【0100】
参考のため、第1実施形態〜第9実施形態に示した各処理がなされる場合の動作タイミングを、図40〜図43を参照しながら説明する。
図40におけるEX1,EX2,WBステージは、第2実施形態に示したようなフィルタ演算をALUが行う際のタイミングチャートである。
加算器23によるオペランドCとオペランドBとを加算ks1は、EX1ステージ、乗算器24による加算結果(オペランドB+オペランドC)とオペランドAとの乗算jz1はEX2ステージ、アキュムレータ25による乗算結果オペランドA×(オペランドB+オペランドC)と、オペランドCとの加算ks2は、WBステージにて実行されている。
【0101】
図41は、あるPE内のRFの格納値を、別のPE内のRFに書き込む場合の動作を示すタイミングチャートである。
DDA26による加算は、全体デコーダ71による解読がなされるDEC1ステージでなされていることがわかる。ブロックデコーダ31によるデコーダと、そのデコーダ結果に基づくレジスタ格納値の読み出しとは、DEC2ステージにて実行されている。ネットワーク部20によるレジスタ格納値の入出力は、EX1ステージで行われ、RFへのレジスタ格納値の書き込みは、WBステージで実施されている。
【0102】
図42は、シフタ27によるシフト動作時の動作タイミングチャートを示す図である。DDA26によるシフトは、EX1ステージにて実行されていることがわかる。図43は、acs演算時の動作タイミングを示すタイミングチャートである。本図において加算器による加算はEX1ステージ、減算器及びセレクタによるCompare Select処理はEX2ステージで行われることがわかる。
【0103】
(第11実施形態)
本実施形態は、LookUpテーブルを用いた画像処理を効率化する場合の改良に関する。Look Up Table(LUT)とは、何通りかの色彩のパターンを表現したテーブルであり、1通りの色彩パターンを構成する輝度、赤色差、青色差、混合比を示すエントリーを複数配してなる。
【0104】
LUTに示される複数の色彩パターンのうち、任意の2色,4色,16色を用いて描画される映像をOSDグラフィクスといい、身近な例でいえば、DVDプレーヤやSTB等の機器においてユーザの操作に伴って、ディスプレィ上に描画されるチャネル番号や再生、停止の表示等がこのOSDグラフィックスである。
複数のPEのそれぞれがOSDグラフィックスの描画を行う場合、このLUTを各PEにどのように割り当てるかが問題となる。仮に16個のPEが1つのLUTを共用する場合を考える。この場合、LUTがメモリデバイスで占有するメモリ領域は、1つのLUT分の規模で済み、メモリデバイスの規模は小規模で済む。しかし1つのPEがLUTを使用できる確率は1/16となり、LUTを使用するために、多くのPEが、LUTの使用待ちに陥り、PEの処理効率が大きく低下してしまう。一方、16個のPEのそれぞれに対してLUTを個別に割り当てる場合は、PE間でLUTの使用の競合が起こり得ず、画像処理の効率が低下することはない。その一方で16個ものLUTをメモリデバイスに格納しておかねばならないから、メモリデバイスの大容量化は避け得ない。
【0105】
LUTを各PEにどのように割り当てるかは、メモリデバイスの規模及びPEの作業効率を大きく左右する。本実施形態ではこれらの点に鑑み、メモリデバイスの規模抑制と、PEの作業効率の向上とが両立できるように、データ処理装置を構成する。
図44は、本実施形態に係るデータ処理装置の内部構成を示す図である。本図では4つのPEがひとまとまりになって1つの"ベクトル演算部"を構成している。図45では、PE0〜PE3がベクトル演算部80、PE4〜PE7がベクトル演算部81、PE8〜PE11がベクトル演算部82、PE12〜PE15がベクトル演算部83をそれぞれ構成している。またデュアルポートメモリが(図中のD.P.メモリ84、85、86、87)設けられており、4つのベクトル演算部80〜83のそれぞれに対して、1対1の比率で接続されている。
【0106】
ベクトル演算部80と、D.P.メモリ84の内部構成を図45に示す。図45に示すようにD.P.メモリは、4つのバンク領域(Bank0、Bank1、Bank2、Bank3)を含み、ベクトル演算部80を構成するPE0,PE1,PE2,PE3のRFには、第1LUTセレクタ88、第2LUTセレクタ89が接続されている点に注目されたい。
先ず始めにD.P.メモリ84について説明する。D.P.メモリ84を構成する4つのバンク領域のうちBank3はLUTを構成する16個のエントリーe[0]〜e[15]のうちe[0]〜e[3]を、Bank2はe[4]〜e[7]を、Bank1はe[8]〜e[11]を、Bank0はe[12]〜e[15]をそれぞれ格納している。このようにD.P.メモリ84を構成する4つのバンクは、LUTを構成する16個のエントリーを、4エントリーずつ格納しているのである。各バンクは、2つの出力ポートv,wを有しており、自身に格納されている4つのエントリーのうち任意の2つを、2つの出力ポートv,wを通じて別々のPEに出力することができる。以上がD.P.メモリ84の内部構成である。続いて第1LUTセレクタ88、第2LUTセレクタ89について説明する。
【0107】
第1LUTセレクタ88は、4つの入力ポートと、4つの出力ポートとを有する4入力-4出力セレクタである。4つの入力ポートは、4つのバンクのそれぞれに対応しており、各入力ポートは、対応するバンクの出力ポートvと接続されている。一方4つの出力ポートは、4つのPEのそれぞれと対応しており、各出力ポートは、対応するRFの入力ポートXと接続されている。
【0108】
第2LUTセレクタ89は、第1LUTセレクタ88同様、4つの入力ポートと、4つの出力ポートとを有する4入力-4出力セレクタである。4つの入力ポートは、4つのバンクのそれぞれに対応しており、各入力ポートは、対応するバンクの出力ポートwと接続されている。一方4つの出力ポートは、4つのALUのそれぞれと対応しており、各出力ポートは、対応するRFの入力ポートYと接続されている。
【0109】
図46の左半分は、ベクトル演算部80のD.P.メモリ84におけるバンクに格納されたデータがどのように読み出され、どのように各PEに出力されるかを示す図である。Bank3からはe[1]、Bank2からはe[4]、Bank1からはe[11]、Bank0からはe[12]がそれぞれ読み出されている。一方、Bank1からのe[11]は第1LUTセレクタ88によりPE0内のALU、Bank2からのe[4]はPE1内のALU、Bank0からのe[12]はPE2内のALU、Bank3からのe[1]はPE3内のALUにそれぞれ出力されていることがわかる。
【0110】
図46の右半分は、ベクトル演算部81のデュアルポートメモリ85におけるバンクに格納されたデータがどのように読み出されるかを示す図であり、Bank1からはe[9],e[10]、Bank2からはe[5]、Bank3からはe[2]が読み出され、LUTセレクタによりe[9]はPE4、e[2]はPE5、e[5]はPE6にそれぞれ出力される。一方、Bank2から読み出されたe[10]は、PE7に出力される。
【0111】
以上のように、LUTを4つのバンクに分割して格納しており、このバンクは、格納されているエントリ情報を2つのPEに供給することができるので、1つのバンクに格納されているエントリ情報の読み出しを、3つ以上のPEが要求する場合を除き、PEがLUTの参照待ちに陥ることはあり得ない。PEは、LUTにおける必要なエントリ情報を、必要に応じて随時参照できるので、LUTを用いたOSDグラフィックスの描画を、複数PEを用いて高速に実現することができる。またLUTは4つのPEにつき1つが割り当てられているので、メモリデバイスの規模を抑制することができる。
【0112】
(第12実施形態)
本実施形態は、ネットワーク部20による入出力の指定を実現するための構成を開示する。図47は、本実施形態に係るデータ処理装置の内部構成を示す図である。図47において特徴的なのは、PE0内のALUに入出力指定レジスタ90が設けられている点である。入出力指定レジスタ90は、ネットワーク部20による入出力を規定するレジスタである。図48は、入出力指定レジスタ90の詳細を示す図であり、本図(a)に示すようにプロセッシングエレメント数と同数のエントリーとからなる。各エントリーは、入力元となるPEに対応しており、各エントリーには、PEの格納値を格納すべき出力先PEを指定することができる。図48(b)は、入出力指定レジスタ90の設定例を示す図である。本図における入出力指定レジスタ90は、PE0〜PE4という4つのPEに対応するPE0エントリー、PE1エントリー、PE2エントリー、PE3エントリーからなる。またこれら4つのエントリーには、PE番号"2","3","0","1"が設定されている。これらのエントリーの設定によるセレクタの入出力を表したのが図48(b)である。この図48(b)に示すように、PE0からPE2への入出力nk1、PE1からPE3への入出力nk2、PE2からPE0への入出力nk3、PE3からPE1への入出力nk4が同時に実行されている。これらの入出力の同時実行により、PE0、PE1、PE2、PE3におけるRFの格納値を、それぞれ他のPEのALUに引き渡すことができる。入出力指定レジスタ90は、ブロックデコーダ31により設定される。つまりブロックデコーダ31が命令の解読を行った際、この解読結果に従って設定されるのである。これによりネットワーク部20における入出力を制御することが可能となる。
【0113】
以上のように本実施形態によれば、どのPEのRFの格納値を、どのPEのALUに転送するかという入出力の組み合わせを入出力指定レジスタ90を用いて実現することができるので、ネットワーク部20の制御を容易に実現することができる。
(第13実施形態)
本実施形態は、値を読み出すべきレジスタの指定と、値を書き込むべきレジスタの指定とを含む命令をブロックデコーダ31が解読することにより、レジスタの読み書きを実現する。
【0114】
そのような命令の一例としてネットワークセレクト命令について説明する。以下に、ネットワークセレクト命令のフォーマットを示す。
scsel src,dst
本フォーマットにおいて"src"は読出先の指定、"dst"は書込先の指定である。これらにはRFを構成する16個のレジスタのそれぞれの識別番号r0〜r15が用いられる。図48(c)は、ネットワークセレクト命令の一例と、その命令の解読によりどのような読み書きが行われるかを示す図である。どのPEのレジスタを読出元とするかの指定、どのPEのレジスタを書込先とするかの指定は、前の実施形態で述べた入出力指定レジスタ90の設定に基づく。レジスタの読み書きは、入出力指定レジスタ90の指定と、命令のオペランドの指定とにより実現される。図48(b)における入出力指定レジスタ90では、PE0〜PE3に対する出力先が、PE2、PE3、PE0、PE1に設定されている。またネットワークセレクト命令は、レジスタr0を読出元、レジスタr1を書込先に指定しているので、PE0〜PE3のRFにおけるレジスタr0が、PE2、PE3、PE0、PE1といった並びに並べ替えられ、PE0〜PE3のレジスタr1に書き込まれる。
【0115】
より高度な命令として、ネットワークシフト命令について説明する。ネットワークシフト命令の命令フォーマットは以下の通りである。
scsfti src1,src2,dst,imm
本図においてネットワークシフト命令は、"src1 src2"にて指定されるレジスタ列の格納値を、"imm"だけシフトしてその結果を"dst"にて指定されるレジスタに書き込む旨を示す。図49(a)は、ネットワークシフト命令の具体的な設定例と、その設定時にレジスタの読み書きがどのように実行されるかを示す図である。図49(b)は、ネットワークシフト命令の解読前の1つのプロセッシングエレメント内のRFの格納内容を示す。図49(a)の具体例では、src1、src2にレジスタr0、レジスタr1が指定され、immが"3"に指定されている。一方、PE0〜PE3のレジスタr0及びレジスタr1の格納内容は、図49(b)に示す通りであるものとする。この図49(b)に示したRFの格納内容に対して、"3"だけシフトが行われれば、レジスタr0、レジスタr1の格納内容は図49(c)のようになる。つまりPE3のレジスタr0に格納されていたd3がPE0のレジスタr0に格納される。このようにシフトがなされた後、レジスタr0からレジスタr2への転送を行なえば、レジスタr2の格納内容は図49(d)のようになる。
【0116】
ネットワークシフト命令の他の一例を図50に示す。図50(a)に示すネットワークシフト命令は、シフト量であるimmが"-2"に指定されているので、図50(b)に示すPE0〜PE3のレジスタr0及びレジスタr1に格納されているd0〜d7は、図50(c)のようにシフトされる。
immが"-2"に指定されているので、PE3のレジスタr0に格納されていたd3がPE1のレジスタr1に、PE2のレジスタr0に格納されていたd2がPE0のレジスタr1にそれぞれ格納されている。このようにシフトされた後、PE0〜PE3のレジスタr0に格納されているデータが、PE0〜PE3のレジスタr1に転送されるのである。
【0117】
以上のように本実施形態によれば、RFにおける格納値を、水平方向に自由に移動させることができるので、データ処理装置によりなされる処理のバリエーションを増やすことができる。
尚、データ処理装置とは別に、本実施形態で開示したscsel命令又はscsfti命令を含むプログラムのみを記録媒体に記録して譲渡・貸与してもよい。またこのプログラムのみをネットワークを介して配信してもよい。
【0118】
(第14実施形態)
本実施形態は、ALUが演算を行った後のALUの状態を示す状態フラグをRFに格納させておく場合の改良に関する。図51は、本実施形態に係るレジスタの格納内容を示す図である。レジスタが16bitの語長を持っている点は第1実施形態と同様であるが、このうち上位3ビットが状態フラグに割り当てられている点が第1実施形態との差違点である。状態フラグは、PE内のALUの演算結果がゼロになった旨を示すゼロフラグ、PE内のALUの演算結果に桁上げが生じた旨を示すキャリーフラグ、ALUの演算が比較演算である場合の比較結果を示す比較結果フラグからなる。
【0119】
本実施形態のPEにおけるALUは、演算を行えば、この演算結果と、状態フラグとを一ワードにして同じPEに含まれる何れかのRFに書き込む。演算結果と共に状態フラグが1つのレジスタに書き込まれるので、あるPE内のALUが行った演算結果に応じて、他のPE内のALUが演算を行うという、ALU同士の連携を実現することができる。
【0120】
図52は、本実施形態におけるALUの動作を示す図である。本図において▲1▼に示すようにRFから値P,Qを読み出して、PE0のALUがP+Qといった演算を行ったものとする。その後、演算結果P+Qと、その演算結果において桁溢れが生じたか否かを示すキャリーフラグとが▲2▼に示すようにRFに書き込まれる。このようにRFに状態フラグが書き込まれるので、PE1のALUは、PE0のRFに書き込まれた状態フラグを▲3▼に示すように転送して参照することにより、PE0による演算時に桁溢れが生じたか否かを知ることができ、それに応じた演算を実行することができる。
【0121】
以上のように本実施形態によれば、ALU同士の連携を実現することができる。
(第15実施形態)
PEがハーフワード単位で処理を実施する場合の改良に関する。第2実施形態に示したような画像処理をデータ処理装置が実施する場合、RFに画素値やフィルタ係数を格納していた。ここでフィルタ係数のデータ長は、レジスタの語長(1シングルワード)であるのに対し、画素値の語長は、レジスタの語長の半分(ハーフワード)で足りる場合がある。そのため、RFへの画素値の格納にあたっては、RFの各レジスタr0〜r15のそれぞれに、2つの画素の画素値を格納しておくことが可能となる。そうなると1つのPEのRFには、16×2個の画素値を詰め込んでおくことが可能となる。またALUにおいても、ハーフワードの画素値と、シングルワードのフィルタ係数との乗算を2つ同時に実行することができれば、画素値に対する処理効率が増す。図53は、シングルワードとハーフワードとの乗算をなしえる乗算器24の構成を示す図である。本図において乗算器24は2つの乗算を実施する。1つ目の乗算は、パスPt1を通じて入力されてくるシングルワードのフィルタ係数と、パスPt2を通じて入力されてくる下位ハーフワード(図中の"L")の画素値との乗算であり、2つ目の乗算は、パスPt3を通じて入力されてくるシングルワードのフィルタ係数と、パスPt4を通じて入力されてくる上位ハーフワード("図中のH")の画素値との乗算である。
【0122】
以上が乗算器24の内部構成である。ALUにおける乗算器24の周辺構成について説明する。本実施形態において加算器23は、入力ポートCから入力されてくる2つのハーフワードの画素値と、入力ポートDから入力されてくる2つのハーフワードの画素値とを個別に加算する処理を行い、そうして得られる2つのシングルワードの加算結果のうち上位側をパスPt4に出力し、下位側をパスPt2に出力する。乗算器24は、シングルワードとハーフワードとの乗算を2つ同時に行う。こうして得られた2つの乗算結果(SW・上位HW及びSW・下位HW)を、アキュムレータ25は積算してゆく。
【0123】
以上のように本実施形態によれば、RFの各レジスタに、2つのハーフワードの画素値を格納しておき、ALUはこれらの画素値に対するフィルタ処理を2つ同時に実施するので、多くの画素値に対する画像処理を効率化することができる。
(第16実施形態)
前の実施形態では、RFはハーフワード単位で画素値の格納を行い、ALUはハーフワード単位で画素値の乗算を行ったが、本実施形態はこれに伴うネットワーク部20の改良である。
【0124】
図54は、本実施形態に係るネットワーク部20の内部構成を示す図である。本図においてネットワーク部20を構成する第1系統セレクタ21は、第1実施形態に示した通り16個の出力ポートを有し、16個のデータを16個のALUに同時に転送する。図中のパスth0,th2,th4,th6は、RFの格納値をそのままALUに伝送する接続線である。これとは他に、本実施形態におけるネットワーク部20にはパスth1,th3,th5,th7が設けられていることがわかる。これらのパスは、PE0のRFの格納値の上下ハーフワードを入れ替えることにより得られた反転データをALUに伝送する接続線である。セレクタ91,92,93,94,95,96,97,98は、パスth0,th2,th4に伝送される格納値、パスth1,th3,th5に伝送される格納値の何れか一方を、選択的に出力する。
【0125】
以上のように本実施形態によれば、上下ハーフワードが入れ替えられたシングルワードがネットワーク部20からALUに伝送されるので、ALUがオペランドとして利用できるシングルワードの組み合わせのバリエーションを増やすことができる。
尚、本実施形態において各レジスタファイルの出力ポートから出力されるべきデータ(i)と、これの上下ハーフワードを反転した反転データ(ii)との双方を、各レジスタファイルから受け付けて、入力元を2×n個とし、出力先をn個とした入出力を実施する2・n入力−n出力セレクタをネットワーク部20に設けてもよい。
【0126】
また入出力の対象となるデータは、レジスタファイルの1つのレジスタから読み出されたデータとしたが、あるレジスタから読み出されたハーフワードのデータと、他のレジスタから読み出されたハーフワードのデータを結合した結合データであってもよい。
(第17実施形態)
本実施形態は、第1実施形態に示したデータ処理装置構成を応用して、複素数演算を実現する。一般に複素数は、実数と、虚数とからなる。複素数P+Qiと、複素数R+Siとの加算結果は、(P+R)+(Q+S)iとなり、複素数P+Qiと、複素数R+Siとの乗算は、(P・R-S・Q)+(Q・R+S・P)iとなる。以上のことから複素数同士の加算は、実数と、虚数とを区別して加算せねばならないし、複素数同士の乗算では、実数と虚数との加減算を個別に実行せねばならない。これらの制約がある演算を、本実施形態ではデータ処理装置を用いて実現する。図55は、複素数演算を行う場合のRFの格納例を示す図である。加算演算のオペランドとなる実数部P、虚数部Q、実数部R、虚数部Sはそれぞれ個別のレジスタr0〜r3に格納されていることがわかる。またレジスタr4は演算結果のうち実数部分の格納先に、レジスタr5は、演算結果のうち虚数部分の格納先にそれぞれ割り当てられている。ALUの内部構成は第2実施形態に示したALUの内部構成と同一である。
【0127】
図56は、図55の格納内容に対してALUがどのような演算を実現するかを示す図である。矢印▲1▼及び▲2▼に示すように、RFから実数部P、実数部Rがそれぞれ転送され、これらの実数同士の加算が▲3▼に示すようにアキュムレータ25によりなされていることがわかる。更にこれらの加算結果P+Rは、▲4▼に示すようにRFのレジスタr4に書き込まれている。続いて矢印▲5▼、▲6▼に示すように虚数部Q、虚数部Sがそれぞれ転送され、これら虚数同士の加算が▲7▼に示すようにアキュムレータにより実行され、その結果S+Qが▲8▼に示すようにRFのレジスタr5に書き込まれる。
【0128】
続いて複素数同士の乗算がどのように行われるかについて説明する。図57及び図58は複素数同士の乗算手順を示す図である。先ず始めに、実数部P、実数部Rが図57(a)の▲1▼、▲2▼に示すようにRFからALUに転送されている。この実数部Pと実数部Rとの乗算が乗算器24によりなされ、演算結果P・Rが▲4▼に示すように演算結果の格納先たるレジスタに書き込まれる。続いて虚数同士の乗算を実現すべく、虚数部Q及び虚数部Sを図57(b)の▲5▼及び▲6▼に示すようにRFから読み出す。乗算器24は、▲7▼に示すように虚数部Qと虚数部Sとの乗算を行い、RFから乗算結果P・Rを▲8▼に示すようにアキュムレータ25に読み出す。
【0129】
アキュムレータ25は、▲9▼に示すように乗算結果S・QをP・Rから減じる。これにより乗算結果(P・R-S・Q)が算出され、この実数(P・R-S・Q)をRFのレジスタr4に書き込む。続いて実数と虚数との乗算を行うべく、図58(a)の▲1▼▲2▼に示すように実数部Pと虚数部SとをRFから読み出す。乗算器24は▲3▼に示すようにこれらの乗算を行って、乗算結果P・Sを▲4▼に示すようにRFのレジスタr5に書き戻す。その後、図58(b)の▲5▼及び▲6▼に示すように虚数部Qと実数部RとをRFから読み出す。乗算器24は▲7▼に示すようにこれらの乗算を行い乗算結果Q・Rを得る。一方、▲8▼に示すように乗算結果P・SをRFのレジスタr5から読み出し、アキュムレータ25は▲9▼に示すように乗算結果Q・Rと乗算結果S・Pとを足し合わせる。これにより(Q・R+S・P)がえられるので、RFのレジスタr5に書き戻す。以上の処理を経て乗算結果(P・R-S・Q)+(Q・R+S・P)iがえられることになる。
【0130】
以上のように本実施形態によれば、第1実施形態に示したデータ処理装置を応用することにより、複素数同士の加算、乗算を実現するので、データ処理装置をπ/4QPSK変調等、通信系のメディア処理へと応用することができる。
(第18実施形態)
第8実施形態では、縦n個×横n個の要素、つまり縦横の要素数が同じである行列に対して、横方向の積算を行った。本実施形態はこれの応用であり、縦横の要素数が異なる行列において、横方向の積算を実施するものである。図59(a)は、縦n個×横n個の要素からなる行列中に存在する、縦y個×横x個の要素からなる行列を示す図である。本図において、x,yは何れもx≦n,y≦nの関係を満たし、またx>yの関係がある。このような行列に対して、横方向の積算を実施する。
【0131】
第8実施形態の図32、図33に示した横方向の積算は、縦横の要素数が同一の行列に対してなされるものである。従って、図59(a)に示す縦y個×横x個の行列に対しては、第8実施形態の処理は実行できない。そこで、図59(a)の縦y個×横x個の行列に、ハッチングht1を付した縦x-y個×横x個を加えて、図59(b)に示すような縦x個×横x個からなる行列を作成し、第8実施形態の手順の適用対象とする。縦x-y個×横x個の要素は、全て0(ゼロ)であり、この縦x-y個×横x個が加わった縦x個×横x個に対して第8実施形態の横方向の積算処理を行えば、縦y個×横x個の行列において横方向の積算結果が得られる。
【0132】
第8実施形態の積算処理を実行するにあたっては、上述した<式7>を以下のように改変することによりi,kからjを得る必要がある。
<改変された式7>
j=mod((i+k-1)/z)
ここでzは、x、yのうち、大きい方を示す。
【0133】
尚、x>yではなく、x<yの関係があっても、x=yの関係があっても本実施形態の手順は適用可能である。
(第19実施形態)
第9実施形態では、縦n個×横n個の要素、つまり縦横の要素数が同じである行列に対して、行列の転置を行った。本実施形態はこれの応用であり、縦横の要素数が異なる行列において、行列の転置を実施するものである。図60(a)は、縦n個×横n個の要素からなる行列中に存在する、縦y個×横x個の要素からなる行列を示す図である。本図において、x,yは何れもx≦n,y≦nの関係を満たし、またx>yの関係がある。このような行列に対して、転置を実施する。
【0134】
第9実施形態の図36、図37、図38に示した横方向の積算は、縦横の要素数が同一の行列に対してなされるものである。従って、図60(a)に示す縦y個×横x個の行列に対しては、第9実施形態の処理は実行できない。そこで、第18実施形態と同様のアプローチを行う。つまり図60(a)に示す縦y個×横x個の行列にハッチングht2を付した縦x-y個×横x個を加えて、図60(b)に示すように縦x個×横x個からなる行列を作成し、第8実施形態の手順の適用対象とする。縦x-y個×横x個の要素は、全て0(ゼロ)であり、この縦x-y個×横x個が加わった縦x個×横x個に対して第9実施形態の転置の処理を行う。そうすると、図60(c)に示すような縦x個×横x個の行列が得られる。この行列は、縦x個×横y個の行列と、縦x個×横x-y個の行列とからなる。こうして得られた図60(c)の縦x個×横x個の行列から、縦x個×横x-y個の行列を取り出せば、結果としての行列に対する転置が得られることになる。
【0135】
縦x行、横y行の要素からなる行列に対して、第9実施形態の転置処理を行う場合には、上述した<式8>を以下のように改変することによりi,kからjを得る必要がある。
<改変された式8>
j=mod((i+k-1)/z) ここでzは、x,yのうち大きい方を示す。
尚、x>yではなく、x<yの関係があっても、x=yの関係があっても本実施形態の手順は適用可能である。
【0136】
(第20実施形態)
第20実施形態は、16個のPTのそれぞれに具備されているレジスタファイルのシフト動作を利用して、データ処理装置を無線通信システムに適用する場合の改良に関する。無線通信システムのどのような技術に適用するかというと、デ・インターリーブ技術に、適用するのである。
【0137】
無線通信システムでは、当該システムから送信されるビット系列が符号化された信号に、ランダムノイズやフェージング等により、ランダム誤りやバースト誤りが発生する場合がある。そこで、部分的に連続して起こるバースト誤りに対し、元のビット系列の順番を入れ替えるインタリーブを行うことによって誤りビットを分散させている。
【0138】
このインタリーブの一般的な技術の1つとして、ブロックインタリーブがある。ブロックインタリーブとは、元のビット系列において、互いに隣接している各2ビットが一定ビット数単位の間隔をおくように元のビット系列を並び替えることをいい、例えば、ブロックインタリーブ前のビット系列が、「B1、B2、B3、B4、B5、....,B288 」であるとすると、このビット系列のビット順を「B1、B17、B33、B49、B65、B81、B97、B113、B129、B145、B161、B177、B193、B209、B225、B241、B257、B273、B2、B18....、B288」というように、元のビット系列において、隣接していた各2つのビット(例えばB1とB2、B17とB18)が各17ビットの間隔を置くように並び替えることをいう。図61にブロックインタリーブ前と後のビット系列のビット順を示す。図61では、簡略化するために、各ビットを数字で表している。図61において示すように、テーブルの横方向のビット順はブロックインタリーブ前のビット順を示し、テーブルの縦方向のビット順は、ブロックインタリーブ後のビット順を示す。
【0139】
一方、ビット系列の伝送方法によっては、特定番目の送信ビットの誤り率が特に高くなる場合がある。例えば、16QAM変調でビット系列を伝送する場合、偶数番目に送信されるビットの誤り率が高くなることが経験的に認識されている。
この場合、デ・インタリーブを行うことにより、元のビット系列に並べ替えても、誤りのビットが連続して並ぶことになり、デ・インタリーブされたビット系列の復号を行う場合に、誤り訂正機能により、誤りを修正できない事態が発生することになる。
【0140】
このような事態の発生を防ぐために、ブロックインタリーブによって並べ替えられたビット系列を一定数のビット単位のブロックに区分し、区分した各ブロック内のビットの順序を所定のローテーション規則に従って、並べ替えることが行われている。
図62は、ブロックインタリーブされたビット系列が上記ローテーション規則に従って、並び替えられた後のビット系列のビット順を示す。図62に示すビット系列においては、ビット系列が3ビット単位のブロックに順次区分され、区分された各ブロック内の各ビットの順序が、元順序であるローテーション1の順序、元順序の1番目のビットが3番目に、2番目のビットが1番目に、3番目のビットが2番目にローテーションされたローテーション2の順序、元順序の1番目のビットが2番目に、2番目のビットが3番目に、3番目のビットが1番目にローテーションされたローテーション3の順序に、6ブロック単位でローテーションされ、18ブロック毎にローテーション1、ローテーション2、ローテーション3が一巡するように並び替えられている。
【0141】
これにより、上記の事態の発生を防止することができる。無線通信システムの受信側においては、上記のように並び替えられたビット系列を元の順序のビット系列に復元するために、受信した各ビットについて、当該ビットの並び替え前の元の位置を示す各アドレスをメモリに記憶し、受信した各ビットを、メモリに記憶した各アドレスに従って、並び替える処理が行われている。
【0142】
しかしながら、上記のように、アドレスを記憶するためにメモリを使用することとすると、その分、電力の消費及びハードウェア面積が大きくなるという問題がある。そこで第20実施形態におけるデータ処理装置は、復調された各ビットの元の位置を示すアドレスを記憶するためのメモリを必要とせずに、デ・インターリーブを行う。
【0143】
以下、第20実施形態に係るデータ処理装置について、図面を用いて詳細に説明する。
データ処理装置は無線通信システムで用いられる装置であり、データ処理装置が受信するビット系列は、直交振幅変調(Quadrature Amplitude Modulation)である64QAMの変調方式で変調されたものである。
【0144】
64QAMの変調方式で直交振幅変調されるのは、同相信号(I信号)及び直交信号(Q信号)である。I信号とQ信号は、元のビット系列を並び替え、並べ替えられたビット系列を3ビットのビット単位(以下、「マッピングビット」という。またこの3ビットをブロック、ビットデータともいう。)毎に、位相と振幅を示すデータ(同相成分I又は直交成分Qから構成されるデータ)に変換して、変換されたデータを逆高速フーリエ変換(IFFT)演算することにより得られる。この並べ替えは以下の通りである。元のビット系列は、隣接している各ビット間の間隔が17ビットになるようにインタリーブされた後、インタリーブされたビット系列を3ビット単位のブロックに順次区分して、6ブロック毎に各ブロック内の各ビットの順序(以下、「ブロック内元順序」という。)を、元順序(1、2、3の順)、2、3、1の順序(ブロック内元順序2番目を1番目に、3番目を2番目に、1番目を3番目に並び替えた順序)、3、1、2の順序(ブロック内元順序3番目を1番目に、1番目を2番目に、2番目を3番目に並び替えた順序)の3通りの順序で周期的に並び替えられる。
【0145】
例えば、ブロック1番目から6番目までは、ブロック内の各ビットの順序は、変更されず、ブロック内元順序のままであり、ブロック7番目から12番目までは、ブロック内の各ビットの順序は、上記2、3、1の順序に並び替えられ、ブロック13番目から18番目までは、ブロック内の各ビットの順序は、上記3、1、2の順序に並び替えられる。以下、19番目以降のブロックについて、上記と同様の順序並び替え規則に従ってブロック内の各ビットの順序の並び替えが行われる。
【0146】
ここでは、説明の便宜上、1ブロックを3ビット単位としたが、3ビット単位に限定する必要はない。また、各ビット間隔についても同様で、17ビットに限定する必要はなく、(ブロックの整数倍のビット数―1)の間隔であればよい。 また、順序の並び替えについても同様で、3通りの順序に限定されず、1ブロックのビット単位数に応じた順序の通り数であればよい。
【0147】
図63は、第20実施形態におけるデータ処理装置の主要部の構成を示す機能ブロック図を示す。データ処理装置は、アンテナ101、受信部102、ベースバンド信号生成部103、FFT演算部104、第1バッファメモリ部105、デマッピング部106、第2バッファメモリ部107より構成される。
受信部102は、アンテナ101を介して直交周波数分割多重信号(OFDM:Orthogonal Frequency Division Multiplex)として伝送するOFDM信号を受信し、受信したOFDM信号をベースバンド信号生成部103に出力する。
【0148】
ベースバンド信号生成部103は、出力されたOFDM信号を逆離散フーリエ変換してベースバンド信号を生成し、FFT演算部104に出力する。
FFT演算部104は、ベースバンド信号生成部103から出力されたベースバンド信号に対して、マッピングビットの復調を行う。マッピングビットの復調は、出力された順にデジタル信号に変換して、I信号とQ信号に分離し、分離した各信号にFFT(高速フーリエ変換)演算を行うことでなされる。
【0149】
ここで、ベースバンド信号中のマッピングビットに含まれていた各ビットは、軟判定の対象となる。軟判定の結果は、復調すべき各ビット値が0と1の何れに近いかの判定を4ビットのスケールで示した軟判定値で表現される。この軟判定により、ベースバンド信号中の3ビットのマッピングビットは、12ビットのビットユニットブロックに変換されることになる。変換により得られたビットユニットブロックは、第1バッファメモリ部105に記憶させられる。
【0150】
第1バッファメモリ部105は、2バイトの記憶単位を有しており、この記憶単位が16個並ぶことで一行を形成している。図64は、第1バッファメモリ部105の構成例を示す図である。記憶単位の行が、6行並ぶことで、6行16列の行列が形成される。この6行16列の行列は、192バイトの容量を有する。各2バイトの記憶単位には、各ビットユニットブロックが格納される。6個のビットユニットブロックは、列方向に並ぶ6個の記憶単位に格納される。ここで、上記記憶単位においては、一列当たりのブロック数は、6としているが、当該ブロック数は、元のビット系列がインタリーブされる間隔を(W-1)とし、1ブロックのビット数をSビットとすると、W/Sによって定められる(W、Sは自然数を示す)。また第1バッファメモリ部105は、デマッピング部106における16個のPEの各PE番号を、当該PE番号の示すPEに含まれるPEレジスタ番号(PE内のRFを識別するレジスタ番号)と対応付けて記憶している。
【0151】
デマッピング部106は、第1バッファメモリ部105の記憶単位から16個のビットユニットブロックを読み出し、読み出された各ブロックについてビットユニットの出力処理を行う。デマッピング部106は、出力されたビットユニットの第2バッファメモリ部107への書込処理を行う。
第2バッファメモリ部107は、1行を64ビット(16×4ビット)とした、18行16列の行列状の記憶領域を有する。
【0152】
続いてデマッピング部106の行うビットユニットの出力処理について、具体的に説明する。
図65は、デマッピング部106の構成を示すブロック図である。デマッピング部106は、図65に示す通り、レジスタ121と、レジスタ122と、制御部123と、16個のPE0〜15とから構成される。
【0153】
レジスタ121は、第1バッファメモリ部105から読み出された横16個のビットユニットブロックを格納する。レジスタ121において、16ビット分の記憶単位が各ブロックに割り当てられる。レジスタ121に格納された横16個のビットユニットブロックのうち、列番号1に属するビットユニットブロック1はPE0に、列番号2に属するビットユニットブロック7がPE1に、列番号3に属するビットユニットブロック13がPE2にそれぞれ対応づけられる。
【0154】
レジスタ122は、各PEと、4ビットのデータを搬送するバスで接続されており、各PEから出力された4ビットのビットユニットを、出力した各PEの配列順に対応付けて、格納する。これによりビットユニットは、PE0出力ビットユニット、PE1出力ビットユニット、PE2出力ビットユニットというように、各PEの配列順に格納される。
【0155】
制御部123は、第1バッファメモリ部105における横16個の記憶単位から横16個のビットユニットブロックを読出し、読みされた16個のビットユニットブロックをレジスタ121に記憶させる。また制御部123は、第1バッファメモリ部106から各PE番号を読み出し、読み出した各PE番号を、対応するPEレジスタ番号のRFに割り当てる。これにより、PE0内のRFには、PE番号0、PE1内のRFには、PE番号1、PE2のPE内のRFには、PE番号2というように、PE番号が各PEのPEレジスタに割当てられる。次に制御部123は、各PEに対して、1つの命令で複数のデータを対象に処理を実行させるためのSIMD型演算命令に基いて、演算処理の実行を指示する。
【0156】
各PEから出力された16個のビットユニットがレジスタ122に書き込まれる毎に、制御部123は16個のビットユニットを読出し、読み出した16個のビットユニットを、第2バッファメモリ部107に書き込む。この書き込みにあたって、横16個のビットユニットを書き込む毎に行を改める。かかる書き込みにより、1行を64ビット(16×4ビット)とした、18行16列の行列が、第2バッファメモリ部107上に形成される。
【0157】
次の行に書込みを行う。図66は、第2バッファメモリ部107の記憶領域の構成例を示す。図66の斜線部は、各PEから出力された16個の各4ビットのビットユニットが、当該ビットユニットを出力したPEの配列番号に対応付けて、1行目の記憶領域に書き込まれた状態を示す。斜線部に付与されている番号は、当該ビットユニットを出力したPEの識別番号を示す。
【0158】
続いてPE0〜15の内部構成について説明する。PE0〜15は、図67に示す内部構成を有する。図67に示すように各PEには、RF、ALUが含まれ、各PE内のRFには、PEの配列順を示すPE番号が格納される。具体的には、PE0にはPE番号0、PE1にはPE番号1というように、各PEの配列順に従って対応するPE番号が格納される。なお、PE内のRFにPE番号を記憶させる代わりに、予めPE番号を記憶させた不揮発性記憶メモリ素子を各PEが含むこととしてもよい。
【0159】
ALUは、制御部123からの指示に応じて演算処理を実行する。
その演算処理とは、対応するPE内のRFにおけるPE番号(X)をパラメータとした演算((X+L)MOD S)である。その演算結果をZ0値と呼び、Z0を4倍した値をZ1と呼ぶ。
ここで、Lは、演算処理の回数を示す変数であり、「(X+L)MOD S」は(X+L)を元のビット系列の1ブロックのビット数であるSで割ったときの余りを算出するための演算式を示す。また、S=3とする。
【0160】
Z1値が求められれば、ALUは、レジスタ121に記憶された各ビットユニットブロックをZ1だけ、左シフトさせるシフト演算を実行して、さらにシフト演算の結果を示すデータを12ビット右シフトさせるシフト演算を実行する。その演算結果の下位4ビットがビットユニットとなり、これをレジスタ122に出力する。
【0161】
Z0値は更新される値である。Z0値の更新は、1増加された変数値L(ここでは、2)について、上述した演算を実行することでなされる。こうして更新されたZ0値に対して、Z1値が再度算出される。Z0値の更新を繰り返すことにより、ビットユニットブロックに含まれていた3つの各ビットユニットは、ブロック内元順序に対応する順序で出力される。
【0162】
以上がデータ処理装置の構成である。以下で、フローチャートを引用しながら、各構成要素の処理手順について説明する。
最初に、FFT演算部104の処理手順について説明する。図68は、上記の処理の手順を示すフローチャートである。以下、図68を用いて、上記の処理について説明する。FFT演算部104は、変数Mを初期化した後(ステップS1101)、変数Mを1増加し(ステップS1102)、さらに変数Nを初期化した後(ステップS1103)、変数Nを1増加する(ステップS1104)。
【0163】
1ビットユニットブロックを復調すると、(ステップS1105:YES)、第1バッファメモリ部107に当該ビットユニットブロックを書き込むためのアドレス(X)を図68のS1106に示す算出式(X=X0+32(N-1)+2(M-1)、X0は初期アドレスを示す。)に従って算出する。
ここでは、1ビットユニットブロック当たり2バイトの記憶単位が割当てられているとして、Xのバイト数を算出する算出式が設定されている。
【0164】
次に、FFT演算部104は、ステップS1106において算出したアドレスの第1バッファメモリ部105の記憶単位に、算出したビットユニットブロックを書き込み(ステップS1107)、さらに変数Nの値が6であるか判定する(ステップS1108)。変数Nが6でない場合(ステップS1108:NO)、変数Nを1増加し(ステップS1104)、ステップS1105〜ステップS1108の処理を変数Nが6になるまで繰り返す。
【0165】
変数Nが6の場合(ステップS1108:YES)、変数Mが16であるか判定する(ステップS1109)。変数Nが16でない場合(ステップS1109:NO)、ステップS1102〜ステップS1109の処理を変数Mが16になるまで繰り返す。
変数Mが16である場合(ステップS1109:YES)、変数Mを初期化し(ステップS1101)、ステップS1102〜ステップS1109の処理を繰り返す。
【0166】
上記の処理により、復調された各ビットユニットブロックが、第1バッファメモリ部105上において、6行16列の行列をなす。
以上がFFT演算部104の処理手順である。次にデマッピング部106が行うビットユニットの出力処理について説明する。図69は、ビットユニットブロックから、各ビットユニットを出力させるために制御部123が行う処理を示すフローチャートである。
【0167】
第1バッファメモリ部105の記憶単位に、復調されたビットユニットブロックが、FFT演算部104によって96個書き込まれると(ステップS1201)、制御部123は、変数Nを初期化した後(ステップS1202)、変数Nを1増加し(ステップS1203)、第1バッファメモリ部105の記憶単位からビットユニットブロックを、16ブロック単位で読出すための先頭のビットユニットブロックのアドレス(YES)を図66のS1204に示す算出式(Y=X0+32(N-1)、X0は初期アドレスを示す。)に従って算出し、算出したアドレスを指定して、16個のビットユニットブロックを第1バッファメモリ部105の記憶単位から読出し(ステップS1205)、読み出したビットユニットブロックを、デマッピング部106のレジスタ121に記憶させる(ステップS1206)。
【0168】
次に、制御部123は、第1バッファメモリ部106から各PE番号を読み出し(ステップS1207)、読み出した各PE番号を、対応するPE内のRFに割当て、1つの命令で複数のデータを対象に処理を実行させるためのSIMD型演算処理命令に基いて、各PEに対し、レジスタ121に記憶させた各ビットユニットブロックについての当該演算処理の実行を指示し(ステップS1208)、16個の各ビットユニットについての当該演算処理が完了すると(ステップS1209)、変数Nが6であるか否かを判定する。
【0169】
変数Nが6である場合(ステップS1210:YES)、ステップS1201〜S1210の処理を繰り返し、変数Nが6でない場合(ステップS1210:NO)、ステップS1203〜ステップS1210の処理を繰り返す。
次に制御部123からの指示に応じて、各PEが実行する演算処理について説明する。図70は、上記の演算処理を示すフローチャートである。
【0170】
各PEは、制御部123からの演算処理の実行指示が有ると(ステップS1250:YES)、変数Lを初期化した後(ステップS1251)、変数Lを1増加させ(ステップS1252)、対応するPE内のRFからPE番号(X)を示すデータを読み出し、(X+L) MOD 3の演算を実行することにより、演算結果であるZ0値を算出し(ステップS1253)、さらにZ0を4倍する乗算を実行し、乗算結果であるZ1値を算出する(ステップS1254)。
【0171】
次に各PEは、以下のシフト演算処理を実行する(ステップS1255)。
すなわち、各PEは、レジスタ121から、各対応するビットユニットブロックを読み出し、読み出したビットユニットブロックをZ1値だけ、左シフトさせるシフト演算を実行し、さらにシフト演算の結果を示すデータを12ビット右シフトさせるシフト演算を実行する。
【0172】
次に各PEは、演算結果の下位4ビットのビットユニットをレジスタ122に出力し(ステップS1256)、変数Lが3であるか否かを判定する(ステップS1257)。
ステップS1257において、変数Lが3である場合(ステップS1257:YES)、ステップS1250〜S1257の処理を繰り返し、変数Lが3でない場合(ステップS1257:NO)、ステップS1252〜S1257の処理を繰り返す。
【0173】
次にデマッピング部106の行う、出力されたビットユニットを第2バッファメモリ部107へ書込む処理について詳述する。図71は、上記処理を示すフローチャートである。以下、図71のフローチャートを参照して、上記の処理について説明する。
制御部123は、変数Nを初期化した(ステップS1301)後、変数Nを1増加し(ステップS1302)、各PEによって、4ビットのビットユニットが出力されると(ステップS1303:YES)、出力された16個のビットユニットをレジスタ122に書き込み(ステップS1304)、図71のステップS1305の示す算出式(X=X0+8(N-1)、Xは、バイト単位の書き込みアドレス、X0は初期アドレスを示す。)に従って、第2バッファメモリ部107へ書き込むためのアドレスを算出し、算出したアドレスを書き込みアドレスとして指定する(ステップS1306)ことにより、第2バッファメモリ部107の記憶単位に、レジスタ122に書き込んだ16個の各ビットユニットを、当該ビットユニットを出力したPEの配列順に対応付けるように、第2バッファメモリ部107の記憶単位に書き込み(ステップS1307)、変数Nが6であるか否かを判定する(ステップS1308)。
【0174】
変数Nが6でない場合(ステップS1308:NO)、ステップS1302〜S1308の処理を繰り返す。
変数Nが6である場合(ステップS1308:YES)、ステップS1301に戻る。
以上のように本実施形態によれば、受信された各ブロックにおける各ビットの元の順序を示すアドレスを記憶するためのメモリを使用することなく、当該ブロック内の各ビットの順序を当該ビットの元の順序に並べ替えることができるので、その分、電力の消費及びハードウェア面積を少なくすることができる。
【0175】
尚、第20実施形態においては、マッピングビットは、軟判定により、12ビットのビットユニット列として復調されるとしたが、軟判定を行わず、3ビットのビット系列として復調されることとしてもよい。又、軟判定により復調されるビット数は、12ビットに限定されない。
更に、第20実施形態においては、デマッピング部106に含まれるPEは、16個としたが、PEの個数は16個に限定されない。
【0176】
加えて、第20実施形態において、Z0値を算出するための演算式は、図70のステップS1253に示す演算式に限定されない。例えば、フラグを変化させる演算式を設定し、フラグの状態に応じて、予めレジスタに記憶させたS回の何れかのZ1値を読み出してもよい。
加えて、第20実施形態において、レジスタ121は各16ビットを搬送するバスで、各PEと接続されているとしたが、各12ビットを搬送するバスで接続されているとしてもよい。この場合、シフト演算処理において、「(X+L)」は「(X+L-1)」と、「12ビット右シフト」は「8ビット右シフト」と置き換える。
(第21実施形態)
第21実施形態は、第20実施形態の改良であり、第1バッファメモリ部105を無くすことを主眼とする。
【0177】
図72は、第21実施形態におけるデータ処理装置の主要部の構成を示す機能ブロック図を示す。データ処理装置は、アンテナ101、受信部102、ベースバンド信号生成部103、FFT演算部104、デマッピング部206、第2バッファメモリ部107より構成される。
データ処理装置は、第1バッファメモリ部105が無い点、及びデマッピング部206が新規に追加されている点が新しい。その他の構成要素は、第20実施形態におけるデータ処理装置との構成と同じである。
【0178】
FFT演算部104は、ベースバンド信号生成部103から出力されたベースバンド信号を、出力された順にデジタル信号に変換して、I信号とQ信号に分離し、分離した各信号にFFT(高速フーリエ変換)演算を行うことにより、マッピングビットを復調し、復調したマッピングビット(ビットユニットブロック)を得る。
続いてデマッピング部206の内部構成について説明する。図73は、デマッピング部206の内部構成を示す図である。デマッピング部206は、少なくとも1つのPTを含む。PTは、16ビットのレジスタ132〜134からなるレジスタファイル(RF)、ALU135、制御部136から構成される。
【0179】
レジスタ132は、デマッピング部206が得たビットユニットブロックを格納する。
レジスタ133は、レジスタ132がシフト動作を行った際、レジスタ132に格納されたビットユニットブロックを格納する。
レジスタ134は、ALU135のシフト演算処理によって、得られた3つのビットユニット(4ビット)を格納する。レジスタ134のうち下位4ビットのビットユニットが読み出される。
【0180】
ALU135は、レジスタ133に格納されたビットユニットブロックに対して演算を実行する。ここでの演算は、予めプログラムに設定された演算式floor((N-1)/(W/S)) MOD Sである。この演算式におけるfloorとはfloor関数である。floor関数とは、括弧内の商である(N-1)/(W/S)の整数部分を示す関数である。上記演算式は、当該整数部分をSで割ったときの余りを算出するための演算式であり、Nは、ビットユニットブロックがレジスタ132に書き込まれた順番に相当する変数を示す。
【0181】
元のビット系列がインタリーブされる間隔は(W-1)であり、1ブロックのビット数をSビットとする。そうすると、W/S((17+1)/3)は6となる。ALU135は、上記の演算を実行することにより、ビットユニットブロックのレジスタ32への書込みが6回行われる毎に、0、1、2の3つの値の算出を繰り返す。
この繰り返しにおいて、1〜6回目のビットユニットブロックの書込み時は、0、7〜12回目の書込み時は、1、13〜18回目の書き込み時は2、19〜24回目の書込み時は、再び0になる。
【0182】
演算がなされると、ALU135は制御部136が決定した順序に従い、シフト演算処理の実行する。
ここで、シフト演算処理の順序とは、以下の3種類の演算処理を実行する順序のことをいう。
この3種類の演算処理を演算処理1、2、3という。
【0183】
演算処理1は、レジスタ133に書き込まれたビットユニットブロックについて、左に4シフト制御させるシフト演算を実行し、さらに右に8シフト制御させるシフト演算を実行するシフト演算処理であり、12ビットのビットユニットブロックの上位4ビットのビットユニットが算出される。
演算処理2は、レジスタ133に格納されたデータブロックについて、左に8シフト制御させるシフト演算を実行し、さらに右に12シフト制御させるシフト演算を実行するシフト演算処理であり、12ビットのビットユニットブロックの中位4ビットが算出される。
【0184】
演算処理3は、レジスタ133に格納されたデータブロックについて、左に12シフト制御させるシフト演算を実行し、さらに右に12シフト制御させるシフト演算を実行するシフト演算処理であり、これにより、12ビットのビットユニットブロックの下位4ビットが算出される。
これらの3つの演算処理を実行する順序をALU135は切り換えるのである。
【0185】
具体的にいうとALU135は、Z値が0の場合はシフト演算処理1、2、3の順序で、Z値が1の場合はシフト演算処理2、3、1の順序で、Z値が2の場合は、シフト演算処理3、1、2の順序で、シフト演算を実行する。これにより、ビットユニットブロックに含まれていた3つの各ビットユニットは、ブロック内元順序に対応する順序で出力される。
【0186】
制御部136は、図74のフローチャートに従って、ビットユニットの出力処理及び書込処理を制御する。以下、制御部136の処理について図74のフローチャートを用いて詳しく説明する。図74は、上記の処理を示すフローチャートである。
制御部136は、変数Mを初期化した後(ステップS1401)、変数Mを1増加し(ステップS1402)、さらに変数Nを初期化し(ステップS1403)、FFT演算部104によって、レジスタ132にビットユニットブロックが書き込まれると(ステップS1404:YES)、書き込まれたビットユニットブロックをシフトして、レジスタ133に格納させる。そして変数Nを1増加し(ステップS1405)、さらに変数Lを初期化し(ステップS1406)、ステップS1407の算出式に示す演算をALU135に実行させることにより、Z値を算出し(ステップS1407)、さらに変数Lを1増加し(ステップS1408)、Z値が0か否かを判定する(ステップS1409)。
【0187】
Z値が0である場合(ステップS1409:YES)、レジスタ133に書き込まれたビットユニットブロックについて、「演算処理1」をALU135に実行させる(ステップS1410)。
Z値が1である場合(ステップS1409:N、ステップS1411:YES)、レジスタ133に書き込まれたビットユニットブロックについて、「演算処理2」をALU135に実行させる(ステップS1412)。
【0188】
Z値が2である場合(ステップS1409:N、ステップS1411:NO)、レジスタ133に書き込まれたビットユニットブロックについて、「演算処理3」をALU135に実行させる(ステップS1413)。
次に、制御部136は、上記選択された演算処理によって算出されたビットユニット値をレジスタ134に出力させ、出力させたビットユニット値の下位4ビットを読み出すことにより、ビットユニットを出力し、さらに予めプログラムに設定された予めプログラムに設定された演算式(X0+16(N-1)+M-1)に基いて、出力されたビットユニットを第2バッファメモリの記憶単位に書き込むための、指定アドレスをALU135に算出させ、算出させたアドレスの示す、第2バッファメモリ部107の1バイト単位の記憶単位に、出力した4ビットのビットユニットを書き込む(ステップS1414)。
【0189】
次に制御部136は、ALU135に、予めプログラムに設定された演算式(Z=(Z+1) MOD 3)に基いて、Z値を更新するための演算を実行させ(ステップS1415)、演算結果をレジスタ134に出力させた後、変数Lが3であるか否かを判定する(ステップS1416)。
変数Lが3でない場合(ステップS1416:NO)、制御部136は、ステップS1408〜S1416の処理を繰り返し、変数Lが3の場合(ステップS1416:YES)、変数Nが6であるか否かを判定する(ステップS1417)。
【0190】
変数Nが6でない場合(ステップS1417:NO)、制御部136は、ステップS1405〜S1417の処理を繰り返し、変数Nが6である場合(ステップS1417:YES)、制御部136は、変数Mが16であるか否かを判定する(ステップS1418)。
変数Mが16でない場合(ステップS1418:NO)、ステップS1402〜S1418の処理を繰り返し、変数Mが16である場合(ステップS1418:YES)、ステップS1401の処理に戻る。
【0191】
以上のように本実施形態によれば、受信された各ブロックにおける各ビットの元の順序を示すアドレスを記憶するためのメモリを使用することなく、当該ブロック内の各ビットの順序を当該ビットに対応するビットユニットの元の順序に並べ替えることができるので、その分、電力の消費及びハードウェア面積を少なくすることができる。
【0192】
尚、第21実施形態において、Z値を算出するための演算式は、本第21実施形態において用いた演算式に限定されない。1ブロックのビット数に対応するS回の異なる値を周期的に算出できる演算式であれば、他の演算式であってもよい。
又、第21実施形態において、デマッピング部206には、レジスタ132〜34の3つのレジスタが含まれることとしたが、レジスタ132のみとしてもよい。この場合、図74のフローチャートにおいて、制御部136は、レジスタ132に書き込まれたビットユニットブロックについて、算出されたZ値に応じてALU135に該当する演算処理を実行させ、演算処理によって算出されたビットユニット値の下位4ビットを、ALU135の算出した指定アドレスの示す第2バッファメモリの記憶単位に、レジスタ134を介さず直接書き込む。
【0193】
【発明の効果】
発明に係るデータ処理装置は、上述したような構成を有しており、入力元−出力先の組み合わせは、自由に定め得るので、n×mの要素からなるデータ行列のうち、m個のデータ列がレジスタファイルに格納されている場合、プロセッシングエレメント内の演算ユニットに対応するデータ列以外にも、異なるプロセッシングエレメントに対応するデータ列をオペランドとして演算ユニットに供給することができる。オペランド供給に変化があった場合でも、プロセッシングエレメントの稼動効率を維持することができる。
【0194】
たレジスタファイルに含まれるm個のレジスタからデータを読み出し、それらをn個のプロセッシングエレメント内の演算ユニットに供給するという処理を行えば、n個のプロセッシングエレメントに含まれる演算ユニットに絶え間なくデータを供給することができる。よってデータ行列のデータを縦方向ではなく横方向に積算してゆくという処理をスムーズに行うことができる。
【図面の簡単な説明】
【図1】 第1実施形態に係るデータ処理装置の内部構成を示す図である。
【図2】 RFの内部構成を詳細に示す図である。
【図3】 ネットワーク部20の内部構成を示す図である。
【図4】 ネットワーク部20を構成する2つのセレクタのうち、第1系統セレクタ21を示す図である。
【図5】 第2系統セレクタ22を示す図である。
【図6】 ネットワーク部20によるデータ供給の一例を示す図である。
【図7】 第2実施形態に係るALUの内部構成を示す図である。
【図8】 Pピクチャについての動き補償にデータ処理装置を応用する場合の応用例を示す図である。
【図9】 Pピクチャに対する動き補償を行う場合にALUがどのような演算を行うかを示す図である。
【図10】 Bピクチャに対する動き補償を行う場合のRFの格納例を示す図である。
【図11】 Bピクチャに対する動き補償を行う場合にALUがどのような演算を行うかを示す図である。
【図12】 一ライン上に存在する32個の画素X0〜X31のうち、4つの画素X7,X8,X9,X10に対してフィルタ処理を施す場合の演算式を示す図である。
【図13】 対称型フィルタを実現する場合のRFの格納例を示す図である。
【図14】 このStage1におけるRFの読み書き及びALUによる演算を示す。
【図15】 Stage2においてネットワーク部20により行われるPE間の転送を示す。
【図16】 各PE内のRFからALUにどのようなデータが転送されるかを示す図である。
【図17】 Stage3においてネットワーク部20によりなされるPE間の転送を示す。
【図18】 各PE内のRFからALUにどのようなデータが転送されるかを示す図である。
【図19】 Stage3における読み書き及びALUによる演算を示す図である。
【図20】 各PE内のRFからALUにどのようなデータが転送されるかを示す図である。
【図21】 Stage4において、ネットワーク部20によりなされる転送を示す図である。
【図22】 Stage4において、ALUによりなされる演算を示す図である。
【図23】 DDA26を備えたALUの内部構成を示す図である。
【図24】 DDA26及びシフタ27を備えたALUの内部構成を示す図である。
【図25】 DDA26がハイブリッド型の加算器としてどのように機能するかを示す図である。
【図26】 トレリス図の一例を示す図である。
【図27】 ビタビ復号の実現時にあたっての機能割り当てを示す図である。
【図28】 acs(add compare select)演算を好適に行うためのALUの内部構成を示す図である。
【図29】 デコーダ31及び変換部32、33、34が接続されたRFを示す図である。
【図30】 PE0における変換部32の内部構成を示す図である。
【図31】 データ処理装置の内部構成を示す図である。
【図32】 4つのRFにおいて読出対象となるレジスタを示す図である。
【図33】 水平加算を行うにあたってのデータ処理装置の動作を示す図である。
【図34】 行列転置を実現するにあたってのデータ処理装置の内部構成を示す図である。
【図35】 デコーダ31からの変数kの変化に伴う、RFからの出力の遷移を示す図である。
【図36】 加算器の出力の遷移により、PE0〜PE3内のRFのうち、どの範囲が読出範囲になるかを示す図である。
【図37】 水平方向の加算時におけるデータ処理装置の動作を示す図である。
【図38】 水平方向の加算時におけるデータ処理装置の動作を示す図である。
【図39】 全体デコーダ71を有するデータ処理装置の内部構成を示す図である。
【図40】 データ処理装置の動作タイミングを示すタイミングチャートである。
【図41】 あるPE内のRFの格納値を、別のPE内のRFに書き込む場合の動作を示すタイミングチャートである。
【図42】 シフタ27によるシフト動作時の動作タイミングチャートを示す図である。
【図43】 acs演算時の動作タイミングを示すタイミングチャートである。
【図44】 4つのベクトル演算部80〜83を有するデータ処理装置の内部構成を示す図である。
【図45】 1つのベクトル演算部の詳細を示す図である。
【図46】 ベクトル演算部のデュアルポートメモリにおけるバンクに格納されたデータがどのように読み出され、どのように各PEに出力されるかを示す図である。
【図47】 入出力指定レジスタ90を有するALUの内部構成を示す図である。
【図48】 入出力指定レジスタ90の詳細を示す図である。
【図49】 ネットワークシフト命令の具体的な設定例と、その設定例時にレジスタの読み書きがどのように実行されるかを示す図である。
【図50】 ネットワークシフト命令の他の一例を示す図である。
【図51】 状態フラグを格納したレジスタの格納内容を示す図である。
【図52】 ALUの動作を示す図である。
【図53】 シングルワードとハーフワードとの乗算をなしえる乗算器24の構成を示す図である。
【図54】 ハーフワードの上下入れ替えを実現するネットワーク部20の内部構成を示す図である。
【図55】 複素数演算を行う場合のRFの格納例を示す図である。
【図56】 図55の格納内容に対してALUがどのような演算を実現するかを示す図である。
【図57】 複素数同士の乗算手順を示す図である。
【図58】 複素数同士の乗算手順を示す図である。
【図59】(a)〜(b) 第18実施形態における行列の横方向の積算処理を説明するための説明図である。
【図60】(a)〜(c) 第19実施形態における行列の転置処理を説明するための説明図である。
【図61】 ブロックインタリーブ前と後のビット系列のビット順を示すテーブルである。
【図62】 ブロックインタリーブされたビット系列が上記並び替え規則に基づいて、並び替えられた後のビット系列のビット順を示すテーブルである。
【図63】 データ処理装置100の主要部の構成を示す機能ブロック図を示す。
【図64】 第1バッファメモリ105の記憶単位の構成例を示す。
【図65】 デマッピング部106の構成を示すブロック図である。
【図66】 第2バッファメモリ部107の記憶単位の構成例を示す。
【図67】 PEの構成を示すブロック図である。
【図68】 FFT演算部104が、復調したビットユニットブロックを、ブロック単位で第1バッファメモリ部105に記憶させるために行う処理を示すフローチャートである。
【図69】 ビットユニットブロックから、各ビットユニットを出力させるために制御部123が行う処理を示すフローチャートである。
【図70】 各PEが実行する演算処理を示すフローチャートである。
【図71】 デマッピング部106の行う、出力されたビットユニットを第2バッファメモリ部107へ書込む処理を示すフローチャートである。
【図72】 データ処理装置200の主要部の構成を示す機能ブロック図を示す。
【図73】 デマッピング部206の構成を示す機能ブロック図である。
【図74】 デマッピング部206が行うビットユニットの出力処理及び書込処理を示すフローチャートである。
【符号の説明】
20 ネットワーク部
21 第1系統セレクタ
22 第2系統セレクタ
23 加算器
24 乗算器
25 アキュムレータ
26 DDA
27 シフタ
28 減算器
29 セレクタ
30 セレクタ
31 ブロックデコーダ
32 変換部
41〜47 ポートE〜K用加算器
51〜54 ポートE用加算器
55〜58 ポートJ用加算器
61〜64 ポートF用加算器
65〜68 ポートI用加算器
71 全体デコーダ
72 フェッチ部
73 命令メモリ
74 プログラムカウンタ
75 外部メモリデバイス
77 デュアルポートメモリ
80〜83 ベクトル演算部
84 デュアルポートメモリ
88 第1LUTセレクタ
89 第2LUTセレクタ
90 入出力指定レジスタ
91〜98 セレクタ
100 データ処理装置
101 アンテナ
102 受信部
103 ベースバンド信号生成部
104 FFT演算部
105 第1バッファメモリ
106 デマッピング部
107 第2バッファメモリ
121,122 レジスタ
123 制御部
132〜134 レジスタ
135 ALU
136 制御部

Claims (8)

  1. データ処理装置であって、
    x行×y列からなる行列状データを格納したn個のレジスタファイルと(x,yは1≦x≦n,1≦y≦nを満たす整数)、n個の演算ユニットとを含むn個のプロセッシングエレメントと、
    コマンドを解読して、読出指示、及び、書込指示をn個のプロセッシングエレメントにおけるレジスタファイルのそれぞれに対して出力するブロックデコーダと、
    第1系統セレクタ、第2系統セレクタを備え、第1系統セレクタ、第2系統セレクタのそれぞれが、何れかのプロセッシングエレメント内のレジスタファイルを入力元とし、何れかのプロセッシングエレメント内の演算ユニットを出力先とした入出力を、n個同時に実行するネットワーク部とを備え(n 2 以上の整数 )
    ブロックデコーダにより読出指示がなされた場合、各プロセッシングエレメント内に存在するレジスタファイルは、行列状データにおいて同じ列に存在する2つのデータを読み出して、それら2つのデータを第1系統セレクタ及び第2系統セレクタのそれぞれに出力して、
    第1系統セレクタ及び第2系統セレクタは、それぞれ、n個の入出力を同時に行うことで各レジスタファイルから読み出されたデータの水平位置の入れ替えを行い、
    各プロセッシングエレメント内の演算ユニットは、第1系統セレクタから出力されたデータ、第2系統セレクタから出力されたデータの供給をうけ、
    ブロックデコーダにより書込指示がなされた場合、各プロセッシングエレメント内に存在するレジスタファイルは、同じプロセッシングエレメント内に存在する演算ユニットから出力された2つのデータを、自身の内部に存在する複数レジスタのうち、何れか2つに書き込む
    ことを特徴とするデータ処理装置。
  2. 前記演算ユニットは差分加算器を備え、
    第1系統セレクタ、第2系統セレクタの入力元は、
    差分加算器の演算結果により指定される
    ことを特徴とする請求項1記載のデータ処理装置。
  3. 前記数値t+βが差分加算器の演算結果である場合(tは整数部であり、βは小数部)、
    第1系統セレクタ及び第2系統セレクタによる1つの入力元は第t番目のプロセッシングエレメントであり、
    他の入出力の入力元は第t+1番目のプロセッシングエレメントであり、
    演算ユニットは、
    第t番目のプロセッシングエレメントを入力元としたデータに、小数部βを乗じ、第t+1番目のプロセッシングエレメントを入力元としたデータに、小数部1-βを乗じる乗算器を備える
    ことを特徴とする請求項1記載のデータ処理装置。
  4. 前記レジスタファイルに格納されているデータは、上位ハーフワード及び下位ハーフワードからなり、
    演算ユニットは、上位ハーフワード又は下位ハーフワードをオペランドとした演算を行い、
    前記第1系統セレクタ及び第2系統セレクタは、
    レジスタファイルにおける上位ハーフワード及び下位ハーフワードを入れ替えて演算ユニットに出力する変換部と接続されている
    ことを特徴とする請求項1記載のデータ処理装置。
  5. 前記各プロセッシングエレメントは、
    ブロックデコーダの解読結果となるレジスタ番号にオフセットを加算する加算器を備え、
    前記レジスタファイルは、
    オフセットが加算されたレジスタ番号により指定されるレジスタから、データを読み出し、
    ことを特徴とする請求項1記載のデータ処理装置。
  6. 前記データ処理装置は、
    ブロックデコーダによるコマンド解読とは別のサイクルにおいて分岐コマンドの解読を行う分岐デコーダを備える
    ことを特徴とする請求項1記載のデータ処理装置
  7. n個のプロセッシングエレメントは、zサイクルをかけて行列状データの転置を行うものであり(zは、x,yのうち大きい方、又は、x,yのうち何れか)、
    転置にあたって第i番目のプロセッシングエレメントは、第kサイクル目において
    レジスタファイルにおける第j番目のレジスタからデータを読み出し(i,kは1≦i≦z,1≦k≦zを満たす整数であり、jはi+kをzで割った剰余)、
    第1系統セレクタは、読み出されたデータを第j番目のプロセッシングエレメントに出力し、
    第j番目のプロセッシングエレメントは、出力されたデータを自身のレジスタファイルにおける第i番目のレジスタに書き込み、
    第i番目のプロセッシングエレメントのレジスタファイルにおける第j番目のレジスタからデータを読み出すと同時に、第j番目のプロセッシングエレメントのレジスタファイルにおける第i番目のレジスタからデータを読み出し、
    第2系統セレクタは、読み出されたデータを第i番目のプロセッシングエレメントに出力し、
    第i番目のプロセッシングエレメントは、出力されたデータを自身のレジスタファイルにおける第j番目のレジスタに書き込む
    ことを特徴とする請求項1記載のデータ処理装置。
  8. 前記データ処理装置は、p個のバンクからなるメモリデバイスと接続され(pは、p<nを満たす整数)、
    データ処理装置は、
    p個のバンクのうち何れかのものを入力元とし、p個のプロセッシングエレメントのうち何れかのもののレジスタファイルを出力先とした入出力を、p個同時に実施するp入力-p出力セレクタを備える
    ことを特徴とする請求項1記載のデータ処理装置。
JP2003060099A 2002-03-06 2003-03-06 データ処理装置 Expired - Lifetime JP4020804B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003060099A JP4020804B2 (ja) 2002-03-06 2003-03-06 データ処理装置

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2002-61047 2002-03-06
JP2002061047 2002-03-06
JP2002068716 2002-03-13
JP2002-68716 2002-03-13
JP2003060099A JP4020804B2 (ja) 2002-03-06 2003-03-06 データ処理装置

Publications (2)

Publication Number Publication Date
JP2003337696A JP2003337696A (ja) 2003-11-28
JP4020804B2 true JP4020804B2 (ja) 2007-12-12

Family

ID=29715896

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003060099A Expired - Lifetime JP4020804B2 (ja) 2002-03-06 2003-03-06 データ処理装置

Country Status (1)

Country Link
JP (1) JP4020804B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4698242B2 (ja) * 2004-02-16 2011-06-08 パナソニック株式会社 並列演算プロセッサ、並列演算プロセッサの動作を制御する制御プログラム及び制御方法、並びに並列演算プロセッサを搭載した画像処理装置
EP1812849B8 (en) * 2004-11-03 2011-02-16 Silicon Hive B.V. Programmable data processing circuit that supports simd instruction
JP2007004542A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 半導体信号処理装置
US7360063B2 (en) * 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
JP2008191856A (ja) * 2007-02-02 2008-08-21 Nec Computertechno Ltd 情報処理システム
JP5463799B2 (ja) * 2009-08-28 2014-04-09 株式会社リコー Simd型マイクロプロセッサ
JP5601817B2 (ja) * 2009-10-28 2014-10-08 三菱電機株式会社 並列演算処理装置
JP5760532B2 (ja) * 2011-03-14 2015-08-12 株式会社リコー プロセッサ装置及びその演算方法
CN113762488B (zh) * 2020-06-04 2024-03-15 中科寒武纪科技股份有限公司 处理器、数据处理方法、计算机设备和存储介质

Also Published As

Publication number Publication date
JP2003337696A (ja) 2003-11-28

Similar Documents

Publication Publication Date Title
US11669330B2 (en) Method for performing random read access to a block of data using parallel LUT read instruction in vector processors
US7315934B2 (en) Data processor and program for processing a data matrix
US7873812B1 (en) Method and system for efficient matrix multiplication in a SIMD processor architecture
US10395381B2 (en) Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor
TWI315034B (en) A data processing apparatus and method for moving data between registers and memory
US6546480B1 (en) Instructions for arithmetic operations on vectored data
US7761693B2 (en) Data processing apparatus and method for performing arithmetic operations in SIMD data processing
US20070074007A1 (en) Parameterizable clip instruction and method of performing a clip operation using the same
US20110072236A1 (en) Method for efficient and parallel color space conversion in a programmable processor
US6958718B2 (en) Table lookup operation within a data processing system
TW200527203A (en) A data processing apparatus and method for moving data between registers and memory
US7725681B2 (en) Parallel processing array
CN101163240A (zh) 一种滤波装置及其方法
JP4020804B2 (ja) データ処理装置
US7350058B2 (en) Shift and insert instruction for overwriting a subset of data within a register with a shifted result of another register
CN111563281B (zh) 一种支持多种加解密算法的处理器及其实现方法
US7600104B2 (en) Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length
US9652686B2 (en) Optimized fast feature detection for vector processors
US20050125631A1 (en) Data element size control within parallel lanes of processing
JP4698242B2 (ja) 並列演算プロセッサ、並列演算プロセッサの動作を制御する制御プログラム及び制御方法、並びに並列演算プロセッサを搭載した画像処理装置
JP3975231B2 (ja) 配列されたsimdのための汎用レジスタファイルアーキテクチャ
US20050125638A1 (en) Data shift operations
WO2013186155A1 (en) An element selection unit and a method therein
US20110072238A1 (en) Method for variable length opcode mapping in a VLIW processor
US7412587B2 (en) Parallel operation processor utilizing SIMD data transfers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070807

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070828

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070925

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4020804

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111005

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121005

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131005

Year of fee payment: 6

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term